summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2006-02-14 22:29:30 +0000
committerBram Moolenaar <Bram@vim.org>2006-02-14 22:29:30 +0000
commit1d2ba7fa851f988ea9eab47b7662be243f85ddfa (patch)
tree5882ec62c5c5c6047021a94e74e4797139944a95 /runtime
parentf52c725c4739f2d3368029d67218d6cae0d87995 (diff)
downloadvim-1d2ba7fa851f988ea9eab47b7662be243f85ddfa.zip
updated for version 7.0197
Diffstat (limited to 'runtime')
-rw-r--r--runtime/autoload/htmlcomplete.vim146
-rw-r--r--runtime/autoload/javascriptcomplete.vim55
-rw-r--r--runtime/autoload/xmlcomplete.vim82
-rw-r--r--runtime/doc/autocmd.txt3
-rw-r--r--runtime/doc/change.txt27
-rw-r--r--runtime/doc/eval.txt55
-rw-r--r--runtime/doc/gui.txt5
-rw-r--r--runtime/doc/insert.txt109
-rw-r--r--runtime/doc/options.txt48
-rw-r--r--runtime/doc/os_dos.txt6
-rw-r--r--runtime/doc/pattern.txt4
-rw-r--r--runtime/doc/quickref.txt3
-rw-r--r--runtime/doc/starting.txt5
-rw-r--r--runtime/doc/tags7
-rw-r--r--runtime/doc/term.txt4
-rw-r--r--runtime/doc/tips.txt57
-rw-r--r--runtime/doc/todo.txt151
-rw-r--r--runtime/doc/usr_41.txt2
-rw-r--r--runtime/doc/version7.txt12
-rw-r--r--runtime/indent/vhdl.vim36
20 files changed, 508 insertions, 309 deletions
diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim
index a6295373e..0b4bc5fd8 100644
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -41,7 +41,7 @@ function! htmlcomplete#CompleteTags(findstart, base)
let start = col('.') - 1
let b:jscompl = 1
let b:jsrange = [scriptstart, scriptend]
- while start >= 0 && line[start - 1] =~ '\w'
+ while start >= 0 && line[start - 1] =~ '\k'
let start -= 1
endwhile
" We are inside of <script> tag. But we should also get contents
@@ -102,7 +102,7 @@ function! htmlcomplete#CompleteTags(findstart, base)
" completion will be badly reported
if b:compl_context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
let start = col('.') - 1
- while start >= 0 && line[start - 1] =~ '\w'
+ while start >= 0 && line[start - 1] =~ '\k'
let start -= 1
endwhile
endif
@@ -178,13 +178,6 @@ function! htmlcomplete#CompleteTags(findstart, base)
endif
endif
- " Set attribute groups
- let coreattrs = ["id", "class", "style", "title"]
- let i18n = ["lang", "xml:lang", "dir=\"ltr\" ", "dir=\"rtl\" "]
- let events = ["onclick", "ondblclick", "onmousedown", "onmouseup", "onmousemove",
- \ "onmouseover", "onmouseout", "onkeypress", "onkeydown", "onkeyup"]
- let focus = ["accesskey", "tabindex", "onfocus", "onblur"]
- let coregroup = coreattrs + i18n + events
" If context contains > it means we are already outside of tag and we
" should abandon action
" If context contains white space it is attribute.
@@ -403,12 +396,11 @@ function! htmlcomplete#CompleteTags(findstart, base)
" 3. Proper call for javascriptcomplete#CompleteJS
call cursor(l,c)
- let js_context = matchstr(a:base, '\w\+$')
+ let js_context = matchstr(a:base, '\k\+$')
let js_shortcontext = substitute(a:base, js_context.'$', '', '')
let b:compl_context = context
let b:jsrange = [l, l]
unlet! l c
- "return map(javascriptcomplete#CompleteJS(0, js_context), 'js_shortcontext.v:val')
return javascriptcomplete#CompleteJS(0, js_context)
endif
@@ -501,95 +493,44 @@ function! htmlcomplete#CompleteTags(findstart, base)
" Attribute completion {{{
" Shorten context to not include last word
let sbase = matchstr(context, '.*\ze\s.*')
- if tag =~ '^\(abbr\|acronym\|address\|b\|bdo\|big\|caption\|cite\|code\|dd\|dfn\|div\|dl\|dt\|em\|fieldset\|h\d\|hr\|i\|kbd\|li\|noscript\|ol\|p\|samp\|small\|span\|strong\|sub\|sup\|tt\|ul\|var\)$'
- let attrs = coregroup
- elseif tag == 'a'
- let attrs = coregroup + focus + ["charset", "type", "name", "href", "hreflang", "rel", "rev", "shape", "coords"]
- elseif tag == 'area'
- let attrs = coregroup + focus + ["shape", "coords", "href", "nohref", "alt"]
- elseif tag == 'base'
- let attrs = ["href", "id"]
- elseif tag == 'blockquote'
- let attrs = coregroup + ["cite"]
- elseif tag == 'body'
- let attrs = coregroup + ["onload", "onunload"]
- elseif tag == 'br'
- let attrs = coreattrs
- elseif tag == 'button'
- let attrs = coregroup + focus + ["name", "value", "type"]
- elseif tag == '^\(col\|colgroup\)$'
- let attrs = coregroup + ["span", "width", "align", "char", "charoff", "valign"]
- elseif tag =~ '^\(del\|ins\)$'
- let attrs = coregroup + ["cite", "datetime"]
- elseif tag == 'form'
- let attrs = coregroup + ["action", "method=\"get\" ", "method=\"post\" ", "enctype", "onsubmit", "onreset", "accept", "accept-charset"]
- elseif tag == 'head'
- let attrs = i18n + ["id", "profile"]
- elseif tag == 'html'
- let attrs = i18n + ["id", "xmlns"]
- elseif tag == 'img'
- let attrs = coregroup + ["src", "alt", "longdesc", "height", "width", "usemap", "ismap"]
- elseif tag == 'input'
- let attrs = coregroup + ["type", "name", "value", "checked", "disabled", "readonly", "size", "maxlength", "src", "alt", "usemap", "onselect", "onchange", "accept"]
- elseif tag == 'label'
- let attrs = coregroup + ["for", "accesskey", "onfocus", "onblur"]
- elseif tag == 'legend'
- let attrs = coregroup + ["accesskey"]
- elseif tag == 'link'
- let attrs = coregroup + ["charset", "href", "hreflang", "type", "rel", "rev", "media"]
- elseif tag == 'map'
- let attrs = i18n + events + ["id", "class", "style", "title", "name"]
- elseif tag == 'meta'
- let attrs = i18n + ["id", "http-equiv", "content", "scheme", "name"]
- elseif tag == 'title'
- let attrs = i18n + ["id"]
- elseif tag == 'object'
- let attrs = coregroup + ["declare", "classid", "codebase", "data", "type", "codetype", "archive", "standby", "height", "width", "usemap", "name", "tabindex"]
- elseif tag == 'optgroup'
- let attrs = coregroup + ["disbled", "label"]
- elseif tag == 'option'
- let attrs = coregroup + ["disbled", "selected", "value", "label"]
- elseif tag == 'param'
- let attrs = ["id", "name", "value", "valuetype", "type"]
- elseif tag == 'pre'
- let attrs = coregroup + ["xml:space"]
- elseif tag == 'q'
- let attrs = coregroup + ["cite"]
- elseif tag == 'script'
- let attrs = ["id", "charset", "type=\"text/javascript\"", "type", "src", "defer", "xml:space"]
- elseif tag == 'select'
- let attrs = coregroup + ["name", "size", "multiple", "disabled", "tabindex", "onfocus", "onblur", "onchange"]
- elseif tag == 'style'
- let attrs = coreattrs + ["id", "type=\"text/css\"", "type", "media", "title", "xml:space"]
- elseif tag == 'table'
- let attrs = coregroup + ["summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding"]
- elseif tag =~ '^\(thead\|tfoot\|tbody\|tr\)$'
- let attrs = coregroup + ["align", "char", "charoff", "valign"]
- elseif tag == 'textarea'
- let attrs = coregroup + ["name", "rows", "cols", "disabled", "readonly", "onselect", "onchange"]
- elseif tag =~ '^\(th\|td\)$'
- let attrs = coregroup + ["abbr", "headers", "scope", "rowspan", "colspan", "align", "char", "charoff", "valign"]
- else
- return []
+
+ " Load data {{{
+ if !exists("g:xmldata_xhtml10s")
+ runtime! autoload/xml/xhtml10s.vim
endif
+ " }}}
+ "
+ let attrs = keys(g:xmldata_xhtml10s[tag][1])
for m in sort(attrs)
if m =~ '^'.attr
- if m =~ '^\(ismap\|defer\|declare\|nohref\|checked\|disabled\|selected\|readonly\)$' || m =~ '='
- call add(res, m)
- else
- call add(res, m.'="')
- endif
+ call add(res, m)
elseif m =~ attr
- if m =~ '^\(ismap\|defer\|declare\|nohref\|checked\|disabled\|selected\|readonly\)$' || m =~ '='
- call add(res2, m)
- else
- call add(res2, m.'="')
- endif
+ call add(res2, m)
endif
endfor
-
- return res + res2
+ let menu = res + res2
+ if has_key(g:xmldata_xhtml10s, 'vimxmlattrinfo')
+ let final_menu = []
+ for i in range(len(menu))
+ let item = menu[i]
+ if has_key(g:xmldata_xhtml10s['vimxmlattrinfo'], item)
+ let m_menu = g:xmldata_xhtml10s['vimxmlattrinfo'][item][0]
+ let m_info = g:xmldata_xhtml10s['vimxmlattrinfo'][item][1]
+ if m_menu !~ 'Bool'
+ let item .= '="'
+ endif
+ else
+ let m_menu = ''
+ let m_info = ''
+ let item .= '="'
+ endif
+ let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
+ endfor
+ else
+ let final_menu = map(menu, 'v:val."=\""')
+ endif
+ return final_menu
endif
" }}}
@@ -625,8 +566,25 @@ function! htmlcomplete#CompleteTags(findstart, base)
call add(res2, m)
endif
endfor
+ let menu = res + res2
+ if has_key(g:xmldata_xhtml10s, 'vimxmltaginfo')
+ let final_menu = []
+ for i in range(len(menu))
+ let item = menu[i]
+ if has_key(g:xmldata_xhtml10s['vimxmltaginfo'], item)
+ let m_menu = g:xmldata_xhtml10s['vimxmltaginfo'][item][0]
+ let m_info = g:xmldata_xhtml10s['vimxmltaginfo'][item][1]
+ else
+ let m_menu = ''
+ let m_info = ''
+ endif
+ let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
+ endfor
+ else
+ let final_menu = menu
+ endif
+ return final_menu
- return res + res2
" }}}
endif
diff --git a/runtime/autoload/javascriptcomplete.vim b/runtime/autoload/javascriptcomplete.vim
index 0163fd9b7..87e40f36d 100644
--- a/runtime/autoload/javascriptcomplete.vim
+++ b/runtime/autoload/javascriptcomplete.vim
@@ -12,7 +12,7 @@ function! javascriptcomplete#CompleteJS(findstart, base)
let compl_begin = col('.') - 2
" Bit risky but JS is rather limited language and local chars shouldn't
" fint way into names
- while start >= 0 && line[start - 1] =~ '\w'
+ while start >= 0 && line[start - 1] =~ '\k'
let start -= 1
endwhile
let b:compl_context = getline('.')[0:compl_begin]
@@ -120,17 +120,17 @@ function! javascriptcomplete#CompleteJS(findstart, base)
let stris = striprop + strimeth
" User created properties
- let user_props1 = filter(copy(file), 'v:val =~ "this\\.\\w"')
+ let user_props1 = filter(copy(file), 'v:val =~ "this\\.\\k"')
let juser_props1 = join(user_props1, ' ')
let user_props1 = split(juser_props1, '\zethis\.')
unlet! juser_props1
- call map(user_props1, 'matchstr(v:val, "this\\.\\zs\\w\\+\\ze")')
+ call map(user_props1, 'matchstr(v:val, "this\\.\\zs\\k\\+\\ze")')
- let user_props2 = filter(copy(file), 'v:val =~ "\\.prototype\\.\\w"')
+ let user_props2 = filter(copy(file), 'v:val =~ "\\.prototype\\.\\k"')
let juser_props2 = join(user_props2, ' ')
let user_props2 = split(juser_props2, '\zeprototype\.')
unlet! juser_props2
- call map(user_props2, 'matchstr(v:val, "prototype\\.\\zs\\w\\+\\ze")')
+ call map(user_props2, 'matchstr(v:val, "prototype\\.\\zs\\k\\+\\ze")')
let user_props = user_props1 + user_props2
" HTML DOM properties
@@ -394,11 +394,11 @@ function! javascriptcomplete#CompleteJS(findstart, base)
" for regexp "= /re/"
" 4. Make correction for Microsoft.XMLHTTP ActiveXObject
" 5. Repeat for external files
- let object = matchstr(shortcontext, '\zs\w\+\ze\(\[.\{-}\]\)\?\.$')
+ let object = matchstr(shortcontext, '\zs\k\+\ze\(\[.\{-}\]\)\?\.$')
if len(object) > 0
let decl_line = search(object.'.\{-}=\s*new\s*', 'bn')
if decl_line > 0
- let object_type = matchstr(getline(decl_line), object.'.\{-}=\s*new\s*\zs\w\+\ze')
+ let object_type = matchstr(getline(decl_line), object.'.\{-}=\s*new\s*\zs\k\+\ze')
if object_type == 'ActiveXObject' && matchstr(getline(decl_line), object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != ''
let object_type = 'XMLHttpRequest'
endif
@@ -413,7 +413,7 @@ function! javascriptcomplete#CompleteJS(findstart, base)
if decl_line == 0 && exists("b:js_extfiles")
let dext_line = filter(copy(b:js_extfiles), 'v:val =~ "'.object.'.\\{-}=\\s*new\\s*"')
if len(dext_line) > 0
- let object_type = matchstr(dext_line[-1], object.'.\{-}=\s*new\s*\zs\w\+\ze')
+ let object_type = matchstr(dext_line[-1], object.'.\{-}=\s*new\s*\zs\k\+\ze')
if object_type == 'ActiveXObject' && matchstr(dext_line[-1], object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != ''
let object_type = 'XMLHttpRequest'
endif
@@ -532,7 +532,7 @@ function! javascriptcomplete#CompleteJS(findstart, base)
" constructs like: var var1, var2, var3 = "something";
for i in range(len(variables))
let comma_separated = split(variables[i], ',\s*')
- call map(comma_separated, 'matchstr(v:val, "\\w\\+")')
+ call map(comma_separated, 'matchstr(v:val, "\\k\\+")')
let vars += comma_separated
endfor
@@ -540,11 +540,11 @@ function! javascriptcomplete#CompleteJS(findstart, base)
unlet! vars
" Add "no var" variables.
- let undeclared_variables = filter(copy(file), 'v:val =~ "^\\s*\\w\\+\\s*="')
+ let undeclared_variables = filter(copy(file), 'v:val =~ "^\\s*\\k\\+\\s*="')
let u_vars = []
for i in range(len(undeclared_variables))
let split_equal = split(undeclared_variables[i], '\s*=')
- call map(split_equal, 'matchstr(v:val, "\\w\\+$")')
+ call map(split_equal, 'matchstr(v:val, "\\k\\+$")')
let u_vars += split_equal
endfor
@@ -554,10 +554,20 @@ function! javascriptcomplete#CompleteJS(findstart, base)
" Get functions
let functions = filter(copy(file), 'v:val =~ "^\\s*function\\s"')
let arguments = copy(functions)
- call map(functions, 'matchstr(v:val, "^\\s*function\\s\\+\\zs\\w\\+")')
+ call map(functions, 'matchstr(v:val, "^\\s*function\\s\\+\\zs\\k\\+")')
call map(functions, 'v:val."("')
let functions = sort(functions)
+ " Create table to keep arguments for additional 'menu' info
+ let b:js_menuinfo = {}
+ for i in arguments
+ let g:ia = i
+ let f_elements = matchlist(i, 'function\s\+\(\k\+\)\s*(\(.\{-}\))')
+ if len(f_elements) == 3
+ let b:js_menuinfo[f_elements[1].'('] = f_elements[2]
+ endif
+ endfor
+
" Get functions arguments
call map(arguments, 'matchstr(v:val, "function.\\{-}(\\zs.\\{-}\\ze)")')
let jargs = join(arguments, ',')
@@ -590,7 +600,26 @@ function! javascriptcomplete#CompleteJS(findstart, base)
endif
endfor
- return res + res2
+ let menu = res + res2
+ let final_menu = []
+ for i in range(len(menu))
+ let item = menu[i]
+ if item =~ '($'
+ let kind = 'f'
+ if has_key(b:js_menuinfo, item)
+ let m_info = b:js_menuinfo[item]
+ else
+ let m_info = ''
+ endif
+ else
+ let kind = 'v'
+ let m_info = ''
+ endif
+ let final_menu += [{'word':item, 'menu':m_info, 'kind':kind}]
+ endfor
+ let g:fm = final_menu
+ return final_menu
+
endfunction
" vim:set foldmethod=marker:
diff --git a/runtime/autoload/xmlcomplete.vim b/runtime/autoload/xmlcomplete.vim
index 0d104a0e9..22e81a4d9 100644
--- a/runtime/autoload/xmlcomplete.vim
+++ b/runtime/autoload/xmlcomplete.vim
@@ -230,25 +230,42 @@ function! xmlcomplete#CompleteTags(findstart, base)
for m in sort(attrs)
if m =~ '^'.attr
- if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m][0] =~ '^BOOL$'
- call add(res, m)
- elseif m =~ '='
- call add(res, m)
+ call add(res, m)
+ elseif m =~ attr
+ call add(res2, m)
+ endif
+ endfor
+ let menu = res + res2
+ let final_menu = []
+ if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, 'vimxmlattrinfo')
+ for i in range(len(menu))
+ let item = menu[i]
+ if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'], item)
+ let m_menu = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'][item][0]
+ let m_info = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'][item][1]
else
- call add(res, m.'="')
+ let m_menu = ''
+ let m_info = ''
endif
- elseif m =~ attr
- if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m][0] =~ '^BOOL$'
- call add(res, m)
- elseif m =~ '='
- call add(res, m)
+ if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
+ let item = item
else
- call add(res2, m.'="')
+ let item .= '="'
endif
- endif
- endfor
-
- return res + res2
+ let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
+ endfor
+ else
+ for i in range(len(menu))
+ let item = menu[i]
+ if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
+ let item = item
+ else
+ let item .= '="'
+ endif
+ let final_menu += [item]
+ endfor
+ endif
+ return final_menu
endif
" Close tag
@@ -308,21 +325,36 @@ function! xmlcomplete#CompleteTags(findstart, base)
let tags = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[opentag][0]
let context = substitute(context, '^\k*:', '', '')
- if b:xml_namespace == 'DEFAULT'
- let b:xml_namespace = ''
- else
- let b:xml_namespace .= ':'
- endif
-
for m in tags
if m =~ '^'.context
- call add(res, b:xml_namespace.m)
+ call add(res, m)
elseif m =~ context
- call add(res2, b:xml_namespace.m)
+ call add(res2, m)
endif
endfor
-
- return res + res2
+ let menu = res + res2
+ if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, 'vimxmltaginfo')
+ let final_menu = []
+ for i in range(len(menu))
+ let item = menu[i]
+ if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'], item)
+ let m_menu = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'][item][0]
+ let m_info = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'][item][1]
+ else
+ let m_menu = ''
+ let m_info = ''
+ endif
+ if b:xml_namespace == 'DEFAULT'
+ let xml_namespace = ''
+ else
+ let xml_namespace = b:xml_namespace.':'
+ endif
+ let final_menu += [{'word':xml_namespace.item, 'menu':m_menu, 'info':m_info}]
+ endfor
+ else
+ let final_menu = menu
+ endif
+ return final_menu
endif
endfunction
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index f545fafdc..3688cdae3 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt* For Vim version 7.0aa. Last change: 2006 Feb 09
+*autocmd.txt* For Vim version 7.0aa. Last change: 2006 Feb 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -471,6 +471,7 @@ CursorHoldI Just like CursorHold, but in Insert mode.
CursorMoved After the cursor was moved in Normal mode.
Not triggered when there is typeahead or when
an operator is pending.
+ For an example see |match-parens|.
Careful: Don't do anything that the user does
not expect or that is slow.
*CursorMovedI*
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 676da4bf1..b5283bc1a 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt* For Vim version 7.0aa. Last change: 2005 Dec 16
+*change.txt* For Vim version 7.0aa. Last change: 2006 Feb 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1168,12 +1168,18 @@ The next three commands always work on whole lines.
*gq*
gq{motion} Format the lines that {motion} moves over.
- If 'formatprg' is empty formatting is done internally
- and the 'textwidth' option controls the length of each
- formatted line (see below).
+ Formatting is done with one of three methods:
+ 1. If 'formatexpr' is not empty the expression is
+ evaluated. This can differ for each buffer.
+ 2. If 'formatprg' is not mepty an external program
+ is used.
+ 3. Otherise formatting is done internally.
+
+ In the third case the 'textwidth' option controls the
+ length of each formatted line (see below).
If the 'textwidth' option is 0, the formatted line
length is the screen width (with a maximum width of
- 79). {not in Vi}
+ 79).
The 'formatoptions' option controls the type of
formatting |fo-table|.
The cursor is left on the first non-blank of the last
@@ -1193,8 +1199,8 @@ gqq Format the current line. {not in Vi}
*gw*
gw{motion} Format the lines that {motion} moves over. Similar to
|gq| but puts the cursor back at the same position in
- the text. However, 'formatprg' is not used.
- {not in Vi}
+ the text. However, 'formatprg' and 'formatexpr' are
+ not used. {not in Vi}
gwgw *gwgw* *gww*
gww Format the current line as with "gw". {not in Vi}
@@ -1225,9 +1231,10 @@ white space!).
The 'joinspaces' option is used when lines are joined together.
-You can set the 'formatprg' option to the name of an external program for Vim
-to use for text formatting. The 'textwidth' and other options have no effect
-on formatting by an external program.
+You can set the 'formatexpr' option to an expression or the 'formatprg' option
+to the name of an external program for Vim to use for text formatting. The
+'textwidth' and other options have no effect on formatting by an external
+program.
*right-justify*
There is no command in Vim to right justify text. You can do it with
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 5364f60b1..0f339e111 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 7.0aa. Last change: 2006 Feb 10
+*eval.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1203,6 +1203,7 @@ v:count The count given for the last Normal mode command. Can be used
:map _x :<C-U>echo "the count is " . v:count<CR>
< Note: The <C-U> is required to remove the line range that you
get when typing ':' after a count.
+ Also used for evaluating the 'formatexpr' option.
"count" also works, for backwards compatibility.
*v:count1* *count1-variable*
@@ -1624,6 +1625,7 @@ nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
nr2char( {expr}) String single char with ASCII value {expr}
prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum}
printf( {fmt}, {expr1}...) String format text
+pumvisible() Number whether popup menu is visible
range( {expr} [, {max} [, {stride}]])
List items from {expr} to {max}
readfile({fname} [, {binary} [, {max}]])
@@ -1647,6 +1649,10 @@ searchdecl({name} [, {global} [, {thisblock}]])
Number search for variable declaration
searchpair( {start}, {middle}, {end} [, {flags} [, {skip}]])
Number search for other end of start/end pair
+searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip}]])
+ List search for other end of start/end pair
+searchpos( {pattern} [, {flags}])
+ List search for {pattern}
server2client( {clientid}, {string})
Number send reply string
serverlist() String get a list of available servers
@@ -3471,6 +3477,15 @@ nr2char({expr}) *nr2char()*
characters. nr2char(0) is a real NUL and terminates the
string, thus results in an empty string.
+prevnonblank({lnum}) *prevnonblank()*
+ Return the line number of the first line at or above {lnum}
+ that is not blank. Example: >
+ let ind = indent(prevnonblank(v:lnum - 1))
+< When {lnum} is invalid or there is no non-blank line at or
+ above it, zero is returned.
+ Also see |nextnonblank()|.
+
+
printf({fmt}, {expr1} ...) *printf()*
Return a String with {fmt}, where "%" items are replaced by
the formatted form of their respective arguments. Example: >
@@ -3598,13 +3613,10 @@ printf({fmt}, {expr1} ...) *printf()*
arguments an error is given. Up to 18 arguments can be used.
-prevnonblank({lnum}) *prevnonblank()*
- Return the line number of the first line at or above {lnum}
- that is not blank. Example: >
- let ind = indent(prevnonblank(v:lnum - 1))
-< When {lnum} is invalid or there is no non-blank line at or
- above it, zero is returned.
- Also see |nextnonblank()|.
+pumvisible() *pumvisible()*
+ Returns non-zero when the popup menu is visible, zero
+ otherwise. See |ins-completion-menu|.
+
*E726* *E727*
range({expr} [, {max} [, {stride}]]) *range()*
@@ -3714,9 +3726,9 @@ remote_send({server}, {string} [, {idvar}])
Send the {string} to {server}. The string is sent as input
keys and the function returns immediately. At the Vim server
the keys are not mapped |:map|.
- If {idvar} is present, it is taken as the name of a
- variable and a {serverid} for later use with
- remote_read() is stored there.
+ If {idvar} is present, it is taken as the name of a variable
+ and a {serverid} for later use with remote_read() is stored
+ there.
See also |clientserver| |RemoteReply|.
This function is not available in the |sandbox|.
{only available when compiled with the |+clientserver| feature}
@@ -3920,6 +3932,27 @@ searchpair({start}, {middle}, {end} [, {flags} [, {skip}]])
:echo searchpair('{', '', '}', 'bW',
\ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
<
+ *searchpairpos()*
+searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}]])
+ Same as searchpair(), but returns a List with the line and
+ column position of the match. The first element of the List is
+ the line number and the second element is the byte index of
+ the column position of the match. If no match is found,
+ returns [0, 0].
+>
+ :let [lnum,col] = searchpairpos('{', '', '}', 'n')
+<
+ See |match-parens| for a bigger and more useful example.
+
+searchpos({pattern} [, {flags}]) *searchpos()*
+ Same as search(), but returns a List with the line and column
+ position of the match. The first element of the List is the
+ line number and the second element is the byte index of the
+ column position of the match. If no match is found, returns
+ [0, 0].
+>
+ :let [lnum,col] = searchpos('mypattern', 'n')
+<
server2client( {clientid}, {string}) *server2client()*
Send a reply string to {clientid}. The most recent {clientid}
that sent a string can be retrieved with expand("<client>").
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index ea87249a1..066cfd496 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt* For Vim version 7.0aa. Last change: 2005 Aug 07
+*gui.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -37,7 +37,8 @@ The X11 version of Vim can run both in GUI and in non-GUI mode. See
*gui-init* *gvimrc* *.gvimrc* *_gvimrc*
When the GUI starts up initializations are carried out, in this order:
-- The termcap options are reset to their default value for the GUI.
+- The 'term' option is set to "builgin_gui" and terminal options are reset to
+ their default value for the GUI |terminal-options|.
- If the system menu file exists, it is sourced. The name of this file is
normally "$VIMRUNTIME/menu.vim". You can check this with ":version". Also
see |$VIMRUNTIME|. To skip loading the system menu include 'M' in
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 74c2c5861..450f6670f 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt* For Vim version 7.0aa. Last change: 2006 Feb 10
+*insert.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -126,8 +126,10 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R*
'=' the expression register: you are prompted to
enter an expression (see |expression|)
Note that 0x80 (128 decimal) is used for
- special keys, use CTRL-R CTRL-R to insert it
- literally.
+ special keys. E.g., you can use this to move
+ the cursor up:
+ CTRL-R ="\<Up>"
+ Use CTRL-R CTRL-R to insert text literally.
See |registers| about registers. {not in Vi}
CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
@@ -422,7 +424,7 @@ When 'textwidth' and 'wrapmargin' are both set, 'textwidth' is used.
If you don't really want to break the line, but view the line wrapped at a
convenient place, see the 'linebreak' option.
-The line is only broken automatically when using insert mode, or when
+The line is only broken automatically when using Insert mode, or when
appending to a line. When in replace mode and the line length is not
changed, the line will not be broken.
@@ -438,6 +440,10 @@ characters to the 'formatoptions' option:
current insert command. Only differs from "l" when entering non-white
characters while crossing the 'textwidth' boundary.
+Normally an internal function will be used to decide where to break the line.
+If you want to do it in a different way set the 'formatexpr' option to an
+expression that will take care of the line break.
+
If you want to format a block of text, you can use the "gq" operator. Type
"gq" and a movement command to move the cursor to the end of the block. In
many cases, the command "gq}" will do what you want (format until the end of
@@ -622,8 +628,8 @@ CTRL-X CTRL-L Search backwards for a line that starts with the
the cursor. Indent is ignored. The matching line is
inserted in front of the cursor.
The 'complete' option is used to decide which buffers
- are searched for a match. Only loaded buffers are
- used.
+ are searched for a match. Both loaded and unloaded
+ buffers are used.
CTRL-L or
CTRL-P Search backwards for next matching line. This line
replaces the previous matching line.
@@ -1071,25 +1077,37 @@ The menu is used when:
- The terminal supports at least 8 colors.
- There are at least two matches.
-While the menu is displayed these keys have a special meaning:
-<CR> and <Enter> Accept the currently selected match
+There are two states:
+1. A complete match has been inserted.
+2. Only part of a match has been inserted.
-<PageUp> Select a match several entries back
-<PageDown> Select a match several entries further
+When "longest" is in 'completeopt' and there is more than one match you start
+in the second state.
+
+In the first state these keys have a special meaning:
+<BS> and CTRL-H Delete one character, find the matches for the word before
+ the cursor. This reduces the list of matches, often to one
+ entry. Switches to the second state.
+In the second state these keys have a special meaning:
<BS> and CTRL-H Delete one character, find the matches for the shorter word
before the cursor. This may find more matches.
CTRL-L Add one character from the current match, may reduce the
- number of matches. Does not work after selecting one of the
- matches with CTRL-N, <Up>, etc.
+ number of matches.
+any printable character: Add this character and reduce the number of matches.
+
+In both states these can be used:
+<CR> and <Enter> Accept the currently selected match
+<PageUp> Select a match several entries back
+<PageDown> Select a match several entries further
<Up> Select the previous match, as if CTRL-P was used, but don't
- insert it when editing the selection.
+ insert the newly selected word.
<Down> Select the next match, as if CTRL-N was used, but don't
- insert it when editing the selection.
+ insert the newly selected word.
+
+If you select another match, e.g., with CTRL-N or CTRL-P, you go back to the
+first state. However, the list of matches doesn't change.
-The selection is being edited after typing <BS>, CTRL-L or when using the
-longest common match. This stops when a match is inserted, as with CTRL-N or
-CTRL-P.
The colors of the menu can be changed with these highlight groups:
Pmenu normal item |hl-Pmenu|
@@ -1097,8 +1115,16 @@ PmenuSel selected item |hl-PmenuSel|
PmenuSbar scrollbar |hl-PmenuSbar|
PmenuThumb thumb of the scrollbar |hl-PmenuThumb|
+There are no special mappings for when the popup menu is visible. However,
+you can use an Insert mode mapping that checks the |pumvisible()| function to
+do something different. Example: >
+ :inoremap <Down> <C-R>=pumvisible() ? "\<lt>C-N>" : "\<lt>Down>"<CR>
+
+
+FILETYPE-SPECIFIC REMARKS FOR OMNI COMPLETION *compl-omni-filetypes*
-Filetype-specific remarks for omni completion *compl-omni-filetypes*
+The file used for {filetype} should be autoload/{filetype}complete.vim
+in 'runtimepath'. Thus for "java" it is autoload/javacomplete.vim.
C *ft-c-omni*
@@ -1144,23 +1170,22 @@ specification.
HTML and XHTML *ft-html-omni*
*ft-xhtml-omni*
-CTRL-X CTRL-O provides completion of various elements of (X)HTML files.
-It is designed to support writing of XHTML 1.0 Strict files but will
-also works for other versions of HTML. Features:
+CTRL-X CTRL-O provides completion of various elements of (X)HTML files. It is
+designed to support writing of XHTML 1.0 Strict files but will also works for
+other versions of HTML. Features:
-- after "<" complete tag name depending on context (no div suggestion
- 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
- them
+- after "<" complete tag name depending on context (no div suggestion inside
+ of an a tag); '/>' indicates empty tags
+- inside of tag complete proper attributes (no width attribute for an a tag);
+ show also type of attribute; '*' indicates required attributes
+- when attribute has limited number of possible values help to complete them
- complete names of entities
- complete values of "class" and "id" attributes with data obtained from
- style tag and included CSS files
+ <style> tag and included CSS files
- when completing value of "style" attribute or working inside of "style" tag
switch to |ft-css-omni| completion
-- when completing values of events attributes or working inside of "script" tag
- switch to |ft-javascript-omni| completion
+- when completing values of events attributes or working inside of "script"
+ tag switch to |ft-javascript-omni| completion
- when used after "</" CTRL-X CTRL-O will close the last opened tag
Note: When used first time completion menu will be shown with little delay
@@ -1176,7 +1201,7 @@ Completion of most elements of JavaScript language and DOM elements.
Complete:
- variables
-- function name
+- function name; show function arguments
- function arguments
- properties of variables trying to detect type of variable
- complete DOM objects and properties depending on context
@@ -1244,7 +1269,7 @@ 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
+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.
@@ -1258,9 +1283,9 @@ compound from two parts:
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: >
+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":
@@ -1272,21 +1297,31 @@ attributes as keys and possible values of attributes as values. Example: >
\ "meta":
\ [ [], {"id": [], "http-equiv": [], "name": [], "content": [], "scheme":
\ [], "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}]
- \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]}
+ \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]},
+ \ "vimxmltaginfo": {
+ \ 'meta': ['/>', '']},
+ \ "vimxmlattrinfo": {
+ \ 'http-equiv': ['ContentType', '']}
This example should be put in "autoload/xml/crippledhtml.vim" file.
-In example are visible two special elements:
+In example are visible four special elements:
1. "vimxmlentities" - 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
+ description.
Note: Tag names in data file MUST not contain namespace description. Check
xsl.vim for example.
+
Commands
:XMLns {name} [{namespace}] *:XMLns*
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 4cf0d3362..c9aa452f4 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 7.0aa. Last change: 2006 Feb 10
+*options.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -127,7 +127,7 @@ Note that an option may also have been set as a side effect of setting
{not available when compiled without the +eval feature}
*:set-termcap* *E522*
-For {option} the form "t_xx" may be used to set a termcap option. This will
+For {option} the form "t_xx" may be used to set a terminal option. This will
override the value from the termcap. You can then use it in a mapping. If
the "xx" part contains special characters, use the <t_xx> form: >
:set <t_#4>=^[Ot
@@ -2036,8 +2036,8 @@ A jump table for the options with a short description can be found at |Q_op|.
global
{not in Vi}
When set to "msg", error messages that would otherwise be omitted will
- be given anyway. This is useful when debugging 'foldexpr' or
- 'indentexpr'.
+ be given anyway. This is useful when debugging 'foldexpr',
+ 'formatexpr' or 'indentexpr'.
When set to "beep", a message will be given when otherwise only a beep
would be produced.
The values can be combined, separated by a comma.
@@ -2882,17 +2882,43 @@ A jump table for the options with a short description can be found at |Q_op|.
global
{not in Vi}
The name of an external program that will be used to format the lines
- selected with the "gq" command. The program must take the input on
+ selected with the |gq| operator. The program must take the input on
stdin and produce the output on stdout. The Unix program "fmt" is
such a program.
- If this option is an empty string, the internal format function will
- be used |C-indenting|.
+ If the 'formatexpr' option is not empty it will be used instead.
+ Otherwise, if 'formatprg' option is an empty string, the internal
+ format function will be used |C-indenting|.
Environment variables are expanded |:set_env|. See |option-backslash|
about including spaces and backslashes.
- This option cannot be set from a |modeline| or in the |sandbox|, for
- security reasons.
+ The expression may be evaluated in the |sandbox|, see
+ |sandbox-option|.
+
+ *'formatexpr'* *'fex'*
+'formatexpr' 'fex' string (default "")
+ local to buffer
+ {not in Vi}
+ {not available when compiled without the |+eval|
+ feature}
+ Expression which is evaluated to format a range of lines for the |gq|
+ operator. The |v:lnum| variable holds the first line to be formatted,
+ |v:count| the number of lines to be formatted.
+ When this option is empty 'formatprg' is used.
+ Example: >
+ :set formatexp=mylang#Format()
+< This will invoke the mylang#Format() function in the
+ autoload/mylang.vim file in 'runtimepath'. |autoload|
+
+ The expression is also evaluated when 'textwidth' is set and adding
+ text beyond that limit. This happens under the same conditions as
+ when internal formatting is used. Make sure the cursor is kept in the
+ same spot relative to the text then! The |mode()| function will
+ return "i" or "R" in this situation. When the function returns
+ non-zero Vim will fall back to using the internal format mechanism.
+
+ The expression may be evaluated in the |sandbox|, see
+ |sandbox-option|.
- *'fsync'* *'fs'*
+ *'fsync'* *'fs'*
'fsync' 'fs' boolean (default on)
global
{not in Vi}
@@ -7016,7 +7042,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'weirdinvert' 'wiv' boolean (default off)
global
{not in Vi}
- This option has the same effect as the 't_xs' termcap option.
+ This option has the same effect as the 't_xs' terminal option.
It is provided for backwards compatibility with version 4.x.
Setting 'weirdinvert' has the effect of making 't_xs' non-empty, and
vice versa. Has no effect when the GUI is running.
diff --git a/runtime/doc/os_dos.txt b/runtime/doc/os_dos.txt
index 3c82f17fe..09f915d46 100644
--- a/runtime/doc/os_dos.txt
+++ b/runtime/doc/os_dos.txt
@@ -1,4 +1,4 @@
-*os_dos.txt* For Vim version 7.0aa. Last change: 2003 Dec 20
+*os_dos.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -126,8 +126,8 @@ text. For example, to get grey text on a blue background: >
See |highlight-groups| for other groups that are available.
A DOS console does not support attributes like bold and underlining. You can
-set the color used in five modes with nine termcap options. Note that this is
-not necessary since you can set the color directly with the ":highlight"
+set the color used in five modes with nine terminal options. Note that this
+is not necessary since you can set the color directly with the ":highlight"
command; these options are for backward compatibility with older Vim versions.
The |'highlight'| option specifies which of the five modes is used for which
action. >
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 27804b02f..2a1990908 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt* For Vim version 7.0aa. Last change: 2006 Feb 01
+*pattern.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -161,7 +161,7 @@ The offset gives the cursor position relative to the found match:
s[-num] [num] characters to the left of the start of the match
b[+num] [num] identical to s[+num] above (mnemonic: begin)
b[-num] [num] identical to s[-num] above (mnemonic: begin)
- ;{pattern} perform another searcn, see |//;|
+ ;{pattern} perform another search, see |//;|
If a '-' or '+' is given but [num] is omitted, a count of one will be used.
When including an offset with 'e', the search becomes inclusive (the
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index ffa3b07fc..192778c1d 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt* For Vim version 7.0aa. Last change: 2006 Jan 11
+*quickref.txt* For Vim version 7.0aa. Last change: 2006 Feb 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -692,6 +692,7 @@ Short explanation of each option: *option-list*
|'formatlistpat'| |'flp'| pattern used to recognize a list header
|'formatoptions'| |'fo'| how automatic formatting is to be done
|'formatprg'| |'fp'| name of external program used with "gq" command
+|'formatexpr'| |'fex'| expression used with "gq" command
|'fsync'| |'fs'| whether to invoke fsync() after file write
|'gdefault'| |'gd'| the ":substitute" flag 'g' is default on
|'grepformat'| |'gfm'| format of 'grepprg' output
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index 1579e2141..d21a52dc2 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt* For Vim version 7.0aa. Last change: 2006 Jan 19
+*starting.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -706,7 +706,8 @@ accordingly. Vim proceeds in this order:
'shell' option. On MS-DOS and Win32, the COMSPEC variable is used
if SHELL is not set.
The environment variable TERM, if it exists, is used to set the 'term'
- option.
+ option. However, 'term' will change later when starting the GUI (step
+ 8 below).
2. Process the arguments
The options and file names from the command that start Vim are
diff --git a/runtime/doc/tags b/runtime/doc/tags
index d2ab20bbb..9c49ee714 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -202,6 +202,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'fen' options.txt /*'fen'*
'fenc' options.txt /*'fenc'*
'fencs' options.txt /*'fencs'*
+'fex' options.txt /*'fex'*
'ff' options.txt /*'ff'*
'ffs' options.txt /*'ffs'*
'fileencoding' options.txt /*'fileencoding'*
@@ -231,6 +232,7 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'foldnestmax' options.txt /*'foldnestmax'*
'foldopen' options.txt /*'foldopen'*
'foldtext' options.txt /*'foldtext'*
+'formatexpr' options.txt /*'formatexpr'*
'formatlistpat' options.txt /*'formatlistpat'*
'formatoptions' options.txt /*'formatoptions'*
'formatprg' options.txt /*'formatprg'*
@@ -5870,6 +5872,7 @@ mark-motions motion.txt /*mark-motions*
masm.vim syntax.txt /*masm.vim*
match() eval.txt /*match()*
match-highlight pattern.txt /*match-highlight*
+match-parens tips.txt /*match-parens*
matchend() eval.txt /*matchend()*
matchit-install usr_05.txt /*matchit-install*
matchlist() eval.txt /*matchlist()*
@@ -6312,6 +6315,7 @@ progname-variable eval.txt /*progname-variable*
progress.vim syntax.txt /*progress.vim*
ptcap.vim syntax.txt /*ptcap.vim*
pterm-mouse options.txt /*pterm-mouse*
+pumvisible() eval.txt /*pumvisible()*
put change.txt /*put*
put-Visual-mode change.txt /*put-Visual-mode*
python if_pyth.txt /*python*
@@ -6532,6 +6536,8 @@ search-range pattern.txt /*search-range*
search-replace change.txt /*search-replace*
searchdecl() eval.txt /*searchdecl()*
searchpair() eval.txt /*searchpair()*
+searchpairpos() eval.txt /*searchpairpos()*
+searchpos() eval.txt /*searchpos()*
section motion.txt /*section*
sed.vim syntax.txt /*sed.vim*
self eval.txt /*self*
@@ -7014,6 +7020,7 @@ termcap-changed version4.txt /*termcap-changed*
termcap-colors term.txt /*termcap-colors*
termcap-cursor-color term.txt /*termcap-cursor-color*
termcap-cursor-shape term.txt /*termcap-cursor-shape*
+termcap-options term.txt /*termcap-options*
termcap-title term.txt /*termcap-title*
terminal-colors os_unix.txt /*terminal-colors*
terminal-info term.txt /*terminal-info*
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index 49da29e77..b0a4bd886 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -1,4 +1,4 @@
-*term.txt* For Vim version 7.0aa. Last change: 2005 Dec 14
+*term.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -208,7 +208,7 @@ starts with CSI, it assumes that the terminal is in 8-bit mode and will
convert all key sequences to their 8-bit variants.
==============================================================================
-2. Terminal options *terminal-options* *E436*
+2. Terminal options *terminal-options* *termcap-options* *E436*
The terminal options can be set just like normal options. But they are not
shown with the ":set all" command. Instead use ":set termcap".
diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt
index d60ff1483..5e40cdaf4 100644
--- a/runtime/doc/tips.txt
+++ b/runtime/doc/tips.txt
@@ -1,4 +1,4 @@
-*tips.txt* For Vim version 7.0aa. Last change: 2005 Apr 19
+*tips.txt* For Vim version 7.0aa. Last change: 2006 Feb 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -24,6 +24,7 @@ Compressing the help files |gzip-helpfile|
Hex editing |hex-editing|
Executing shell commands in a window |shell-window|
Using <> notation in autocommands |autocmd-<>|
+Highlighting matching parens |match-parens|
==============================================================================
Editing C programs *C-editing*
@@ -443,4 +444,58 @@ forget to double the number of existing backslashes and put a backslash before
For a real buffer menu, user functions should be used (see |:function|), but
then the <> notation isn't used, which defeats using it as an example here.
+==============================================================================
+Highlighting matching parens *match-parens*
+
+This example shows the use of a few advanced tricks:
+- using the |CursorMoved| autocommand event
+- using |searchpairpos()| to find a matching paren
+- using |:match| to highlight something
+- using a |pattern| to match a specific position in the file.
+
+This should be put in a Vim script file, since it uses script-local variables.
+Note that it doesn't recognize strings or comments in the text.
+>
+ let s:paren_hl_on = 0
+ function s:Highlight_Matching_Paren()
+ if s:paren_hl_on
+ match none
+ let s:paren_hl_on = 0
+ endif
+
+ let c_lnum = line('.')
+ let c_col = col('.')
+
+ let c = getline(c_lnum)[c_col - 1]
+ let plist = split(&matchpairs, ':\|,')
+ let i = index(plist, c)
+ if i < 0
+ return
+ endif
+ if i % 2 == 0
+ let s_flags = 'nW'
+ let c2 = plist[i + 1]
+ else
+ let s_flags = 'nbW'
+ let c2 = c
+ let c = plist[i - 1]
+ endif
+ if c == '['
+ let c = '\['
+ let c2 = '\]'
+ endif
+
+ let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags)
+
+ if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$')
+ exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col .
+ \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
+ let s:paren_hl_on = 1
+ endif
+ endfunction
+
+ autocmd CursorMoved * call s:Highlight_Matching_Paren()
+ autocmd InsertEnter * match none
+<
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 23267a69d..59bc24e1f 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 7.0aa. Last change: 2006 Feb 10
+*todo.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,19 +30,48 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- Known bugs and current work -----------------------
+Support WINDOW TABS. Works like several pages, each with their own split
+windows. Let's call them "tab pages".
+
+ todo:
+ - ":qa"?
+ - "2gt" doesn't restore syntax HL. GUI: scrollbars are wrong.
+ - line at top of frame with tabs. 'tabline' option 0/1/2 like 'laststatus'
+ Use the name of the first buffer in the tab (ignoring the help window,
+ unless it's the only one). Add a number for the window count.
+ Add 'tabtext' option, like 'statusline'.
+ Select tab with mouse.
+ - When deleting a buffer also close windows in other tab pages.
+ - check all places where (firstwin == lastwin) is used (and vise versa)
+ - check all places wheren only_one_window() is used.
+ - When Vim window is resized all tabs must be resized.
+ - E999
+ - ":tabclose N" close tab N
+ docs:
+ :tabedit
+ :tabfind
+ :tab N
+ :tabs
+ {count}gt
+ :tabclose
+ :close and :quit (last window in tab)
+ "gt": Use "1gt" - "99gt" to switch to another tab. "gt" goes to the
+ next one. Hint in docs: To mess with another buffer, without
+ changing the window layout, do this in another tab.
+
+ add GUI Tabs for some systems.
+ Patch for GTK 1.2 passed on by Christian Michon, 2004 Jan 6.
+ Simple patch for GTK by Luis M (nov 7).
+
+ Don't forget to provide an "X" to close the current tab.
+
+ Need to be able to search the windows in inactive tabs, e.g. for the
+ quickfix window.
+
+
Crash with X command server (Ciaran McCreesh).
-ccomplete / omnicomplete:
-- For C add tag "kind" field to each match?
-- Flickering because of syntax highlighting redrawing further lines.
-- Finding out if an item has members (to add '.' or '->') requires a grep in
- the tags files, that is very slow. Is there another solution? At least
- stop at the first match.
- Could build the list of items for each structure in memory. Is that faster?
- Not using too much memory?
-- When a typedef or struct is local to a file only use it in that file?
-- Special mappings for when the popup menu is visible? Would allow for making
- a specific selection (e.g, methods vs variables).
+Ctags still hasn't included the patch...
spelling:
- Also use the spelling dictionary for dictionary completion.
@@ -87,13 +116,6 @@ spelling:
adding a bad word like "zw" would. Use "zuw" to undo "zw"? (Antonio
Colombo)
-7 Add plugins for formatting. Should be able to make a choice depending on
- the language of a file (English/Korean/Japanese/etc.).
- Setting the 'langformat' option to "chinese" would load the
- "format/chinese.vim" plugin.
-Edward L. Fox explains how it should be done for most Asian languages. (2005
-Nov 24)
-
An error in a function uses a line number that doesn't take line continuation
into account. (Mikolaj Machowski) Store line count in an extra array?
@@ -113,7 +135,6 @@ Mac unicode patch (Da Woon Jung):
(Alan Schmitt)
Patch to add a few flags to search(). (Benji Fisher, Nov 29, doc update Dec 1)
-Also add search???() function that returns list with lnum and col.
Win32: Use the free downloadable compiler 7.1 (2003). Figure out how to do
debugging (with Agide?) and describe it. (George Reilly)
@@ -125,9 +146,6 @@ Try using Visual C++ Express 2005. (Ilya Bobir Dec 20)
Win32: Check that installer puts menu items in "all users" dir when possible,
not administrator dir.
-CTRL-X CTRL-L only completes from loaded buffers. Make it work for unloaded
-buffers too?
-
Autoload:
- Add a Vim script in $VIMRUNTIME/tools that takes a file with a list of
script names and a help file and produces a script that can be sourced to
@@ -158,48 +176,30 @@ Awaiting response:
CONSIDERED FOR VERSION 7.0:
-- Omni completion: Understands the programming language and finds matches
- that make sense. Esp. members of classes/structs.
-
- It's not much different from other Insert-mode completion, use the same
- mechanism. Use CTRL-X CTRL-O and 'omnifunc'. Set 'omnifunc' in the
- filetype plugin, define the function in the autoload directory.
-
- Separately develop the completion logic and the UI. When adding UI stuff
- make it work for all completion methods.
+Omni completion:
+ ccomplete:
+ - Finding out if an item has members (to add '.' or '->') requires a grep
+ in the tags files, that is very slow. Is there another solution? At
+ least stop at the first match.
+ Could build the list of items for each structure in memory. Is that
+ faster? Not using too much memory?
+ - For C add tag "kind" field to each match?
+ - Flickering because of syntax highlighting redrawing further lines.
+ - When a typedef or struct is local to a file only use it in that file?
UI:
- - Complete longest common string first, like 'wildmode' "longest:full".
- Add an "auto" mode: after typing a character (or string) completion is
done for the longest common string. plugin defines the possible
characters/strings. (Martin Stubenschrott)
+ And/or: Provide a function to popup the menu, so that an insert mode
+ mapping can start it (with a specific selection).
- GUI implementation of the popup menu.
- - When using tags, show match in preview window (function prototype,
- struct member, etc.).
+ - Show "info" from a match in preview window.
Or use one window for matches, another for context/info (Doug Kearns,
2005 Sep 13)
- Ideas on: http://www.wholetomato.com/
-
Completion logic:
- Use runtime/autoload/{filetype}complete.vim files.
-
- In function arguments suggest variables of expected type.
- Tags file has "signature" field.
-
- List of completions is a Dictionary with items:
- complist[0]['text'] = completion text
- complist[0]['type'] = type of completion (e.g. function, var, arg)
- complist[0]['help'] = help text (e.g. function declaration)
- complist[0]['helpfunc'] = function that shows help text
- etc.
-
- Can CTRL-] (jump to tag) include the "." and "->" to restrict the
- number of possible matches? (Flemming Madsen)
-
- In general: Besides completion, figure out the type of a variable
- and use it for information.
-
Ideas from others:
http://www.vim.org/scripts/script.php?script_id=747
http://sourceforge.net/projects/insenvim
@@ -212,10 +212,6 @@ CONSIDERED FOR VERSION 7.0:
Uses ctags to find the info:
ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files
- UI: popup menu with list of alternatives, icon to indicate type
- optional popup window with info about selected alternative
- Unrelated settings are changed (e.g. 'mousemodel').
-
www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
IComplete: http://www.vim.org/scripts/script.php?script_id=1265
and http://stud4.tuwien.ac.at/~e0125672/icomplete/
@@ -223,21 +219,15 @@ CONSIDERED FOR VERSION 7.0:
Ivan Villanueva has something for Java.
Emads: http://www.xref-tech.com/xrefactory/more_c_completion.html
Ideas from the Vim 7 BOF at SANE:
- - It's not possible to have one solution for all languages. Design an
- interface for completion plugins. The matches can be done in a
- Vim-script list.
- For interpreted languages, use the interpreter to obtain information.
Should work for Java (Eclipse does this), Python, Tcl, etc.
Richard Emberson mentioned working on an interface to Java.
- Check Readline for its completion interface.
- Use ctags for other languages. Writing a file could trigger running
ctags, merging the tags of the changed file.
- "Visual Assist" http://www.wholetomato.com/products:
Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
- Pre-expand abbreviations, show which abbrevs would match?
- - Provide a function to popup the menu, so that an insert mode mapping can
- start it (with a specific selection).
- UNDO TREE: keep all states of the text, don't delete undo info.
When making a change, instead of clearing any future undo (thus redo)
@@ -259,24 +249,6 @@ CONSIDERED FOR VERSION 7.0:
before some time/date can be flushed. 'undopersist' gives maximum time to
keep undo: "3h", "1d", "2w", "1y", etc. For the file use dot and
extension: ".filename.un~" (like swapfile but "un~" instead of "swp").
-7 Support WINDOW TABS. Works like several pages, each with their own
- split windows.
- In Emacs these are called frames. Could also call them "pages".
- Use the name of the first buffer in the tab (ignoring the help window,
- unless it's the only one). Add a number for the window count.
- First make it work on the console. Use a line of text with highlighting.
- Then add GUI Tabs for some systems.
- Patch for GTK 1.2 passed on by Christian Michon, 2004 Jan 6.
- Simple patch for GTK by Luis M (nov 7).
- Don't forget to provide an "X" to close the current tab.
- Implementation: keep the list of windows as-is. When switching to another
- tab make the buffers in the current windows hidden, save the window
- layout, buildup the other window layout and fill with buffers.
- Need to be able to search the windows in inactive tabs, e.g. for the
- quickfix window.
- Use "1gt" - "99gt" to switch to a tab?
- Also hidden tabs? Useful for messing with a temp buffer without changing
- the window layout.
- EMBEDDING: Make it possible to run Vim inside a window of another program.
For Xwindows this can be done with XReparentWindow().
For GTK Neil Bird has a patch to use Vim like a widget.
@@ -431,7 +403,7 @@ Awaiting updated patches:
7 Completion of network shares, patch by Yasuhiro Matsumoto.
Update 2004 Sep 6.
How does this work? Missing comments.
- gettext() Translate a message. (Patch from Yasuhiro Matsumoto)
+ - gettext() Translate a message. (Patch from Yasuhiro Matsumoto)
Update 2004 Sep 10
Another patch from Edward L. Fox (2005 Nov 24)
Search in 'runtimepath'?
@@ -2085,6 +2057,9 @@ Shared libraries:
Tags:
+7 Can CTRL-] (jump to tag) include a following "." and "->" to restrict the
+ number of possible matches? Check tags file for an item that has members.
+ (Flemming Madsen)
7 Count before CTRL-]: jump to N'th match
8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis.
8 When output of ":tselect" is long, getting the more-prompt, should be able
@@ -3288,6 +3263,13 @@ Debug mode:
Various improvements:
+7 Add plugins for formatting? Should be able to make a choice depending on
+ the language of a file (English/Korean/Japanese/etc.).
+ Setting the 'langformat' option to "chinese" would load the
+ "format/chinese.vim" plugin.
+ The plugin would set 'formatexpr' and define the function being called.
+ Edward L. Fox explains how it should be done for most Asian languages.
+ (2005 Nov 24)
7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next
("vatv").
7 [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to
@@ -3419,9 +3401,6 @@ Various improvements:
paragraph. Both start a new paragraph on any indent change.
7 Add a way to define an item list with a pattern in 'formatoptions'. The
'n' flag doesn't work for "6.3" or "6a.".
-8 Add 'formatexpr' option: Used for formatting operator "gq" instead of the
- builtin formatting or 'formatprg'. Or use a string that starts with "="
- in 'formatprg': "=MyFormat()".
8 Allow using a trailing space to signal a paragraph that continues on the
next line (MIME text/plain; format=flowed, RFC 2646). Can be used for
continuous formatting. Could use 'autoformat' option, which specifies a
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 2b7331560..62b6a917f 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -654,7 +654,9 @@ Working with text in the current buffer:
nextnonblank() find next non-blank line
prevnonblank() find previous non-blank line
search() find a match for a pattern
+ searchpos() find a match for a pattern
searchpair() find the other end of a start/skip/end
+ searchpairpos() find the other end of a start/skip/end
System functions and manipulation of files:
browse() put up a file requester
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 14e378a52..bbd3d04d0 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt* For Vim version 7.0aa. Last change: 2006 Feb 10
+*version7.txt* For Vim version 7.0aa. Last change: 2006 Feb 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -414,6 +414,8 @@ Options: ~
(based on an idea from Yegappan Lakshmanan)
'formatlistpat' pattern to recognize a numbered list for formatting.
(idea by Hugo Haas)
+'formatexpr' expression for formatting text with |gq| and when text
+ goes over 'textwidth' in Insert mode.
'spell' switch spell checking on/off
'spelllang' languages to check spelling for
'spellsuggest' methods for spell suggestions
@@ -558,6 +560,8 @@ New and extended functions: ~
|repeat()| repeat "expr" "count" times (Christophe Poucet)
|reverse()| reverse the order of a List
|searchdecl()| search for declaration of variable
+|searchpairpos()| return a List with the position of the match
+|searchpos()| return a List with the position of the match
|setloclist()| modify a location list (Yegappan Lakshmanan)
|setqflist()| modify a quickfix list (Yegappan Lakshmanan)
|sort()| sort a List
@@ -1004,6 +1008,7 @@ itself.
":saveas asdf.c" will set 'filetype' to c when it's empty. Also for ":w
asdf.c" when it sets the filename for the buffer.
+Insert mode completion for whole lines now also searches unloaded buffers.
==============================================================================
COMPILE TIME CHANGES *compile-changes-7*
@@ -1686,4 +1691,9 @@ Crashed when expanding a file name argument in backticks.
In some situations the menu and scrollbar didn't work, when the value contains
a CSI byte. (Yukihiro Nakadaira)
+GTK GUI: When drawing the balloon focus changes and we might get a key release
+event that removed the balloon again. Ignore the key release event.
+
+'titleold' was included in ":mkexrc" and ":mksession" files.
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/indent/vhdl.vim b/runtime/indent/vhdl.vim
index e510f3c8f..82f0f834b 100644
--- a/runtime/indent/vhdl.vim
+++ b/runtime/indent/vhdl.vim
@@ -1,8 +1,8 @@
" VHDL indent ('93 syntax)
" Language: VHDL
" Maintainer: Gerald Lai <laigera+vim?gmail.com>
-" Version: 1.3
-" Last Change: 2006 Jan 31
+" Version: 1.34
+" Last Change: 2006 Feb 11
" URL: http://www.vim.org/scripts/script.php?script_id=1450
" only load this indent file when no other was loaded
@@ -17,13 +17,35 @@ setlocal indentkeys=!^F,o,O,e,0(,0)
setlocal indentkeys+==~if,=~then,=~elsif,=~else
setlocal indentkeys+==~begin,=~is,=~select,=~--
-" move around
+" count repeat
+function! <SID>CountWrapper(cmd)
+ let i = v:count1
+ if a:cmd[0] == ":"
+ while i > 0
+ execute a:cmd
+ let i = i - 1
+ endwhile
+ else
+ execute "normal! gv\<Esc>"
+ execute "normal ".i.a:cmd
+ let curcol = col(".")
+ let curline = line(".")
+ normal! gv
+ call cursor(curline, curcol)
+ endif
+endfunction
+
+" explore motion
" keywords: "architecture", "block", "configuration", "component", "entity", "function", "package", "procedure", "process", "record", "units"
let b:vhdl_explore = '\%(architecture\|block\|configuration\|component\|entity\|function\|package\|procedure\|process\|record\|units\)'
-nnoremap <silent><buffer>[[ :cal search('\%(\<end\s\+\)\@<!\<'.b:vhdl_explore.'\>\c','bW')<CR>
-nnoremap <silent><buffer>]] :cal search('\%(\<end\s\+\)\@<!\<'.b:vhdl_explore.'\>\c','W')<CR>
-nnoremap <silent><buffer>[] :cal search('\<end\s\+'.b:vhdl_explore.'\>\c','bW')<CR>
-nnoremap <silent><buffer>][ :cal search('\<end\s\+'.b:vhdl_explore.'\>\c','W')<CR>
+noremap <buffer><silent>[[ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
+noremap <buffer><silent>]] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
+noremap <buffer><silent>[] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
+noremap <buffer><silent>][ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
+vnoremap <buffer><silent>[[ :<C-u>cal <SID>CountWrapper('[[')<CR>
+vnoremap <buffer><silent>]] :<C-u>cal <SID>CountWrapper(']]')<CR>
+vnoremap <buffer><silent>[] :<C-u>cal <SID>CountWrapper('[]')<CR>
+vnoremap <buffer><silent>][ :<C-u>cal <SID>CountWrapper('][')<CR>
" constants
" not a comment