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 or issue
Self-Promotion
Like rpgle.vim? Then you might also like:
- rpglectags which creates tags files from ILE RPG,
- rpgleman which provides man pages for built-in functions keywords and more,
- and rpglefmt which will format Free Form ILE RPG programs.
License
Distributed under the same terms as Vim itself. See :help license