-*eval.txt* For Vim version 7.0g. Last change: 2006 May 01
+*eval.txt* For Vim version 7.0g. Last change: 2006 May 03
VIM REFERENCE MANUAL by Bram Moolenaar
< There must be no space between the symbol (&/$/*/#) and the
name.
Trailing characters that can't be part of the name are often
- ignored, but don't depend on it.
- Note that the argument must be a string, not the name of the
- variable itself! For example: >
+ ignored, but don't depend on it, it may change in the future!
+ Example: >
+ exists("*strftime()")
+< This currently works, but it should really be: >
+ exists("*strftime")
+
+< Note that the argument must be a string, not the name of the
+ variable itself. For example: >
exists(bufcount)
< This doesn't check for existence of the "bufcount" variable,
but gets the value of "bufcount", and checks if that exists.
-*gui.txt* For Vim version 7.0g. Last change: 2006 Apr 02
+*gui.txt* For Vim version 7.0g. Last change: 2006 May 03
VIM REFERENCE MANUAL by Bram Moolenaar
executed command are still given though. To shut them up too, add a ":silent"
in the executed command: >
:menu <silent> Search.Header :exe ":silent normal /Header\r"<CR>
-<
+"<silent>" may also appear just after "<special>" or "<script>".
+
+ *:menu-<special>* *:menu-special*
+Define a menu with <> notation for special keys, even though the "<" flag
+may appear in 'cpoptions'. This is useful if the side effect of setting
+'cpoptions' is not desired. Example: >
+ :menu <special> Search.Header /Header<CR>
+"<special>" must appear as the very first argument to the ":menu" command or
+just after "<silent>" or "<script>".
+
*:menu-<script>* *:menu-script*
The "to" part of the menu will be inspected for mappings. If you don't want
this, use the ":noremenu" command (or the similar one for a specific mode).
If you do want to use script-local mappings, add "<script>" as the very first
-argument to the ":menu" command or after "<silent>".
+argument to the ":menu" command or just after "<silent>" or "<special>".
*menu-priority*
You can give a priority to a menu. Menus with a higher priority go more to
-*insert.txt* For Vim version 7.0g. Last change: 2006 May 01
+*insert.txt* For Vim version 7.0g. Last change: 2006 May 03
VIM REFERENCE MANUAL by Bram Moolenaar
See below for how the function is called and an example |complete-functions|.
For remarks about specific filetypes see |compl-omni-filetypes|.
+More completion scripts will appear, check www.vim.org. Currently there is a
+first version for C++.
*i_CTRL-X_CTRL-O*
CTRL-X CTRL-O Guess what kind of item is in front of the cursor and
HTML flavor *html-flavor*
-Default HTML completion depends on filetype. For HTML files it is HTML
-4.01 Transitional (&ft=='html'), for XHTML it is XHTML 1.0 Strict
-(&ft=='xhtml').
+The default HTML completion depends on the filetype. For HTML files it is
+HTML 4.01 Transitional ('filetype' is "html"), for XHTML it is XHTML 1.0
+Strict ('filetype' is "xhtml").
-These are not the only HTML versions. To use another data file and still
-have benefits of custom completion for class, style, etc. attributes set
-b:html_omni_flavor variable. Example (in .vimrc or filetype plugin
-file): >
+When doing completion outside of any other tag you will have possibility to
+choose DOCTYPE and the appropriate data file will be loaded and used for all
+next completions.
- let g:html_omni_flavor = 'xhtml10s'
+More about format of data file in |xml-omni-datafile|. Some of the data files
+may be found on the Vim website (|www|).
-(Completion data file for HTML 4.01 Strict is also provided by Vim
-distribution.)
-
-Data for HTML completion will be read from 'autoload/xml/html10s.vim' file
-located somewhere in 'runtimepath'.
-
-Note: HTML completion files are also located in 'autoload/xml'
-directory.
-
-More about format of data file in |xml-omni-datafile|. Some of data
-files may in future be found on vim-online site (|www|).
-
-Note that b:html_omni_flavor may point to file with any XML data. This
-makes possible to mix PHP (|ft-php-omni|) completion with whatever XML
-dialect (assuming you have data file for it).
+Note that b:html_omni_flavor may point to a file with any XML data. This
+makes possible to mix PHP (|ft-php-omni|) completion with any XML dialect
+(assuming you have data file for it). Without setting that variable XHTML 1.0
+Strict will be used.
JAVASCRIPT *ft-javascript-omni*
XML *ft-xml-omni*
-Vim 7 provides mechanism to context aware completion of XML files. It depends
-on special |xml-omni-datafile| and two commands: |:XMLns| and |:XMLent|.
-Features are:
+Vim 7 provides a mechanism for context aware completion of XML files. It
+depends on a special |xml-omni-datafile| and two commands: |:XMLns| and
+|:XMLent|. Features are:
-- after "<" complete tag name depending on context (no div suggest
- inside of an a tag)
-- inside of tag complete proper attributes (no width attribute for an
- a tag)
-- when attribute has limited number of possible values help to complete
+- after "<" complete the tag name, depending on context
+- inside of a tag complete proper attributes
+- when an attribute has a limited number of possible values help to complete
them
-- complete names of entities (defined in |xml-omni-datafile| and in current
- file with "<!ENTITY" declarations
+- complete names of entities (defined in |xml-omni-datafile| and in the
+ current file with "<!ENTITY" declarations)
- when used after "</" CTRL-X CTRL-O will close the last opened tag
Format of XML data file *xml-omni-datafile*
-Vim distribution provides two data files as examples (xhtml10s.vim, xsl.vim)
-
-XML data files are stored in "autoload/xml" directory in 'runtimepath'. They
-have meaningful name which will be used in commands. It should be unique name
-which will not create conflicts in future. For example name xhtml10s.vim means
-it is data file for XHTML 1.0 Strict.
+XML data files are stored in the "autoload/xml" directory in 'runtimepath'.
+Vim distribution provides examples of data files in the
+"$VIMRUNTIME/autoload/xml" directory. They have a meaningful name which will
+be used in commands. It should be a unique name which will not create
+conflicts. For example, the name xhtml10s.vim means it is the data file for
+XHTML 1.0 Strict.
-File contains one variable with fixed name: g:xmldata_xhtml10s . It is
-compound from two parts:
+Each file contains a variable with a name like g:xmldata_xhtml10s . It is
+a compound from two parts:
-1. "g:xmldata_" general prefix
-2. "xhtml10s" name of file and name of described XML dialect
+1. "g:xmldata_" general prefix, constant for all data files
+2. "xhtml10s" the name of the file and the name of the described XML
+ dialect; it will be used as an argument for the |:XMLns|
+ command
Part two must be exactly the same as name of file.
-Variable is data structure in form of |Dictionary|. Keys are tag names and
-values are two element |List|. First element of List is also List with names
-of possible children, second element is |Dictionary| with names of attributes
-as keys and possible values of attributes as values. Example: >
-
- let g:xmldata_crippledhtml = {
- \ "html":
- \ [ ["body", "head"], {"id": [], "xmlns": ["http://www.w3.org/1999/xhtml"],
- \ "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}],
- \ "script":
- \ [ [], {"id": [], "charset": [], "type": ["text/javascript"], "src": [],
- \ "defer": ["BOOL"], "xml:space": ["preserve"]}],
- \ "meta":
- \ [ [], {"id": [], "http-equiv": [], "name": [], "content": [], "scheme":
- \ [], "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}]
- \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]},
+The variable is a |Dictionary|. Keys are tag names and each value is a two
+element |List|. The first element of the List is also a List with the names
+of possible children. The second element is a |Dictionary| with the names of
+attributes as keys and the possible values of attributes as values. Example: >
+
+ let g:xmldata_crippled = {
+ \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"],
+ \ 'vimxmlroot': ['tag1'],
+ \ 'tag1':
+ \ [ ['childoftag1a', 'childoftag1b'], {'attroftag1a': [],
+ \ 'attroftag1b': ['valueofattr1', 'valueofattr2']}],
+ \ 'childoftag1a':
+ \ [ [], {'attrofchild': ['attrofchild']}],
+ \ 'childoftag1b':
+ \ [ ['childoftag1a'], {'attrofchild': []}],
\ "vimxmltaginfo": {
- \ 'meta': ['/>', '']},
- \ "vimxmlattrinfo": {
- \ 'http-equiv': ['ContentType', '']}
-
-This example should be put in "autoload/xml/crippledhtml.vim" file.
-
-In example are visible four special elements:
-
-1. "vimxmlentities" - special key with List containing entities of this XML
+ \ 'tag1': ['Menu info', 'Long information visible in preview window']},
+ \ 'vimxmlattrinfo': {
+ \ 'attrofchild': ['Menu info', 'Long information visible in preview window']}}
+
+This example would be put in the "autoload/xml/crippled.vim" file and could
+help to write this file: >
+
+ <tag1 attroftag1b="valueofattr1">
+ <childoftag1a attrofchild>
+ & <
+ </childoftag1a>
+ <childoftag1b attrofchild="5">
+ <childoftag1a>
+ > ' "
+ </childoftag1a>
+ </childoftag1b>
+ </tag1>
+
+In the example four special elements are visible:
+
+1. "vimxmlentities" - a special key with List containing entities of this XML
dialect.
-2. "BOOL" - value of attribute key showing if attribute should be inserted
- bare ("defer" vs. 'defer="'). It can be the only element of List of
- attribute values.
-3. "vimxmltaginfo" - special key with dictionary containing as key tag names,
- as value two element List for additional menu info and long description.
-4. "vimxmlattrinfo" - special key with dictionary containing as key attribute
- names, as value two element List for additional menu info and long
+2. If the list containing possible values of attributes has one element and
+ this element is equal to the name of the attribute this attribute will be
+ treated as boolean and inserted as 'attrname' and not as 'attrname="'
+3. "vimxmltaginfo" - a special key with a Dictionary containing tag
+ names as keys and two element List as values, for additional menu info and
+ the long description.
+4. "vimxmlattrinfo" - special key with Dictionary containing attribute names
+ as keys and two element List as values, for additional menu info and long
description.
-Note: Tag names in data file MUST not contain namespace description. Check
-xsl.vim for example.
+Note: Tag names in the data file MUST not contain a namespace description.
+Check xsl.vim for an example.
+Note: All data and functions are publicly available as global
+variables/functions and can be used for personal editing functions.
DTD -> Vim *dtd2vim*
-On |www| is script |dtd2vim| which parses DTD and creates XML data file
+On |www| is the script |dtd2vim| which parses DTD and creates an XML data file
for Vim XML omni completion.
dtd2vim: http://www.vim.org/scripts/script.php?script_id=1462
-Check there and beginning of file for details of usage.
-Script requires perl and:
+Check the beginning of that file for usage details.
+The script requires perl and:
perlSGML: http://savannah.nongnu.org/projects/perlsgml
:XMLns {name} [{namespace}] *:XMLns*
-Vim has to know which data file should be used and with which namespace. For
-loading of data file and connecting data with prope namespace use |:XMLns|
-command. First (obligatory) argument is name of data (xhtml10s, xsl). Second
-argument is code of namespace (h, xsl). When used without second argument
-dialect will be used as default - without namespace declaration. For example
-to use XML completion in .xsl files: >
+Vim has to know which data file should be used and with which namespace. For
+loading of the data file and connecting data with the proper namespace use
+|:XMLns| command. The first (obligatory) argument is the name of the data
+(xhtml10s, xsl). The second argument is the code of namespace (h, xsl). When
+used without a second argument the dialect will be used as default - without
+namespace declaration. For example to use XML completion in .xsl files: >
:XMLns xhtml10s
:XMLns xsl xsl
:XMLent {name} *:XMLent*
-By default entities will be completed from data file of default
-namespace. XMLent command should be used in case when there is no
-default namespace: >
+By default entities will be completed from the data file of the default
+namespace. The XMLent command should be used in case when there is no default
+namespace: >
:XMLent xhtml10s
Usage
-While used in situation (after declarations from previous part, | is
+While used in this situation (after declarations from previous part, | is
cursor position): >
<|
-Will complete to appropriate XHTML tag, and in this situation: >
+Will complete to an appropriate XHTML tag, and in this situation: >
<xsl:|
-Will complete to appropriate XSL tag.
+Will complete to an appropriate XSL tag.
-File xmlcomplete.vim provides through |autoload| mechanism
-GetLastOpenTag function which can be used in XML files to get name of
-last open tag with (b:unaryTagsStack has to be defined): >
-
- :echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
+The script xmlcomplete.vim, provided through the |autoload| mechanism,
+has the xmlcomplete#GetLastOpenTag() function which can be used in XML files
+to get the name of the last open tag (b:unaryTagsStack has to be defined): >
+ :echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
-*map.txt* For Vim version 7.0g. Last change: 2006 Apr 30
+*map.txt* For Vim version 7.0g. Last change: 2006 May 03
VIM REFERENCE MANUAL by Bram Moolenaar
1.2 SPECIAL ARGUMENTS *:map-arguments*
-"<buffer>", "<silent>", "<script>", "<expr>" and "<unique>" can be used in any
-order. They must appear right after the command, before any other arguments.
+"<buffer>", "<silent>", "<special>", "<script>", "<expr>" and "<unique>" can
+be used in any order. They must appear right after the command, before any
+other arguments.
*:map-local* *:map-<buffer>* *E224* *E225*
If the first argument to one of these commands is "<buffer>" it will apply to
Using "<silent>" for an abbreviation is possible, but will cause redrawing of
the command line to fail.
+ *:map-<special>* *:map-special*
+Define a mapping with <> notation for special keys, even though the "<" flag
+may appear in 'cpoptions'. This is useful if the side effect of setting
+'cpoptions' is not desired. Example: >
+ :map <special> <F12> /Header<CR>
+<
*:map-<script>* *:map-script*
If the first argument to one of these commands is "<script>" and it is used to
define a new mapping or abbreviation, the mapping will only remap characters
-*options.txt* For Vim version 7.0g. Last change: 2006 May 02
+*options.txt* For Vim version 7.0g. Last change: 2006 May 03
VIM REFERENCE MANUAL by Bram Moolenaar
completion with CTRL-X CTRL-O. |i_CTRL-X_CTRL-O|
See |complete-functions| for an explanation of how the function is
invoked and what it should return.
+ This option is usually set by a filetype plugin.
+ |:filetype-plugin-on|
*'operatorfunc'* *'opfunc'*
:map-<expr> map.txt /*:map-<expr>*
:map-<script> map.txt /*:map-<script>*
:map-<silent> map.txt /*:map-<silent>*
+:map-<special> map.txt /*:map-<special>*
:map-<unique> map.txt /*:map-<unique>*
:map-alt-keys map.txt /*:map-alt-keys*
:map-arguments map.txt /*:map-arguments*
:map-operator map.txt /*:map-operator*
:map-script map.txt /*:map-script*
:map-silent map.txt /*:map-silent*
+:map-special map.txt /*:map-special*
:map-special-chars map.txt /*:map-special-chars*
:map-special-keys map.txt /*:map-special-keys*
:map-undo map.txt /*:map-undo*
:menu gui.txt /*:menu*
:menu-<script> gui.txt /*:menu-<script>*
:menu-<silent> gui.txt /*:menu-<silent>*
+:menu-<special> gui.txt /*:menu-<special>*
:menu-disable gui.txt /*:menu-disable*
:menu-enable gui.txt /*:menu-enable*
:menu-script gui.txt /*:menu-script*
:menu-silent gui.txt /*:menu-silent*
+:menu-special gui.txt /*:menu-special*
:menut mlang.txt /*:menut*
:menutrans mlang.txt /*:menutrans*
:menutranslate mlang.txt /*:menutranslate*
"
" Define Mac-standard keyboard shortcuts.
-" Save and restore compatible mode.
-let s:save_cpo = &cpo
-set cpo&vim
+" We don't change 'cpoptions' here, because it would not be set properly when
+" a .vimrc file is found later. Thus don't use line continuation and use
+" <special> in mappings.
-nnoremap <D-n> :confirm enew<CR>
-vmap <D-n> <Esc><D-n>gv
-imap <D-n> <C-O><D-n>
-cmap <D-n> <C-C><D-n>
-omap <D-n> <Esc><D-n>
+nnoremap <special> <D-n> :confirm enew<CR>
+vmap <special> <D-n> <Esc><D-n>gv
+imap <special> <D-n> <C-O><D-n>
+cmap <special> <D-n> <C-C><D-n>
+omap <special> <D-n> <Esc><D-n>
-nnoremap <D-o> :browse confirm e<CR>
-vmap <D-o> <Esc><D-o>gv
-imap <D-o> <C-O><D-o>
-cmap <D-o> <C-C><D-o>
-omap <D-o> <Esc><D-o>
+nnoremap <special> <D-o> :browse confirm e<CR>
+vmap <special> <D-o> <Esc><D-o>gv
+imap <special> <D-o> <C-O><D-o>
+cmap <special> <D-o> <C-C><D-o>
+omap <special> <D-o> <Esc><D-o>
-nnoremap <silent> <D-w> :if winheight(2) < 0 <Bar>
- \ confirm enew <Bar>
- \ else <Bar>
- \ confirm close <Bar>
- \ endif<CR>
-vmap <D-w> <Esc><D-w>gv
-imap <D-w> <C-O><D-w>
-cmap <D-w> <C-C><D-w>
-omap <D-w> <Esc><D-w>
+nnoremap <silent> <special> <D-w> :if winheight(2) < 0 <Bar> confirm enew <Bar> else <Bar> confirm close <Bar> endif<CR>
+vmap <special> <D-w> <Esc><D-w>gv
+imap <special> <D-w> <C-O><D-w>
+cmap <special> <D-w> <C-C><D-w>
+omap <special> <D-w> <Esc><D-w>
-nnoremap <silent> <D-s> :if expand("%") == ""<Bar>browse confirm w<Bar>
- \ else<Bar>confirm w<Bar>endif<CR>
-vmap <D-s> <Esc><D-s>gv
-imap <D-s> <C-O><D-s>
-cmap <D-s> <C-C><D-s>
-omap <D-s> <Esc><D-s>
+nnoremap <silent> <special> <D-s> :if expand("%") == ""<Bar>browse confirm w<Bar> else<Bar>confirm w<Bar>endif<CR>
+vmap <special> <D-s> <Esc><D-s>gv
+imap <special> <D-s> <C-O><D-s>
+cmap <special> <D-s> <C-C><D-s>
+omap <special> <D-s> <Esc><D-s>
-nnoremap <D-S-s> :browse confirm saveas<CR>
-vmap <D-S-s> <Esc><D-s>gv
-imap <D-S-s> <C-O><D-s>
-cmap <D-S-s> <C-C><D-s>
-omap <D-S-s> <Esc><D-s>
+nnoremap <special> <D-S-s> :browse confirm saveas<CR>
+vmap <special> <D-S-s> <Esc><D-s>gv
+imap <special> <D-S-s> <C-O><D-s>
+cmap <special> <D-S-s> <C-C><D-s>
+omap <special> <D-S-s> <Esc><D-s>
" From the Edit menu of SimpleText:
-nnoremap <D-z> u
-vmap <D-z> <Esc><D-z>gv
-imap <D-z> <C-O><D-z>
-cmap <D-z> <C-C><D-z>
-omap <D-z> <Esc><D-z>
+nnoremap <special> <D-z> u
+vmap <special> <D-z> <Esc><D-z>gv
+imap <special> <D-z> <C-O><D-z>
+cmap <special> <D-z> <C-C><D-z>
+omap <special> <D-z> <Esc><D-z>
-vnoremap <D-x> "+x
+vnoremap <special> <D-x> "+x
-vnoremap <D-c> "+y
+vnoremap <special> <D-c> "+y
-cnoremap <D-c> <C-Y>
+cnoremap <special> <D-c> <C-Y>
-nnoremap <D-v> "+gP
-cnoremap <D-v> <C-R>+
-execute 'vnoremap <script> <D-v>' paste#paste_cmd['v']
-execute 'inoremap <script> <D-v>' paste#paste_cmd['i']
+nnoremap <special> <D-v> "+gP
+cnoremap <special> <D-v> <C-R>+
+execute 'vnoremap <script> <special> <D-v>' paste#paste_cmd['v']
+execute 'inoremap <script> <special> <D-v>' paste#paste_cmd['i']
-nnoremap <silent> <D-a> :if &slm != ""<Bar>exe ":norm gggH<C-O>G"<Bar>
- \ else<Bar>exe ":norm ggVG"<Bar>endif<CR>
-vmap <D-a> <Esc><D-a>
-imap <D-a> <Esc><D-a>
-cmap <D-a> <C-C><D-a>
-omap <D-a> <Esc><D-a>
+nnoremap <silent> <special> <D-a> :if &slm != ""<Bar>exe ":norm gggH<C-O>G"<Bar> else<Bar>exe ":norm ggVG"<Bar>endif<CR>
+vmap <special> <D-a> <Esc><D-a>
+imap <special> <D-a> <Esc><D-a>
+cmap <special> <D-a> <C-C><D-a>
+omap <special> <D-a> <Esc><D-a>
-nnoremap <D-f> /
-vmap <D-f> <Esc><D-f>
-imap <D-f> <Esc><D-f>
-cmap <D-f> <C-C><D-f>
-omap <D-f> <Esc><D-f>
+nnoremap <special> <D-f> /
+vmap <special> <D-f> <Esc><D-f>
+imap <special> <D-f> <Esc><D-f>
+cmap <special> <D-f> <C-C><D-f>
+omap <special> <D-f> <Esc><D-f>
-nnoremap <D-g> n
-vmap <D-g> <Esc><D-g>
-imap <D-g> <C-O><D-g>
-cmap <D-g> <C-C><D-g>
-omap <D-g> <Esc><D-g>
-
-let &cpo = s:save_cpo
+nnoremap <special> <D-g> n
+vmap <special> <D-g> <Esc><D-g>
+imap <special> <D-g> <C-O><D-g>
+cmap <special> <D-g> <C-C><D-g>
+omap <special> <D-g> <Esc><D-g>
" Vim syntax file
" Language: C#
-" Maintainer: Johannes Zellner <johannes@zellner.org>
-" Last Change: Mo, 24 Apr 2006 10:11:07 CEST
+" Maintainer: Anduin Withers <awithers@anduin.com>
+" Former Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: Sun Apr 30 19:26:18 PDT 2006
" Filenames: *.cs
" $Id$
"
" TODO:
syn keyword csUnspecifiedStatement as base checked event fixed in is lock new operator out params ref sizeof stackalloc this typeof unchecked unsafe using
" TODO:
-syn keyword csUnsupportedStatement get set add remove value
+syn keyword csUnsupportedStatement add remove value
" TODO:
syn keyword csUnspecifiedKeyword explicit implicit
+" Contextual Keywords
+syn match csContextualStatement /\<yield[[:space:]\n]\+\(return\|break\)/me=s+5
+syn match csContextualStatement /\<partial[[:space:]\n]\+\(class\|struct\|interface\)/me=s+7
+syn match csContextualStatement /\<\(get\|set\)[[:space:]\n]*{/me=s+3
+syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
" Comments
"
" [1] 9.5 Pre-processing directives
syn region csPreCondit
- \ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\|region\|endregion\)"
+ \ start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)"
\ skip="\\$" end="$" contains=csComment keepend
+syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$"
+ \ end="^\s*#\s*endregion" transparent fold contains=TOP
hi def link csUnspecifiedStatement Statement
hi def link csUnsupportedStatement Statement
hi def link csUnspecifiedKeyword Keyword
+hi def link csContextualStatement Statement
hi def link csOperatorError Error
hi def link csTodo Todo
syn match pythonComment "#.*$" contains=pythonTodo
syn keyword pythonTodo TODO FIXME XXX contained
+" Decorators (new in Python 2.4)
+syn match pythonDecorator "@" display nextgroup=pythonFunction skipwhite
+
" strings
syn region pythonString matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape
syn region pythonString matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape
if exists("python_highlight_builtins")
" builtin functions, types and objects, not really part of the syntax
+ syn keyword pythonBuiltin True False bool enumerate set frozenset help
+ syn keyword pythonBuiltin reversed sorted sum
syn keyword pythonBuiltin Ellipsis None NotImplemented __import__ abs
syn keyword pythonBuiltin apply buffer callable chr classmethod cmp
syn keyword pythonBuiltin coerce compile complex delattr dict dir divmod
syn keyword pythonException StandardError StopIteration SyntaxError
syn keyword pythonException SyntaxWarning SystemError SystemExit TabError
syn keyword pythonException TypeError UnboundLocalError UnicodeError
+ syn keyword pythonException UnicodeEncodeError UnicodeDecodeError
+ syn keyword pythonException UnicodeTranslateError
syn keyword pythonException UserWarning ValueError Warning WindowsError
syn keyword pythonException ZeroDivisionError
endif
HiLink pythonPreCondit PreCondit
HiLink pythonComment Comment
HiLink pythonTodo Todo
+ HiLink pythonDecorator Define
if exists("python_highlight_numbers")
HiLink pythonNumber Number
endif
" Vim syntax file
" Language: VRML97
" Modified from: VRML 1.0C by David Brown <dbrown@cgs.c4.gmeds.com>
-" Maintainer: Gregory Seidman <gseidman@acm.org>
-" URL: http://www.cs.brown.edu/~gss/vim/syntax/vrml.vim
-" Last change: 2003 May 11
+" Maintainer: vacancy!
+" Former Maintainer: Gregory Seidman <gsslist+vim@anthropohedron.net>
+" Last change: 2006 May 03
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version >= 600
"FOLDS!
syn sync fromstart
- setlocal foldmethod=syntax
+ "setlocal foldmethod=syntax
syn region braceFold start="{" end="}" transparent fold contains=TOP
syn region bracketFold start="\[" end="]" transparent fold contains=TOP
syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ fold contains=VRMLSpecial,VRMLjScriptString
char_u *rep_buf = NULL;
garray_T *gap;
- replace_termcodes(rep, &rep_buf, FALSE, FALSE);
+ replace_termcodes(rep, &rep_buf, FALSE, FALSE, FALSE);
if (rep_buf == NULL)
{
/* Can't replace termcodes - try using the string as is */
|| put_eol(fd) == FAIL))
return FAIL;
- /*
- * Wipe out an empty unnamed buffer we started in.
- */
- if (put_line(fd, "if exists('s:wipebuf')") == FAIL)
- return FAIL;
- if (put_line(fd, " exe 'bwipe ' . s:wipebuf") == FAIL)
- return FAIL;
- if (put_line(fd, "endif") == FAIL)
- return FAIL;
- if (put_line(fd, "unlet! s:wipebuf") == FAIL)
- return FAIL;
-
/*
* Restore window sizes again after jumping around in windows, because
* the current window has a minimum size while others may not.
if (nr > 1 && ses_winsizes(fd, restore_size) == FAIL)
return FAIL;
- /* Re-apply 'winheight', 'winwidth' and 'shortmess'. */
- if (fprintf(fd, "set winheight=%ld winwidth=%ld shortmess=%s",
- p_wh, p_wiw, p_shm) < 0 || put_eol(fd) == FAIL)
- return FAIL;
-
/* Don't continue in another tab page when doing only the current one
* or when at the last tab page. */
if (!(ssop_flags & SSOP_TABPAGES) || curtab->tp_next == NULL)
return FAIL;
}
+ /*
+ * Wipe out an empty unnamed buffer we started in.
+ */
+ if (put_line(fd, "if exists('s:wipebuf')") == FAIL)
+ return FAIL;
+ if (put_line(fd, " exe 'bwipe ' . s:wipebuf") == FAIL)
+ return FAIL;
+ if (put_line(fd, "endif") == FAIL)
+ return FAIL;
+ if (put_line(fd, "unlet! s:wipebuf") == FAIL)
+ return FAIL;
+
+ /* Re-apply 'winheight', 'winwidth' and 'shortmess'. */
+ if (fprintf(fd, "set winheight=%ld winwidth=%ld shortmess=%s",
+ p_wh, p_wiw, p_shm) < 0 || put_eol(fd) == FAIL)
+ return FAIL;
/*
* Lastly, execute the x.vim file if it exists.
mapblock_T **map_table;
int unique = FALSE;
int silent = FALSE;
+ int special = FALSE;
#ifdef FEAT_EVAL
int expr = FALSE;
#endif
continue;
}
+ /*
+ * Check for "<special>": accept special keys in <>
+ */
+ if (STRNCMP(keys, "<special>", 9) == 0)
+ {
+ keys = skipwhite(keys + 9);
+ special = TRUE;
+ continue;
+ }
+
#ifdef FEAT_EVAL
/*
* Check for "<script>": remap script-local mappings only
* replace_termcodes() also removes CTRL-Vs and sometimes backslashes.
*/
if (haskey)
- keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE);
+ keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, special);
if (hasarg)
{
if (STRICMP(rhs, "<nop>") == 0) /* "<Nop>" means nothing */
rhs = (char_u *)"";
else
- rhs = replace_termcodes(rhs, &arg_buf, FALSE, TRUE);
+ rhs = replace_termcodes(rhs, &arg_buf, FALSE, TRUE, special);
}
#ifdef FEAT_FKMAP
char_u *buf;
int retval;
- rhs = replace_termcodes(str, &buf, FALSE, TRUE);
+ rhs = replace_termcodes(str, &buf, FALSE, TRUE, FALSE);
if (vim_strchr(modechars, 'n') != NULL)
mode |= NORMAL;
if (wp == curwin || wp == NULL)
return; /* still in the same old window, or none at all */
+#ifdef FEAT_WINDOWS
+ /* Ignore position in the tab pages line. */
+ if (Y_2_ROW(y) < tabline_height())
+ return;
+#endif
+
/*
* format a mouse click on status line input
* ala gui_send_mouse_event(0, x, y, 0, 0);
/* Don't move the mouse when it's left or right of the Vim window */
if (x < 0 || x > Columns * gui.char_width)
return;
+# ifdef FEAT_WINDOWS
+ if (Y_2_ROW(y) >= tabline_height())
+# else
if (y >= 0)
+# endif
wp = xy2win(x, y);
if (wp != curwin && wp != NULL) /* If in other than current window */
{
}
/* Translate key codes like <Esc> */
- str = replace_termcodes((char_u *)buffer, &ptr, FALSE, TRUE);
+ str = replace_termcodes((char_u *)buffer, &ptr, FALSE, TRUE, FALSE);
/* If ptr was set, then a new buffer was allocated,
* so we can free the old one.
{
if (*p_pt)
{
- (void)replace_termcodes(p_pt, &p, TRUE, TRUE);
+ (void)replace_termcodes(p_pt, &p, TRUE, TRUE, FALSE);
if (p != NULL)
{
if (new_value_alloced)
extern void del_termcode __ARGS((char_u *name));
extern void set_mouse_topline __ARGS((win_T *wp));
extern int check_termcode __ARGS((int max_offset, char_u *buf, int buflen));
-extern char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt));
+extern char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special));
extern int find_term_bykeys __ARGS((char_u *src));
extern void show_termcodes __ARGS((void));
extern int show_one_termcode __ARGS((char_u *name, char_u *code, int printit));
static void qf_clean_dir_stack __ARGS((struct dir_stack_T **));
#ifdef FEAT_WINDOWS
static int qf_win_pos_update __ARGS((qf_info_T *qi, int old_qf_index));
+static int is_qf_win __ARGS((win_T *win, qf_info_T *qi));
static win_T *qf_find_win __ARGS((qf_info_T *qi));
static buf_T *qf_find_buf __ARGS((qf_info_T *qi));
static void qf_update_buffer __ARGS((qf_info_T *qi));
int height;
win_T *win;
tabpage_T *prevtab = curtab;
+ buf_T *qf_buf;
if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
{
win_goto(win);
else
{
+ qf_buf = qf_find_buf(qi);
+
/* The current window becomes the previous window afterwards. */
win = curwin;
win->w_llist->qf_refcount++;
}
- (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
- /* switch off 'swapfile' */
- set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
- set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+ if (qf_buf != NULL)
+ /* Use the existing quickfix buffer */
+ (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE,
+ ECMD_HIDE + ECMD_OLDBUF);
+ else
+ {
+ /* Create a new quickfix buffer */
+ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
+ /* switch off 'swapfile' */
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
OPT_LOCAL);
- set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
- set_option_value((char_u *)"diff", 0L, (char_u *)"", OPT_LOCAL);
+ set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
+ set_option_value((char_u *)"diff", 0L, (char_u *)"", OPT_LOCAL);
+ }
/* Only set the height when still in the same tab page and there is no
* window to the side. */
return win != NULL;
}
+/*
+ * Check whether the given window is displaying the specified quickfix/location
+ * list buffer
+ */
+ static int
+is_qf_win(win, qi)
+ win_T *win;
+ qf_info_T *qi;
+{
+ /*
+ * A window displaying the quickfix buffer will have the w_llist_ref field
+ * set to NULL.
+ * A window displaying a location list buffer will have the w_llist_ref
+ * pointing to the location list.
+ */
+ if (bt_quickfix(win->w_buffer))
+ if ((qi == &ql_info && win->w_llist_ref == NULL)
+ || (qi != &ql_info && win->w_llist_ref == qi))
+ return TRUE;
+
+ return FALSE;
+}
+
/*
* Find a window displaying the quickfix/location list 'qi'
+ * Searches in only the windows opened in the current tab.
*/
static win_T *
qf_find_win(qi)
{
win_T *win;
- /*
- * When searching for the quickfix buffer, find a window
- * with w_llist_ref set to NULL.
- * When searching for the location list buffer, find a window
- * with w_llist_ref pointing to the supplied location list.
- */
FOR_ALL_WINDOWS(win)
- if (bt_quickfix(win->w_buffer))
- if ((qi == &ql_info && win->w_llist_ref == NULL)
- || (qi != &ql_info && win->w_llist_ref == qi))
- break;
+ if (is_qf_win(win, qi))
+ break;
return win;
}
/*
- * Find quickfix buffer.
+ * Find a quickfix buffer.
+ * Searches in windows opened in all the tabs.
*/
static buf_T *
qf_find_buf(qi)
qf_info_T *qi;
{
+ tabpage_T *tp;
win_T *win;
- win = qf_find_win(qi);
+ FOR_ALL_TAB_WINDOWS(tp, win)
+ if (is_qf_win(win, qi))
+ return win->w_buffer;
- return (win != NULL) ? win->w_buffer: NULL;
+ return NULL;
}
/*
continue; /* empty or blank line */
rline[l] = NUL;
- /* Convert from "=encoding={encoding}" to 'encoding' when needed. */
+ /* Convert from "/encoding={encoding}" to 'encoding' when needed. */
vim_free(pc);
#ifdef FEAT_MBYTE
if (spin->si_conv.vc_type != CONV_NONE)
char_u *enc;
/* Setup for conversion to 'encoding'. */
- line += 10;
+ line += 9;
enc = enc_canonize(line);
if (enc != NULL && !spin->si_ascii
&& convert_setup(&spin->si_conv, enc,
* nothing). When 'cpoptions' does not contain 'B', a backslash can be used
* instead of a CTRL-V.
*/
- char_u *
-replace_termcodes(from, bufp, from_part, do_lt)
+ char_u *
+replace_termcodes(from, bufp, from_part, do_lt, special)
char_u *from;
char_u **bufp;
int from_part;
int do_lt; /* also translate <lt> */
+ int special; /* always accept <key> notation */
{
int i;
int slen;
char_u *result; /* buffer for resulting string */
do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL);
- do_special = (vim_strchr(p_cpo, CPO_SPECI) == NULL);
+ do_special = (vim_strchr(p_cpo, CPO_SPECI) == NULL) || special;
do_key_code = (vim_strchr(p_cpo, CPO_KEYCODE) == NULL);
/*
*/
#define VIM_VERSION_NODOT "vim70g"
#define VIM_VERSION_SHORT "7.0g"
-#define VIM_VERSION_MEDIUM "7.0g-01 BETA"
-#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0g01 BETA (2006 May 2)"
-#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0g01 BETA (2006 May 2, compiled "
+#define VIM_VERSION_MEDIUM "7.0g02 BETA"
+#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0g02 BETA (2006 May 3)"
+#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0g02 BETA (2006 May 3, compiled "
int sline, line_size;
int space;
int did_below = FALSE;
+ int old_height = wp->w_height;
#define FRACTION_MULT 16384L
/* Don't want a negative height. Happens when splitting a tiny window.
}
else
{
- space = height;
+ space = height - 1;
+
while (lnum > 1)
{
+ /* When using "~" lines stop when at the old topline, don't
+ * scroll down. */
+ if (did_below && height < old_height && lnum <= wp->w_topline)
+ sline = 0;
+
space -= line_size;
if (space > 0 && sline <= 0 && !did_below)
{