" Vim indent file " Language: SDL " Maintainer: Michael Piefel <entwurf@piefel.de> " Last Change: 10 December 2011 " Shamelessly stolen from the Vim-Script indent file " Only load this indent file when no other was loaded. if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetSDLIndent() setlocal indentkeys+==~end,=~state,*<Return> " Only define the function once. if exists("*GetSDLIndent") " finish endif let s:cpo_save = &cpo set cpo&vim function! GetSDLIndent() " Find a non-blank line above the current line. let lnum = prevnonblank(v:lnum - 1) " At the start of the file use zero indent. if lnum == 0 return 0 endif let ind = indent(lnum) let virtuality = '^\s*\(\(virtual\|redefined\|finalized\)\s\+\)\=\s*' " Add a single space to comments which use asterisks if getline(lnum) =~ '^\s*\*' let ind = ind - 1 endif if getline(v:lnum) =~ '^\s*\*' let ind = ind + 1 endif " Add a 'shiftwidth' after states, different blocks, decision (and alternatives), inputs if (getline(lnum) =~? '^\s*\(start\|state\|system\|package\|connection\|channel\|alternative\|macro\|operator\|newtype\|select\|substructure\|decision\|generator\|refinement\|service\|method\|exceptionhandler\|asntype\|syntype\|value\|(.*):\|\(priority\s\+\)\=input\|provided\)' \ || getline(lnum) =~? virtuality . '\(process\|procedure\|block\|object\)') \ && getline(lnum) !~? 'end[[:alpha:]]\+;$' let ind = ind + &sw endif " Subtract a 'shiftwidth' after states if getline(lnum) =~? '^\s*\(stop\|return\>\|nextstate\)' let ind = ind - &sw endif " Subtract a 'shiftwidth' on on end (uncompleted line) if getline(v:lnum) =~? '^\s*end\>' let ind = ind - &sw endif " Put each alternatives where the corresponding decision was if getline(v:lnum) =~? '^\s*\((.*)\|else\):' normal k let ind = indent(searchpair('^\s*decision', '', '^\s*enddecision', 'bW', \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "sdlString"')) endif " Put each state where the preceding state was if getline(v:lnum) =~? '^\s*state\>' let ind = indent(search('^\s*start', 'bW')) endif " Systems and packages are always in column 0 if getline(v:lnum) =~? '^\s*\(\(end\)\=system\|\(end\)\=package\)' return 0 endif " Put each end* where the corresponding begin was if getline(v:lnum) =~? '^\s*end[[:alpha:]]' normal k let partner=matchstr(getline(v:lnum), '\(' . virtuality . 'end\)\@<=[[:alpha:]]\+') let ind = indent(searchpair(virtuality . partner, '', '^\s*end' . partner, 'bW', \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "sdlString"')) endif return ind endfunction let &cpo = s:cpo_save unlet s:cpo_save " vim:sw=2
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
README.txt | File | 1.6 KB | 0644 |
|
aap.vim | File | 265 B | 0644 |
|
ada.vim | File | 10.89 KB | 0644 |
|
ant.vim | File | 290 B | 0644 |
|
automake.vim | File | 231 B | 0644 |
|
awk.vim | File | 7.57 KB | 0644 |
|
bib.vim | File | 346 B | 0644 |
|
bst.vim | File | 1.87 KB | 0644 |
|
c.vim | File | 325 B | 0644 |
|
cdl.vim | File | 4.07 KB | 0644 |
|
ch.vim | File | 470 B | 0644 |
|
chaiscript.vim | File | 1.11 KB | 0644 |
|
changelog.vim | File | 264 B | 0644 |
|
clojure.vim | File | 11.85 KB | 0644 |
|
cmake.vim | File | 2.69 KB | 0644 |
|
cobol.vim | File | 8 KB | 0644 |
|
config.vim | File | 2.12 KB | 0644 |
|
cpp.vim | File | 329 B | 0644 |
|
cs.vim | File | 327 B | 0644 |
|
css.vim | File | 1.68 KB | 0644 |
|
cucumber.vim | File | 2.56 KB | 0644 |
|
cuda.vim | File | 305 B | 0644 |
|
d.vim | File | 510 B | 0644 |
|
dictconf.vim | File | 325 B | 0644 |
|
dictdconf.vim | File | 326 B | 0644 |
|
docbk.vim | File | 324 B | 0644 |
|
dtd.vim | File | 11.39 KB | 0644 |
|
dtrace.vim | File | 451 B | 0644 |
|
dylan.vim | File | 2.6 KB | 0644 |
|
eiffel.vim | File | 3.13 KB | 0644 |
|
erlang.vim | File | 45.15 KB | 0644 |
|
eruby.vim | File | 2.11 KB | 0644 |
|
eterm.vim | File | 638 B | 0644 |
|
falcon.vim | File | 13.65 KB | 0644 |
|
fortran.vim | File | 6.41 KB | 0644 |
|
framescript.vim | File | 786 B | 0644 |
|
gitconfig.vim | File | 817 B | 0644 |
|
gitolite.vim | File | 996 B | 0644 |
|
haml.vim | File | 2.14 KB | 0644 |
|
hamster.vim | File | 1.37 KB | 0644 |
|
html.vim | File | 14.46 KB | 0644 |
|
htmldjango.vim | File | 273 B | 0644 |
|
idlang.vim | File | 1.53 KB | 0644 |
|
ishd.vim | File | 1.8 KB | 0644 |
|
java.vim | File | 4.02 KB | 0644 |
|
javascript.vim | File | 336 B | 0644 |
|
jsp.vim | File | 462 B | 0644 |
|
ld.vim | File | 1.71 KB | 0644 |
|
lifelines.vim | File | 637 B | 0644 |
|
liquid.vim | File | 1.83 KB | 0644 |
|
lisp.vim | File | 353 B | 0644 |
|
logtalk.vim | File | 1.65 KB | 0644 |
|
lua.vim | File | 1.87 KB | 0644 |
|
mail.vim | File | 308 B | 0644 |
|
make.vim | File | 3.35 KB | 0644 |
|
matlab.vim | File | 1.88 KB | 0644 |
|
mma.vim | File | 2.17 KB | 0644 |
|
mp.vim | File | 6.37 KB | 0644 |
|
objc.vim | File | 1.61 KB | 0644 |
|
ocaml.vim | File | 8.9 KB | 0644 |
|
occam.vim | File | 4.53 KB | 0644 |
|
pascal.vim | File | 5.52 KB | 0644 |
|
perl.vim | File | 5.67 KB | 0644 |
|
perl6.vim | File | 3.42 KB | 0644 |
|
php.vim | File | 18.97 KB | 0644 |
|
postscr.vim | File | 1.58 KB | 0644 |
|
pov.vim | File | 2.58 KB | 0644 |
|
prolog.vim | File | 1.42 KB | 0644 |
|
pyrex.vim | File | 326 B | 0644 |
|
python.vim | File | 5.61 KB | 0644 |
|
r.vim | File | 14.44 KB | 0644 |
|
readline.vim | File | 681 B | 0644 |
|
rpl.vim | File | 1.79 KB | 0644 |
|
rst.vim | File | 1.35 KB | 0644 |
|
ruby.vim | File | 17.13 KB | 0644 |
|
sass.vim | File | 1018 B | 0644 |
|
scheme.vim | File | 241 B | 0644 |
|
scss.vim | File | 191 B | 0644 |
|
sdl.vim | File | 2.7 KB | 0644 |
|
sh.vim | File | 3.95 KB | 0644 |
|
sml.vim | File | 6.27 KB | 0644 |
|
sql.vim | File | 1.18 KB | 0644 |
|
sqlanywhere.vim | File | 12.77 KB | 0644 |
|
tcl.vim | File | 1.56 KB | 0644 |
|
tcsh.vim | File | 1.21 KB | 0644 |
|
tex.vim | File | 9.47 KB | 0644 |
|
tf.vim | File | 1.46 KB | 0644 |
|
tilde.vim | File | 994 B | 0644 |
|
treetop.vim | File | 677 B | 0644 |
|
vb.vim | File | 2 KB | 0644 |
|
verilog.vim | File | 7.44 KB | 0644 |
|
vhdl.vim | File | 13.48 KB | 0644 |
|
vim.vim | File | 2.76 KB | 0644 |
|
xf86conf.vim | File | 679 B | 0644 |
|
xhtml.vim | File | 269 B | 0644 |
|
xinetd.vim | File | 1.17 KB | 0644 |
|
xml.vim | File | 2.77 KB | 0644 |
|
xsd.vim | File | 253 B | 0644 |
|
xslt.vim | File | 297 B | 0644 |
|
yacc.vim | File | 769 B | 0644 |
|
yaml.vim | File | 4.02 KB | 0644 |
|
zimbu.vim | File | 3.8 KB | 0644 |
|
zsh.vim | File | 231 B | 0644 |
|