/usr/share/vim/vim74/indent
NameSizeModeActions
aap.vim2650644editdlrm
ada.vim111470644editdlrm
ant.vim2900644editdlrm
automake.vim2310644editdlrm
awk.vim77480644editdlrm
bib.vim3460644editdlrm
bst.vim19190644editdlrm
c.vim3250644editdlrm
cdl.vim41720644editdlrm
ch.vim4700644editdlrm
chaiscript.vim11350644editdlrm
changelog.vim2640644editdlrm
clojure.vim121320644editdlrm
cmake.vim27540644editdlrm
cobol.vim81970644editdlrm
config.vim21660644editdlrm
cpp.vim3290644editdlrm
cs.vim3270644editdlrm
css.vim17190644editdlrm
cucumber.vim26240644editdlrm
cuda.vim3050644editdlrm
d.vim5100644editdlrm
dictconf.vim3250644editdlrm
dictdconf.vim3260644editdlrm
docbk.vim3240644editdlrm
dtd.vim116680644editdlrm
dtrace.vim4510644editdlrm
dylan.vim26620644editdlrm
eiffel.vim32080644editdlrm
erlang.vim462350644editdlrm
eruby.vim21610644editdlrm
eterm.vim6380644editdlrm
falcon.vim139820644editdlrm
fortran.vim65590644editdlrm
framescript.vim7860644editdlrm
gitconfig.vim8170644editdlrm
gitolite.vim9960644editdlrm
haml.vim21890644editdlrm
hamster.vim14070644editdlrm
html.vim148120644editdlrm
htmldjango.vim2730644editdlrm
idlang.vim15660644editdlrm
ishd.vim18410644editdlrm
java.vim41150644editdlrm
javascript.vim3360644editdlrm
jsp.vim4620644editdlrm
ld.vim17530644editdlrm
lifelines.vim6370644editdlrm
liquid.vim18790644editdlrm
lisp.vim3530644editdlrm
logtalk.vim16900644editdlrm
lua.vim19140644editdlrm
mail.vim3080644editdlrm
make.vim34310644editdlrm
matlab.vim19280644editdlrm
mma.vim22270644editdlrm
mp.vim65270644editdlrm
objc.vim16450644editdlrm
ocaml.vim91100644editdlrm
occam.vim46340644editdlrm
pascal.vim56530644editdlrm
perl.vim58110644editdlrm
perl6.vim35030644editdlrm
php.vim194230644editdlrm
postscr.vim16220644editdlrm
pov.vim26430644editdlrm
prolog.vim14540644editdlrm
pyrex.vim3260644editdlrm
python.vim57440644editdlrm
r.vim147860644editdlrm
readline.vim6810644editdlrm
README.txt16390644editdlrm
rpl.vim18350644editdlrm
rst.vim13870644editdlrm
ruby.vim175460644editdlrm
sass.vim10180644editdlrm
scheme.vim2410644editdlrm
scss.vim1910644editdlrm
sdl.vim27670644editdlrm
sh.vim40400644editdlrm
sml.vim64180644editdlrm
sql.vim12040644editdlrm
sqlanywhere.vim130750644editdlrm
tcl.vim16020644editdlrm
tcsh.vim12430644editdlrm
tex.vim96950644editdlrm
tf.vim14990644editdlrm
tilde.vim9940644editdlrm
treetop.vim6770644editdlrm
vb.vim20440644editdlrm
verilog.vim76200644editdlrm
vhdl.vim138010644editdlrm
vim.vim28300644editdlrm
xf86conf.vim6790644editdlrm
xhtml.vim2690644editdlrm
xinetd.vim12010644editdlrm
xml.vim28400644editdlrm
xsd.vim2530644editdlrm
xslt.vim2970644editdlrm
yacc.vim7690644editdlrm
yaml.vim41170644editdlrm
zimbu.vim38910644editdlrm
zsh.vim2310644editdlrm
Edit: /usr/share/vim/vim74/indent/vhdl.vim (13801B)
" VHDL indent ('93 syntax) " Language: VHDL " Maintainer: Gerald Lai " Version: 1.58 " Last Change: 2011 Sep 27 " URL: http://www.vim.org/scripts/script.php?script_id=1450 " only load this indent file when no other was loaded if exists("b:did_indent") finish endif let b:did_indent = 1 " setup indent options for local VHDL buffer setlocal indentexpr=GetVHDLindent() setlocal indentkeys=!^F,o,O,0(,0) setlocal indentkeys+==~begin,=~end\ ,=~end\ ,=~is,=~select,=~when setlocal indentkeys+==~if,=~then,=~elsif,=~else setlocal indentkeys+==~case,=~loop,=~for,=~generate,=~record,=~units,=~process,=~block,=~function,=~component,=~procedure setlocal indentkeys+==~architecture,=~configuration,=~entity,=~package " constants " not a comment let s:NC = '\%(--.*\)\@ 0 && prevs =~ '^\s*--' let prevn = prevnonblank(prevn - 1) let prevs = getline(prevn) endwhile let prevs_noi = substitute(prevs, '^\s*', '', '') " default indent starts as previous non-comment line's indent let ind = prevn > 0 ? indent(prevn) : 0 " backup default let ind2 = ind " indent: special; kill string so it would not affect other filters " keywords: "report" + string " where: anywhere in current or previous line let s0 = s:NC.'\\s*".*"' if curs =~? s0 let curs = "" endif if prevs =~? s0 let prevs = "" endif " indent: previous line's comment position, otherwise follow next non-comment line if possible " keyword: "--" " where: start of current line if curs =~ '^\s*--' let pn = curn - 1 let ps = getline(pn) if curs =~ '^\s*--\s' && ps =~ '--' return indent(pn) + stridx(substitute(ps, '^\s*', '', ''), '--') else " find nextnonblank line that is not a comment let nn = nextnonblank(curn + 1) let ns = getline(nn) while nn > 0 && ns =~ '^\s*--' let nn = nextnonblank(nn + 1) let ns = getline(nn) endwhile let n = indent(nn) return n != -1 ? n : ind endif endif " **************************************************************************************** " indent: align generic variables & port names " keywords: "procedure" + name, "generic", "map", "port" + "(", provided current line is part of mapping " where: anywhere in previous 2 lines " find following previous non-comment line let pn = prevnonblank(prevn - 1) let ps = getline(pn) while pn > 0 && ps =~ '^\s*--' let pn = prevnonblank(pn - 1) let ps = getline(pn) endwhile if (curs =~ '^\s*)' || curs =~? '^\s*\%(\<\%(procedure\|generic\|map\|port\)\>.*\)\@\s*\S\+\|:[^=]\@=\s*\%(\%(in\|out\|inout\|buffer\|linkage\)\>\|\w\+\s\+:=\)\)') && (prevs =~? s:NC.'\<\%(procedure\s\+\S\+\|generic\|map\|port\)\s*(\%(\s*\w\)\=' || (ps =~? s:NC.'\<\%(procedure\|generic\|map\|port\)'.s:ES && prevs =~ '^\s*(')) " align closing ")" with opening "(" if curs =~ '^\s*)' return ind2 + stridx(prevs_noi, '(') endif let m = matchend(prevs_noi, '(\s*\ze\w') if m != -1 return ind2 + m else if g:vhdl_indent_genportmap return ind2 + stridx(prevs_noi, '(') + &sw else return ind2 + &sw endif endif endif " indent: align conditional/select statement " keywords: variable + "<=" without ";" ending " where: start of previous line if prevs =~? '^\s*\S\+\s*<=[^;]*'.s:ES if g:vhdl_indent_rhsassign return ind2 + matchend(prevs_noi, '<=\s*\ze.') else return ind2 + &sw endif endif " indent: backtrace previous non-comment lines for next smaller or equal size indent " keywords: "end" + "record", "units" " where: start of previous line " keyword: ")" " where: start of previous line " keyword: without "<=" + ";" ending " where: anywhere in previous line " keyword: "=>" + ")" ending, provided current line does not begin with ")" " where: anywhere in previous line " _note_: indent allowed to leave this filter let m = 0 if prevs =~? '^\s*end\s\+\%(record\|units\)\>' let m = 3 elseif prevs =~ '^\s*)' let m = 1 elseif prevs =~ s:NC.'\%(<=.*\)\@.*'.s:NC.')'.s:ES) let m = 2 endif if m > 0 let pn = prevnonblank(prevn - 1) let ps = getline(pn) while pn > 0 let t = indent(pn) if ps !~ '^\s*--' && (t < ind || (t == ind && m == 3)) " make sure one of these is true " keywords: variable + "<=" without ";" ending " where: start of previous non-comment line " keywords: "procedure", "generic", "map", "port" " where: anywhere in previous non-comment line " keyword: "(" " where: start of previous non-comment line if m < 3 && ps !~? '^\s*\S\+\s*<=[^;]*'.s:ES if ps =~? s:NC.'\<\%(procedure\|generic\|map\|port\)\>' || ps =~ '^\s*(' let ind = t endif break endif let ind = t if m > 1 " find following previous non-comment line let ppn = prevnonblank(pn - 1) let pps = getline(ppn) while ppn > 0 && pps =~ '^\s*--' let ppn = prevnonblank(ppn - 1) let pps = getline(ppn) endwhile " indent: follow " keyword: "select" " where: end of following previous non-comment line " keyword: "type" " where: start of following previous non-comment line if m == 2 let s1 = s:NC.'\' " find previous opening statement of " keywords: "architecture", "block", "entity", "function", "generate", "procedure", "process" let s2 = s:NC.s:NE.'\<\%(architecture\|block\|entity\|function\|generate\|procedure\|process\)\>' let pn = prevnonblank(curn - 1) let ps = getline(pn) while pn > 0 && (ps =~ '^\s*--' || ps !~? s2) let pn = prevnonblank(pn - 1) let ps = getline(pn) if (ps =~? s:NC.'\') return indent(pn) - &sw endif endwhile if (pn == 0) return ind - &sw else return indent(pn) endif endif " indent: +sw if previous line is previous opening statement " keywords: "record", "units" " where: anywhere in current line if curs =~? s:NC.s:NE.'\<\%(record\|units\)\>' " find previous opening statement of " keyword: "type" let s3 = s:NC.s:NE.'\' if curs !~? s3.'.*'.s:NC.'\<\%(record\|units\)\>.*'.s:ES && prevs =~? s3 let ind = ind + &sw endif return ind endif " **************************************************************************************** " indent: 0 " keywords: "architecture", "configuration", "entity", "library", "package" " where: start of current line if curs =~? '^\s*\%(architecture\|configuration\|entity\|library\|package\)\>' return 0 endif " indent: maintain indent of previous opening statement " keyword: "is" " where: start of current line " find previous opening statement of " keywords: "architecture", "block", "configuration", "entity", "function", "package", "procedure", "process", "type" if curs =~? '^\s*\' && prevs =~? s:NC.s:NE.'\<\%(architecture\|block\|configuration\|entity\|function\|package\|procedure\|process\|type\)\>' return ind2 endif " indent: maintain indent of previous opening statement " keyword: "then" " where: start of current line " find previous opening statement of " keywords: "elsif", "if" if curs =~? '^\s*\' && prevs =~? s:NC.'\%(\\|'.s:NE.'\\)' return ind2 endif " indent: maintain indent of previous opening statement " keyword: "generate" " where: start of current line " find previous opening statement of " keywords: "for", "if" if curs =~? '^\s*\' && prevs =~? s:NC.s:NE.'\%(\%(\' return ind2 endif " indent: +sw " keywords: "block", "process" " removed: "begin", "case", "elsif", "if", "loop", "record", "units", "while" " where: anywhere in previous line if prevs =~? s:NC.s:NE.'\<\%(block\|process\)\>' return ind + &sw endif " indent: +sw " keywords: "architecture", "configuration", "entity", "package" " removed: "component", "for", "when", "with" " where: start of previous line if prevs =~? '^\s*\%(architecture\|configuration\|entity\|package\)\>' return ind + &sw endif " indent: +sw " keyword: "select" " removed: "generate", "is", "=>" " where: end of previous line if prevs =~? s:NC.'\" " where: end of previous line " _note_: indent allowed to leave this filter if prevs =~? s:NC.'\%(\\|'.s:NE.'\<\%(loop\|record\|units\)\>\)' || prevs =~? '^\s*\%(component\|else\|for\)\>' || prevs =~? s:NC.'\%('.s:NE.'\\)'.s:ES let ind = ind + &sw endif " **************************************************************************************** " indent: -sw " keywords: "when", provided previous line does not begin with "when", does not end with "is" " where: start of current line let s4 = '^\s*when\>' if curs =~? s4 if prevs =~? s:NC.'\' if prevs =~? '^\s*\%(elsif\|'.s5.'\)' return ind else return ind - &sw endif endif " indent: backtrace previous non-comment lines " keyword: "end" + "case", "component" " where: start of current line let m = 0 if curs =~? '^\s*end\s\+case\>' let m = 1 elseif curs =~? '^\s*end\s\+component\>' let m = 2 endif if m > 0 " find following previous non-comment line let pn = prevn let ps = getline(pn) while pn > 0 if ps !~ '^\s*--' "indent: -2sw "keywords: "end" + "case" "where: start of previous non-comment line "indent: -sw "keywords: "when" "where: start of previous non-comment line "indent: follow "keywords: "case" "where: start of previous non-comment line if m == 1 if ps =~? '^\s*end\s\+case\>' return indent(pn) - 2 * &sw elseif ps =~? '^\s*when\>' return indent(pn) - &sw elseif ps =~? '^\s*case\>' return indent(pn) endif "indent: follow "keyword: "component" "where: start of previous non-comment line elseif m == 2 if ps =~? '^\s*component\>' return indent(pn) endif endif endif let pn = prevnonblank(pn - 1) let ps = getline(pn) endwhile return ind - &sw endif " indent: -sw " keyword: ")" " where: start of current line if curs =~ '^\s*)' return ind - &sw endif " indent: 0 " keywords: "end" + "architecture", "configuration", "entity", "package" " where: start of current line if curs =~? '^\s*end\s\+\%(architecture\|configuration\|entity\|package\)\>' return 0 endif " indent: -sw " keywords: "end" + identifier, ";" " where: start of current line "if curs =~? '^\s*end\s\+\w\+\>' if curs =~? '^\s*end\%(\s\|;'.s:ES.'\)' return ind - &sw endif " **************************************************************************************** " indent: maintain indent of previous opening statement " keywords: without "procedure", "generic", "map", "port" + ":" but not ":=" + "in", "out", "inout", "buffer", "linkage", variable & ":=" " where: start of current line if curs =~? '^\s*\%(\<\%(procedure\|generic\|map\|port\)\>.*\)\@\|\w\+\s\+:=\)' return ind2 endif " return leftover filtered indent return ind endfunction