" Vim indent file " Language: Makefile " Maintainer: Nikolai Weibull <now@bitwi.se> " Latest Revision: 2007-05-07 if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetMakeIndent() setlocal indentkeys=!^F,o,O,<:>,=else,=endif setlocal nosmartindent if exists("*GetMakeIndent") finish endif let s:comment_rx = '^\s*#' let s:rule_rx = '^[^ \t#:][^#:]*:\{1,2}\%([^=:]\|$\)' let s:continued_rule_rx = '^[^#:]*:\{1,2}\%([^=:]\|$\)' let s:continuation_rx = '\\$' let s:assignment_rx = '^\s*\h\w*\s*[+?]\==\s*\zs.*\\$' let s:folded_assignment_rx = '^\s*\h\w*\s*[+?]\==' " TODO: This needs to be a lot more restrictive in what it matches. let s:just_inserted_rule_rx = '^\s*[^#:]\+:\{1,2}$' let s:conditional_directive_rx = '^ *\%(ifn\=\%(eq\|def\)\|else\)\>' let s:end_conditional_directive_rx = '^\s*\%(else\|endif\)\>' function s:remove_continuation(line) return substitute(a:line, s:continuation_rx, "", "") endfunction function GetMakeIndent() " TODO: Should this perhaps be v:lnum -1? " let prev_lnum = prevnonblank(v:lnum - 1) let prev_lnum = v:lnum - 1 if prev_lnum == 0 return 0 endif let prev_line = getline(prev_lnum) let prev_prev_lnum = prev_lnum - 1 let prev_prev_line = prev_prev_lnum != 0 ? getline(prev_prev_lnum) : "" " TODO: Deal with comments. In comments, continuations aren't interesting. if prev_line =~ s:continuation_rx if prev_prev_line =~ s:continuation_rx return indent(prev_lnum) elseif prev_line =~ s:rule_rx return &sw elseif prev_line =~ s:assignment_rx call cursor(prev_lnum, 1) if search(s:assignment_rx, 'W') != 0 return virtcol('.') - 1 else " TODO: ? return &sw endif else " TODO: OK, this might be a continued shell command, so perhaps indent " properly here? Leave this out for now, but in the next release this " should be using indent/sh.vim somehow. "if prev_line =~ '^\t' " s:rule_command_rx " if prev_line =~ '^\s\+[@-]\%(if\)\>' " return indent(prev_lnum) + 2 " endif "endif return indent(prev_lnum) + &sw endif elseif prev_prev_line =~ s:continuation_rx let folded_line = s:remove_continuation(prev_prev_line) . ' ' . s:remove_continuation(prev_line) let lnum = prev_prev_lnum - 1 let line = getline(lnum) while line =~ s:continuation_rx let folded_line = s:remove_continuation(line) . ' ' . folded_line let lnum -= 1 let line = getline(lnum) endwhile let folded_lnum = lnum + 1 if folded_line =~ s:rule_rx if getline(v:lnum) =~ s:rule_rx return 0 else return &ts endif else " elseif folded_line =~ s:folded_assignment_rx if getline(v:lnum) =~ s:rule_rx return 0 else return indent(folded_lnum) endif " else " " TODO: ? " return indent(prev_lnum) endif elseif prev_line =~ s:rule_rx if getline(v:lnum) =~ s:rule_rx return 0 else return &ts endif elseif prev_line =~ s:conditional_directive_rx return &sw else let line = getline(v:lnum) if line =~ s:just_inserted_rule_rx return 0 elseif line =~ s:end_conditional_directive_rx return v:lnum - 1 == 0 ? 0 : indent(v:lnum - 1) - &sw else return v:lnum - 1 == 0 ? 0 : indent(v:lnum - 1) endif endif endfunction
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 |
|