/usr/share/vim/vim81/indent
NameSizeModeActions
aap.vim2650644editdlrm
ada.vim112350644editdlrm
ant.vim2900644editdlrm
automake.vim2430644editdlrm
awk.vim77740644editdlrm
bash.vim3500644editdlrm
bib.vim3460644editdlrm
bst.vim19370644editdlrm
bzl.vim24840644editdlrm
c.vim3250644editdlrm
cdl.vim42530644editdlrm
ch.vim4700644editdlrm
chaiscript.vim11380644editdlrm
changelog.vim2640644editdlrm
clojure.vim104400644editdlrm
cmake.vim26830644editdlrm
cobol.vim86950644editdlrm
config.vim21820644editdlrm
context.vim7520644editdlrm
cpp.vim3290644editdlrm
cs.vim17560644editdlrm
css.vim17900644editdlrm
cucumber.vim26780644editdlrm
cuda.vim3050644editdlrm
d.vim5100644editdlrm
dictconf.vim3370644editdlrm
dictdconf.vim3380644editdlrm
docbk.vim3360644editdlrm
dosbatch.vim13350644editdlrm
dtd.vim118690644editdlrm
dtrace.vim4510644editdlrm
dylan.vim27070644editdlrm
eiffel.vim33170644editdlrm
erlang.vim463790644editdlrm
eruby.vim30160644editdlrm
eterm.vim6680644editdlrm
falcon.vim140770644editdlrm
fortran.vim74450644editdlrm
framescript.vim8160644editdlrm
gitconfig.vim8410644editdlrm
gitolite.vim12770644editdlrm
go.vim16730644editdlrm
haml.vim22110644editdlrm
hamster.vim14250644editdlrm
hog.vim18920644editdlrm
html.vim334880644editdlrm
htmldjango.vim2730644editdlrm
idlang.vim16200644editdlrm
ishd.vim18770644editdlrm
j.vim18130644editdlrm
java.vim42870644editdlrm
javascript.vim153620644editdlrm
javascriptreact.vim1090644editdlrm
json.vim44210644editdlrm
jsp.vim4620644editdlrm
ld.vim17920644editdlrm
less.vim2430644editdlrm
lifelines.vim6370644editdlrm
liquid.vim18990644editdlrm
lisp.vim3530644editdlrm
logtalk.vim18590644editdlrm
lua.vim19270644editdlrm
mail.vim3080644editdlrm
make.vim34880644editdlrm
matlab.vim48020644editdlrm
meson.vim52230644editdlrm
mf.vim1560644editdlrm
mma.vim22350644editdlrm
mp.vim113210644editdlrm
nsis.vim32570644editdlrm
objc.vim16450644editdlrm
ocaml.vim91530644editdlrm
occam.vim46370644editdlrm
pascal.vim56560644editdlrm
perl.vim59020644editdlrm
perl6.vim35400644editdlrm
php.vim259050644editdlrm
postscr.vim16490644editdlrm
pov.vim26620644editdlrm
prolog.vim18040644editdlrm
pyrex.vim3260644editdlrm
python.vim66540644editdlrm
r.vim140370644editdlrm
raml.vim2850644editdlrm
readline.vim7110644editdlrm
README.txt16890644editdlrm
rhelp.vim28400644editdlrm
rmd.vim16800644editdlrm
rnoweb.vim10870644editdlrm
rpl.vim18620644editdlrm
rrst.vim11950644editdlrm
rst.vim13990644editdlrm
ruby.vim295970644editdlrm
rust.vim64980644editdlrm
sas.vim52700644editdlrm
sass.vim9500644editdlrm
scala.vim194300644editdlrm
scheme.vim3720644editdlrm
scss.vim1910644editdlrm
sdl.vim27940644editdlrm
sh.vim92710644editdlrm
sml.vim64780644editdlrm
sql.vim12040644editdlrm
sqlanywhere.vim131660644editdlrm
systemd.vim2050644editdlrm
systemverilog.vim86250644editdlrm
tcl.vim25130644editdlrm
tcsh.vim12700644editdlrm
teraterm.vim13650644editdlrm
tex.vim134980644editdlrm
tf.vim15490644editdlrm
tilde.vim10120644editdlrm
treetop.vim7070644editdlrm
typescript.vim144800644editdlrm
vb.vim20890644editdlrm
verilog.vim81650644editdlrm
vhdl.vim146660644editdlrm
vim.vim37800644editdlrm
vroom.vim3790644editdlrm
wast.vim4580644editdlrm
xf86conf.vim7090644editdlrm
xhtml.vim2690644editdlrm
xinetd.vim12310644editdlrm
xml.vim63490644editdlrm
xsd.vim2530644editdlrm
xslt.vim2970644editdlrm
yacc.vim7810644editdlrm
yaml.vim54720644editdlrm
zimbu.vim39360644editdlrm
zsh.vim4110644editdlrm
Edit: /usr/share/vim/vim81/indent/xml.vim (6349B)
" Language: XML " Maintainer: Christian Brabandt " Repository: https://github.com/chrisbra/vim-xml-ftplugin " Previous Maintainer: Johannes Zellner " Last Changed: 2019 Oct 24 " Last Change: " 20190726 - Correctly handle non-tagged data " 20190204 - correctly handle wrap tags " https://github.com/chrisbra/vim-xml-ftplugin/issues/5 " 20190128 - Make sure to find previous tag " https://github.com/chrisbra/vim-xml-ftplugin/issues/4 " 20181116 - Fix indentation when tags start with a colon or an underscore " https://github.com/vim/vim/pull/926 " 20181022 - Do not overwrite indentkeys setting " https://github.com/chrisbra/vim-xml-ftplugin/issues/1 " 20180724 - Correctly indent xml comments https://github.com/vim/vim/issues/3200 " " Notes: " 1) does not indent pure non-xml code (e.g. embedded scripts) " 2) will be confused by unbalanced tags in comments " or CDATA sections. " 2009-05-26 patch by Nikolai Weibull " TODO: implement pre-like tags, see xml_indent_open / xml_indent_close " Only load this indent file when no other was loaded. if exists("b:did_indent") finish endif let b:did_indent = 1 let s:keepcpo= &cpo set cpo&vim " [-- local settings (must come before aborting the script) --] " Attention: Parameter use_syntax_check is used by the docbk.vim indent script setlocal indentexpr=XmlIndentGet(v:lnum,1) setlocal indentkeys=o,O,*,<>>,<<>,/,{,},!^F " autoindent: used when the indentexpr returns -1 setlocal autoindent if !exists('b:xml_indent_open') let b:xml_indent_open = '.\{-}<[:A-Z_a-z]' " pre tag, e.g.
" let b:xml_indent_open = '.\{-}<[/]\@!\(address\)\@!' endif if !exists('b:xml_indent_close') let b:xml_indent_close = '.\{-} " let b:xml_indent_close = '.\{-}XmlIndentWithPattern(line, pat) let s = substitute('x'.a:line, a:pat, "\1", 'g') return strlen(substitute(s, "[^\1].*$", '', '')) endfun " [-- check if it's xml --] fun! XmlIndentSynCheck(lnum) if &syntax != '' let syn1 = synIDattr(synID(a:lnum, 1, 1), 'name') let syn2 = synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name') if syn1 != '' && syn1 !~ 'xml' && syn2 != '' && syn2 !~ 'xml' " don't indent pure non-xml code return 0 endif endif return 1 endfun " [-- return the sum of indents of a:lnum --] fun! XmlIndentSum(line, style, add) if IsXMLContinuation(a:line) && a:style == 0 " no complete tag, add one additional indent level " but only for the current line return a:add + shiftwidth() elseif HasNoTagEnd(a:line) " no complete tag, return initial indent return a:add endif if a:style == match(a:line, '^\s*XmlIndentWithPattern(a:line, b:xml_indent_open) \ - XmlIndentWithPattern(a:line, b:xml_indent_close) \ - XmlIndentWithPattern(a:line, '.\{-}/>'))) + a:add else return a:add endif endfun " Main indent function fun! XmlIndentGet(lnum, use_syntax_check) " Find a non-empty line above the current line. if prevnonblank(a:lnum - 1) == 0 " Hit the start of the file, use zero indent. return 0 endif " Find previous line with a tag (regardless whether open or closed, " but always restrict the match to a line before the current one " Note: xml declaration: " won't be found, as it is not a legal tag name let ptag_pattern = '\%(.\{-}<[/:A-Z_a-z]\)'. '\%(\&\%<'. a:lnum .'l\)' let ptag = search(ptag_pattern, 'bnW') " no previous tag if ptag == 0 return 0 endif let pline = getline(ptag) let pind = indent(ptag) let syn_name_start = '' " Syntax element at start of line (excluding whitespace) let syn_name_end = '' " Syntax element at end of line let curline = getline(a:lnum) if a:use_syntax_check let check_lnum = XmlIndentSynCheck(ptag) let check_alnum = XmlIndentSynCheck(a:lnum) if check_lnum == 0 || check_alnum == 0 return indent(a:lnum) endif let syn_name_end = synIDattr(synID(a:lnum, strlen(curline) - 1, 1), 'name') let syn_name_start = synIDattr(synID(a:lnum, match(curline, '\S') + 1, 1), 'name') endif if syn_name_end =~ 'Comment' && syn_name_start =~ 'Comment' return XmlIndentComment(a:lnum) elseif empty(syn_name_start) && empty(syn_name_end) " non-xml tag content: use indent from 'autoindent' return pind + shiftwidth() endif " Get indent from previous tag line let ind = XmlIndentSum(pline, -1, pind) " Determine indent from current line let ind = XmlIndentSum(curline, 0, ind) return ind endfun func! IsXMLContinuation(line) " Checks, whether or not the line matches a start-of-tag return a:line !~ '^\s*<' endfunc func! HasNoTagEnd(line) " Checks whether or not the line matches '>' (so finishes a tag) return a:line !~ '>\s*$' endfunc " return indent for a commented line, " the middle part might be indented one additional level func! XmlIndentComment(lnum) let ptagopen = search(b:xml_indent_open, 'bnW') let ptagclose = search(b:xml_indent_close, 'bnW') if getline(a:lnum) =~ '' " end of comment, same as start of comment return indent(search('