diff options
Diffstat (limited to 'files/.vim/doc/xml-plugin.txt')
| -rwxr-xr-x | files/.vim/doc/xml-plugin.txt | 389 |
1 files changed, 389 insertions, 0 deletions
diff --git a/files/.vim/doc/xml-plugin.txt b/files/.vim/doc/xml-plugin.txt new file mode 100755 index 0000000..f9c4ced --- /dev/null +++ b/files/.vim/doc/xml-plugin.txt @@ -0,0 +1,389 @@ +*xml-plugin.txt* Help edit XML and SGML documents. v1.36
+
+ XML Edit ~
+
+A filetype plugin to help edit XML and SGML documents.
+
+This script provides some convenience when editing XML (and some SGML
+including HTML) formated documents. It allows you to jump to the
+beginning or end of the tag block your cursor is in. '%' will jump
+between '<' and '>' within the tag your cursor is in. When in insert
+mode and you finish a tag (pressing '>') the tag will be completed. If
+you press '>' twice it will place the cursor in the middle of the tags
+on it's own line (helps with nested tags).
+
+Usage: Place this file into your ftplugin directory. To add html support
+Sym-link or copy this file to html.vim in your ftplugin directory. To activte
+the script place 'filetype plugin on' in your |.vimrc| file. See |ftplugins|
+for more information on this topic.
+
+If the file edited is of type "html" and "xml_use_html" is defined then
+the following tags will not auto complete: <img>, <input>, <param>,
+<frame>, <br>, <hr>, <meta>, <link>, <base>, <area>
+
+If the file edited is of type 'html' and 'xml_use_xhtml' is defined the
+above tags will autocomplete the xml closing staying xhtml compatable.
+ex. <hr> becomes <hr /> (see |xml-plugin-settings|)
+
+Known Bugs {{{1 ~
+
+- < & > marks inside of a CDATA section are interpreted as actual XML tags
+ even if unmatched.
+- The script can not handle leading spaces such as < tag></ tag> it is
+ illegal XML syntax and considered very bad form.
+- Placing a literal `>' in an attribute value will auto complete despite that
+ the start tag isn't finished. This is poor XML anyway you should use
+ > instead.
+
+
+------------------------------------------------------------------------------
+ *xml-plugin-settings*
+Options {{{1
+
+(All options must be placed in your |.vimrc| prior to the |ftplugin|
+command.)
+
+xml_tag_completion_map
+ Use this setting to change the default mapping to auto complete a
+ tag. By default typing a literal `>' will cause the tag your editing
+ to auto complete; pressing twice will auto nest the tag. By using
+ this setting the `>' will be a literal `>' and you must use the new
+ mapping to perform auto completion and auto nesting. For example if
+ you wanted Control-L to perform auto completion inmstead of typing a
+ `>' place the following into your .vimrc: >
+ let xml_tag_completion_map = "<C-l>"
+<
+xml_no_auto_nesting (Not Working!!!!!)
+ This turns off the auto nesting feature. After a completion is made
+ and another `>' is typed xml-edit automatically will break the tag
+ accross multiple lines and indent the curser to make creating nested
+ tqags easier. This feature turns it off. Enter the following in your
+ .vimrc: >
+ let xml_no_auto_nesting = 1
+<
+xml_use_xhtml
+ When editing HTML this will auto close the short tags to make valid
+ XML like <hr/> and <br/>. Enter the following in your vimrc to
+ turn this option on: >
+ let xml_use_xhtml = 1
+ if the filetype is xhtml and g:xml_use_xhtml doesn't exists
+ the script defines it to be 1. (This also assumes that you have linked
+ xml.vim to xhtml.vim. Otherwise this item is moot)
+ For a file to be of xhtml type there need to be a doctype declaration!!
+ just naming a file something.xhtml doesn't make it type xhtml!
+<
+xml_no_html
+ This turns of the support for HTML specific tags. Place this in your
+ .vimrc: >
+ let xml_no_html = 1
+<
+------------------------------------------------------------------------------
+ *xml-plugin-mappings*
+
+Mapings and their functions {{{1
+
+Typing '>' will start the tag closing routine.
+Typing (Where | means cursor position)
+ <para>|
+results in
+ <para>|</para>
+
+Typing
+ <para>>|</para>
+results in
+ <para>
+ |
+ </para>
+typing a lone '>' and no '<' in front of it accepts the '>' (But having
+lone '>' or '<' in a XML file is frown upon except in <!CDATA> sections,
+and that will throw of the plugin!!).
+
+Typing </tag> or <tag/> also results in na expanding. So when editing
+html type <input .... />
+
+The closing routing also ignores DTD tags '<!,,>' and processing
+instructions '<?....?>'. Thus typing these result in no expansion.
+
+
+<LocalLeader> is a setting in VIM that depicts a prefix for scripts and
+plugins to use. By default this is the backslash key `\'. See |mapleader|
+for details.
+
+;; make element out previous word and close it {{{2
+ - when typing a word;; wil create <word>|</word>
+ when word on its own line it will be
+ <word>
+ |
+ </word>
+ the suffix can be changed by setting
+ let makeElementSuf = ',,,' in your .vimrc
+ Thanks to Bart van Deenen
+ (http://www.vim.org/scripts/script.php?script_id=632)
+
+[ and ] mappings {{{2
+ <LocalLeader>[ Delete <![CDATA[ ]]> delimiters
+ <LocalLeader>{ Delete <![CDATA[ ]]> section
+ <LocalLeader>] Delete <!-- --> delimiters
+ <LocalLeader>} Delete <!-- --> section
+ [[ Goto to the previous open tag
+ [[ Goto to the next open tag
+ [] Goto to the previous close tag
+ ][ Goto to the next close tag
+ [" Goto to the next comment
+ ]" Goto the previous comment
+<LocalLeader>5 Jump to the matching tag. {{{2
+<LocalLeader>% Jump to the matching tag.
+
+
+<LocalLeader>c Rename tag {{{2
+
+<LocalLeader>C Rename tag and remove attributes {{{2
+ Will ask for attributes
+
+<LocalLeader>d Deletes the surrounding tags from the cursor. {{{2
+ <tag1>outter <tag2>inner text</tag2> text</tag1>
+ |
+ Turns to:
+ outter <tag2>inner text</tag2> text
+ |
+
+<LocalLeader>D Deletes the tag and it contents {{{2
+ - and put it in register x.
+ <tag1>outter <tag2>inner text</tag2> text</tag1>
+ |
+ Turns to:
+ <tag1>outter text</tag1>
+
+<LocalLeader>e provide endtag for open tags. {{{2
+ - provide endtag for open tags. Watch where de cursor is
+ <para><listitem>list item content
+ |
+ pressing \e twice produces
+ <para><listitem>list item content</para></listitem>
+
+<LocalLeader>f fold the tag under the cursor {{{2
+ <para>
+ line 1
+ line 2
+ line 3
+ </para>
+ \f produces
+ +-- 5 lines: <para>--------------------------
+
+
+<LocalLeader>F all tags of name 'tag' will be fold. {{{2
+ - If there isn't a tag under
+ the cursor you will be asked for one.
+
+<LocalLeader>g Format (Vim's gq function) {{{2
+ - will make a visual block of tag under cursor and then format using gq
+
+
+<LocalLeader>G Format all tags under cursor (Vim's gq function) {{{2
+ - If there isn't a tag under
+ the cursor you will be asked for one.
+
+
+<LocalLeader>I Indent all tags {{{2
+ - will create a multiline layout every opening tag will be shifted out
+ and every closing tag will be shifted in. Be aware that the rendering
+ of the XML through XSLT and/or DSSSL, might be changed by this.
+ Be aware tha if the file is big, more than 1000 lines, the reformatting
+ takes a long time because vim has to make a big undo buffer.
+ For example using \I on the example below:
+
+ <chapter><title>Indent</title><para>The documentation</para></chapter>
+
+ - Becomes
+
+ <chapter>
+ <title>
+ Indent
+ </title>
+ <para>
+ The documentation
+ </para>
+ </chapter>
+
+
+<LocalLeader>j Joins two the SAME sections together. {{{2
+ - The sections must be next to each other.
+ <para> This is line 1
+ of a paragraph. </para>
+ <para> This is line 2
+ |
+ of a paragraph. </para>
+ \j produces
+ <para> This is line 1
+ of a paragraph.
+ This is line 2
+ of a paragraph. </para>
+
+<LocalLeader>l visual surround the block with listitem and para {{{2
+ When marking up docbook tekst you have the issue that listitems
+ consist of 2 item. This key combination inserts them both,
+
+ blaah
+ |
+ \l produces
+ <listitem>
+ <para>blaah</para>
+ </listitem>
+
+<LocalLeader>o Insert a tag inside the current one (like vim o) {{{2
+ You are asked for tag and attributes.
+
+ <tag1><tag2><tag3>blaah</tag3></tag2></tag1>
+ |
+ \o produces
+ <tag1>
+ <aftertag><tag2><tag3>blaah</tag3></tag2></aftertag>
+ </tag1>
+
+<LocalLeader>O Insert a tag outside the current one (like vim O) {{{2
+ You are asked for tag and attributes.
+ <tag1><tag2><tag3>blaah</tag3></tag2></tag1>
+ |
+ \O produces
+ <beforetag>
+ <tag1><tag2><tag3>blaah</tag3></tag2></tag1>
+ </beforetag>
+
+<LocalLeader>s Insert an opening tag for an closing tag. {{{2
+ list item content</para></listitem>
+ |
+ pressing \s twice produces
+ <para><listitem>list item content</para></listitem>
+
+<LocalLeader>[ Delete <![CDATA[ ]]> delimiters {{{2
+ Removes Only <CDATA[ and ]]>
+ handy when you want to uncomment a section.
+ You need to stand in the tag and not on an other tag
+ <![CDATA[ <tag> ]]>
+ if you cursor is outside <tag> but inside the
+ CDATA tag the delition works.
+<LocalLeader>{ Delete <![CDATA[ ]]> section {{{2
+ Removes everything tag and Content
+<LocalLeader>] Delete <!-- --> delimiters {{{2
+ Uncommnet a block.
+<LocalLeader>} Delete <!-- --> section {{{2
+ Removes everything tag and Content
+<LocalLeader>> shift right opening tag and closing tag. {{{2
+ shift everything between the tags 1 shiftwide right
+<LocalLeader>< shift left opening tag and closing tag. {{{2
+ shift everything between the tags 1 shiftwide left
+<LocalLeader>c Visual Place a CDATA section around the selected text. {{{2
+ Place Cdata section around the block
+<LocalLeader>< Visual Place a Comment around the selected text. {{{2
+ Place comment around the block
+<LocalLeader>5 Extend the visual selection to the matching tag. {{{2
+<LocalLeader>%
+ Extend the visual selection to the matching tag. Make sure you are at
+ the start of the opening tag or the end of the closing tag.
+<LocalLeader>v Visual Place a tag around the selected text. {{{2
+ - You are asked for tag and attributes. You
+ need to have selected text in visual mode before you can use this
+ mapping. See |visual-mode| for details.
+ Be careful where you place the marks.
+ The top uses append
+ The bottom uses append
+ Useful when marking up a text file
+
+------------------------------------------------------------------------------
+ *xml-plugin-callbacks*
+
+Callback Functions {{{2 ~
+
+A callback function is a function used to customize features on a per tag
+basis. For example say you wish to have a default set of attributs when you
+type an empty tag like this:
+ You type: <tag>
+ You get: <tag default="attributes"></tag>
+
+This is for any script programmers who wish to add xml-plugin support to
+there own filetype plugins.
+
+Callback functions recive one attribute variable which is the tag name. The
+all must return either a string or the number zero. If it returns a string
+the plugin will place the string in the proper location. If it is a zero the
+plugin will ignore and continue as if no callback existed.
+
+The following are implemented callback functions:
+
+HtmlAttribCallback
+ This is used to add default attributes to html tag. It is intended
+ for HTML files only.
+
+XmlAttribCallback
+ This is a generic callback for xml tags intended to add attributes.
+
+ *xml-plugin-html*
+Callback Example {{{2 ~
+
+The following is an example of using XmlAttribCallback in your .vimrc
+>
+ function XmlAttribCallback (xml_tag)
+ if a:xml_tag ==? "my-xml-tag"
+ return "attributes=\"my xml attributes\""
+ else
+ return 0
+ endif
+ endfunction
+<
+The following is a sample html.vim file type plugin you could use:
+>
+ " Vim script file vim600:fdm=marker:
+ " FileType: HTML
+ " Maintainer: Devin Weaver <vim (at) tritarget.com>
+ " Location: http://www.vim.org/scripts/script.php?script_id=301
+
+ " This is a wrapper script to add extra html support to xml documents.
+ " Original script can be seen in xml-plugin documentation.
+
+ " Only do this when not done yet for this buffer
+ if exists("b:did_ftplugin")
+ finish
+ endif
+ " Don't set 'b:did_ftplugin = 1' because that is xml.vim's responsability.
+
+ let b:html_mode = 1
+
+ if !exists("*HtmlAttribCallback")
+ function HtmlAttribCallback( xml_tag )
+ if a:xml_tag ==? "table"
+ return "cellpadding=\"0\" cellspacing=\"0\" border=\"0\""
+ elseif a:xml_tag ==? "link"
+ return "href=\"/site.css\" rel=\"StyleSheet\" type=\"text/css\""
+ elseif a:xml_tag ==? "body"
+ return "bgcolor=\"white\""
+ elseif a:xml_tag ==? "frame"
+ return "name=\"NAME\" src=\"/\" scrolling=\"auto\" noresize"
+ elseif a:xml_tag ==? "frameset"
+ return "rows=\"0,*\" cols=\"*,0\" border=\"0\""
+ elseif a:xml_tag ==? "img"
+ return "src=\"\" width=\"0\" height=\"0\" border=\"0\" alt=\"\""
+ elseif a:xml_tag ==? "a"
+ if has("browse")
+ " Look up a file to fill the href. Used in local relative file
+ " links. typeing your own href before closing the tag with `>'
+ " will override this.
+ let cwd = getcwd()
+ let cwd = substitute (cwd, "\\", "/", "g")
+ let href = browse (0, "Link to href...", getcwd(), "")
+ let href = substitute (href, cwd . "/", "", "")
+ let href = substitute (href, " ", "%20", "g")
+ else
+ let href = ""
+ endif
+ return "href=\"" . href . "\""
+ else
+ return 0
+ endif
+ endfunction
+ endif
+
+ " On to loading xml.vim
+ runtime ftplugin/xml.vim
+<
+
+ vim:tw=78:ts=8:fen:fdm=marker:ft=help:norl:
|
