152 lines
3.6 KiB
Markdown
152 lines
3.6 KiB
Markdown
|
rpgle.vim
|
||
|
=========
|
||
|
|
||
|
What does it contain?
|
||
|
---------------------
|
||
|
|
||
|
Free-Form ILE RPG bundle for vim, which contains syntax highlighting, syntax
|
||
|
folds, auto indent, more match words and a few sensible keys is remapped.
|
||
|
|
||
|
### Indent
|
||
|
|
||
|
One should modify `g:rpgle_indentStart` to adjust initial indentation level,
|
||
|
see `:help g:rpgle_indentStart` for more information.
|
||
|
|
||
|
There is support for automatic indentation. An example is:
|
||
|
|
||
|
dcl-proc myProc;
|
||
|
_
|
||
|
|
||
|
The cursor is located at `_` and the indent was inserted automatic when
|
||
|
pressing enter after `dcl-proc`. When typing `end-proc;` the indentation will
|
||
|
be decreased.
|
||
|
|
||
|
With procedure interfaces indentation will only happen if the procedure takes
|
||
|
an argument:
|
||
|
|
||
|
dcl-pi myProc;
|
||
|
_
|
||
|
|
||
|
If one type `end-pi;` the result will automatic become:
|
||
|
|
||
|
dcl-pi myProc;
|
||
|
end-pi;
|
||
|
|
||
|
`select`-`when`-`other`-`endsl` will be indented like this:
|
||
|
|
||
|
select;
|
||
|
when;
|
||
|
a();
|
||
|
when;
|
||
|
b();
|
||
|
other;
|
||
|
c();
|
||
|
_
|
||
|
|
||
|
As soon as `endsl` is typed it will be aligned with the initial `select;`.
|
||
|
|
||
|
`if`-`elseif`-`else`-`endif` will be indented like this:
|
||
|
|
||
|
if a = 1;
|
||
|
a();
|
||
|
elseif b = 1;
|
||
|
b();
|
||
|
else;
|
||
|
c();
|
||
|
_
|
||
|
|
||
|
When typing `endif` the indentation will be decreased.
|
||
|
|
||
|
Currently proper SQL indentation is missing:
|
||
|
|
||
|
exec sql
|
||
|
select *
|
||
|
from a
|
||
|
order by 1 desc;
|
||
|
|
||
|
See `:help ft-rpgle-indent`
|
||
|
|
||
|
### Syntax
|
||
|
|
||
|
Keywords, procedures and built-in functions will all be highlighted.
|
||
|
|
||
|
See `:help ft-rpgle-syntax`
|
||
|
|
||
|
### Syntax Folds
|
||
|
|
||
|
The following folds are supported:
|
||
|
|
||
|
- if -> endif
|
||
|
- dow -> enddo
|
||
|
- dou -> enddo
|
||
|
- for -> endfor
|
||
|
- select -> endsl
|
||
|
- dcl-proc -> end-proc
|
||
|
- begsr -> endsr
|
||
|
|
||
|
See `:help ft-rpgle-fold`
|
||
|
|
||
|
### Match Words
|
||
|
|
||
|
The following match words are supported:
|
||
|
|
||
|
- select -> when -> other -> endsl
|
||
|
- if -> elseif -> else -> endif
|
||
|
- dow -> iter -> leave -> enddo
|
||
|
- dou -> iter -> leave -> enddo
|
||
|
- begsr -> endsr
|
||
|
- dcl-proc -> return -> endproc
|
||
|
- dcl-pi -> end-pi
|
||
|
- monitor -> on-error -> endmon
|
||
|
|
||
|
See `:help ft-rpgle-match-words`
|
||
|
|
||
|
### Movements
|
||
|
|
||
|
rpgle.vim takes the liberty to bind `[[`, `]]`, `[]`, `][`, `gd`, `[{` and `]}`
|
||
|
and tried to make them useful for ILE RPG programming.
|
||
|
|
||
|
`[[` and `]]` will jump to the previous or next `dcl-proc` while `][` and `[]`
|
||
|
will jump to the previous or next `end-proc`.
|
||
|
|
||
|
`gd` will search for the word under the cursor from the previous `dcl-proc`.
|
||
|
|
||
|
`[{` and `]}` will jump to the associated block opener, i.e. standing inside an
|
||
|
`if` statement and pressing `[{` will bring you to the `if`, pressing `]}` will
|
||
|
bring you to the `endif`.
|
||
|
|
||
|
See `:help ft-rpgle-movements`
|
||
|
|
||
|
### Omni Completion
|
||
|
|
||
|
rpgle.vim provides a naive omni completion that will attempt to suggest
|
||
|
completion for compiler directives and header, declaration, calculation and
|
||
|
procedure specifications.
|
||
|
|
||
|
Calculation specification completion requires generated generated tags.
|
||
|
|
||
|
See `:h ft-rpgle-omni`
|
||
|
|
||
|
Contributing
|
||
|
------------
|
||
|
|
||
|
Make a [pull request](https://github.com/andlrc/rpgle.vim/pulls) or
|
||
|
[issue](https://github.com/andlrc/rpgle.vim/issues)
|
||
|
|
||
|
Self-Promotion
|
||
|
--------------
|
||
|
|
||
|
Like rpgle.vim? Then you might also like:
|
||
|
|
||
|
- [rpglectags](https://github.com/andlrc/rpglectags) which creates tags files
|
||
|
from ILE RPG,
|
||
|
- [rpgleman](https://github.com/andlrc/rpgleman) which provides man pages for
|
||
|
built-in functions keywords and more,
|
||
|
- and [rpglefmt](https://github.com/andlrc/rpglefmt) which will format Free Form ILE
|
||
|
RPG programs.
|
||
|
|
||
|
License
|
||
|
-------
|
||
|
|
||
|
Distributed under the same terms as Vim itself. See `:help license`
|