diff options
Diffstat (limited to 'indent/xml.vim')
-rw-r--r-- | indent/xml.vim | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/indent/xml.vim b/indent/xml.vim deleted file mode 100644 index cdd0ed9d..00000000 --- a/indent/xml.vim +++ /dev/null @@ -1,111 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 - -" Language: xml -" Maintainer: Johannes Zellner <johannes@zellner.org> -" Last Change: 2017 Jun 13 -" 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) --] -setlocal indentexpr=XmlIndentGet(v:lnum,1) -setlocal indentkeys=o,O,*<Return>,<>>,<<>,/,{,} - -if !exists('b:xml_indent_open') - let b:xml_indent_open = '.\{-}<\a' - " pre tag, e.g. <address> - " let b:xml_indent_open = '.\{-}<[/]\@!\(address\)\@!' -endif - -if !exists('b:xml_indent_close') - let b:xml_indent_close = '.\{-}</' - " end pre tag, e.g. </address> - " let b:xml_indent_close = '.\{-}</\(address\)\@!' -endif - -let &cpo = s:keepcpo -unlet s:keepcpo - -" [-- finish, if the function already exists --] -if exists('*XmlIndentGet') - finish -endif - -let s:keepcpo= &cpo -set cpo&vim - -fun! <SID>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! <SID>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 - elseif syn1 =~ '^xmlComment' && syn2 =~ '^xmlComment' - " indent comments specially - return -1 - endif - endif - return 1 -endfun - -" [-- return the sum of indents of a:lnum --] -fun! <SID>XmlIndentSum(lnum, style, add) - let line = getline(a:lnum) - if a:style == match(line, '^\s*</') - return (shiftwidth() * - \ (<SID>XmlIndentWithPattern(line, b:xml_indent_open) - \ - <SID>XmlIndentWithPattern(line, b:xml_indent_close) - \ - <SID>XmlIndentWithPattern(line, '.\{-}/>'))) + a:add - else - return a:add - endif -endfun - -fun! XmlIndentGet(lnum, use_syntax_check) - " Find a non-empty line above the current line. - let lnum = prevnonblank(a:lnum - 1) - - " Hit the start of the file, use zero indent. - if lnum == 0 - return 0 - endif - - if a:use_syntax_check - let check_lnum = <SID>XmlIndentSynCheck(lnum) - let check_alnum = <SID>XmlIndentSynCheck(a:lnum) - if 0 == check_lnum || 0 == check_alnum - return indent(a:lnum) - elseif -1 == check_lnum || -1 == check_alnum - return -1 - endif - endif - - let ind = <SID>XmlIndentSum(lnum, -1, indent(lnum)) - let ind = <SID>XmlIndentSum(a:lnum, 0, ind) - - return ind -endfun - -let &cpo = s:keepcpo -unlet s:keepcpo - -" vim:ts=8 - -endif |