xref: /vim-8.2.3635/runtime/ftplugin/xml.vim (revision d47d5223)
1071d4279SBram Moolenaar" Vim filetype plugin file
2071d4279SBram Moolenaar"     Language:	xml
37db25fedSBram Moolenaar"   Maintainer:	Christian Brabandt <[email protected]>
4*d47d5223SBram Moolenaar" Last Changed: Dec 07th, 2018
57db25fedSBram Moolenaar"   Repository: https://github.com/chrisbra/vim-xml-ftplugin
67db25fedSBram Moolenaar" Previous Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
75c73622aSBram Moolenaar"          URL:		      http://dwsharp.users.sourceforge.net/vim/ftplugin
8071d4279SBram Moolenaar
9071d4279SBram Moolenaarif exists("b:did_ftplugin") | finish | endif
10071d4279SBram Moolenaarlet b:did_ftplugin = 1
11071d4279SBram Moolenaar
12071d4279SBram Moolenaar" Make sure the continuation lines below do not cause problems in
13071d4279SBram Moolenaar" compatibility mode.
14071d4279SBram Moolenaarlet s:save_cpo = &cpo
157db25fedSBram Moolenaarset cpo&vim
16071d4279SBram Moolenaar
17071d4279SBram Moolenaarsetlocal commentstring=<!--%s-->
187db25fedSBram Moolenaar" Remove the middlepart from the comments section, as this causes problems:
197db25fedSBram Moolenaar" https://groups.google.com/d/msg/vim_dev/x4GT-nqa0Kg/jvtRnEbtAnMJ
207db25fedSBram Moolenaarsetlocal comments=s:<!--,e:-->
21e37d50a5SBram Moolenaar
22e37d50a5SBram Moolenaarsetlocal formatoptions-=t
23e37d50a5SBram Moolenaarsetlocal formatoptions+=croql
247db25fedSBram Moolenaarsetlocal formatexpr=xmlformat#Format()
25071d4279SBram Moolenaar
26071d4279SBram Moolenaar" XML:  thanks to Johannes Zellner and Akbar Ibrahim
27071d4279SBram Moolenaar" - case sensitive
28071d4279SBram Moolenaar" - don't match empty tags <fred/>
29071d4279SBram Moolenaar" - match <!--, --> style comments (but not --, --)
30071d4279SBram Moolenaar" - match <!, > inlined dtd's. This is not perfect, as it
31071d4279SBram Moolenaar"   gets confused for example by
32071d4279SBram Moolenaar"       <!ENTITY gt ">">
33071d4279SBram Moolenaarif exists("loaded_matchit")
34071d4279SBram Moolenaar    let b:match_ignorecase=0
35071d4279SBram Moolenaar    let b:match_words =
36071d4279SBram Moolenaar     \  '<:>,' .
37071d4279SBram Moolenaar     \  '<\@<=!\[CDATA\[:]]>,'.
38071d4279SBram Moolenaar     \  '<\@<=!--:-->,'.
39071d4279SBram Moolenaar     \  '<\@<=?\k\+:?>,'.
40071d4279SBram Moolenaar     \  '<\@<=\([^ \t>/]\+\)\%(\s\+[^>]*\%([^/]>\|$\)\|>\|$\):<\@<=/\1>,'.
41071d4279SBram Moolenaar     \  '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>'
42071d4279SBram Moolenaarendif
43071d4279SBram Moolenaar
44a5792f58SBram Moolenaar" For Omni completion, by Mikolaj Machowski.
45a5792f58SBram Moolenaarif exists('&ofu')
46a5792f58SBram Moolenaar  setlocal ofu=xmlcomplete#CompleteTags
47a5792f58SBram Moolenaarendif
48a5792f58SBram Moolenaarcommand! -nargs=+ XMLns call xmlcomplete#CreateConnection(<f-args>)
49a5792f58SBram Moolenaarcommand! -nargs=? XMLent call xmlcomplete#CreateEntConnection(<f-args>)
50a5792f58SBram Moolenaar
51071d4279SBram Moolenaar" Change the :browse e filter to primarily show xml-related files.
527db25fedSBram Moolenaarif (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
53071d4279SBram Moolenaar    let  b:browsefilter="XML Files (*.xml)\t*.xml\n" .
54071d4279SBram Moolenaar    \ "DTD Files (*.dtd)\t*.dtd\n" .
557db25fedSBram Moolenaar    \ "XSD Files (*.xsd)\t*.xsd\n" .
56071d4279SBram Moolenaar    \ "All Files (*.*)\t*.*\n"
57071d4279SBram Moolenaarendif
58071d4279SBram Moolenaar
59071d4279SBram Moolenaar" Undo the stuff we changed.
607db25fedSBram Moolenaarlet b:undo_ftplugin = "setlocal commentstring< comments< formatoptions< formatexpr< " .
61071d4279SBram Moolenaar    \     " | unlet! b:match_ignorecase b:match_words b:browsefilter"
62071d4279SBram Moolenaar
63071d4279SBram Moolenaar" Restore the saved compatibility options.
64071d4279SBram Moolenaarlet &cpo = s:save_cpo
6584f7235bSBram Moolenaarunlet s:save_cpo
66