changeset 818:1f929f3ca806 v7.0c03

updated for version 7.0c03
author vimboss
date Wed, 29 Mar 2006 21:18:24 +0000
parents 6897668c467f
children 23f82b5d2814
files runtime/autoload/sqlcomplete.vim runtime/autoload/syntaxcomplete.vim runtime/doc/eval.txt runtime/doc/fold.txt runtime/doc/indent.txt runtime/doc/insert.txt runtime/doc/mbyte.txt runtime/doc/options.txt runtime/doc/os_mac.txt runtime/doc/pi_paren.txt runtime/doc/sponsor.txt runtime/doc/sql.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/version7.txt runtime/evim.vim runtime/ftplugin/sql.vim runtime/lang/menu_ja_jp.euc-jp.vim runtime/lang/menu_ja_jp.utf-8.vim runtime/lang/menu_japanese_japan.932.vim runtime/plugin/matchparen.vim runtime/syntax/help.vim runtime/syntax/python.vim runtime/syntax/vim.vim src/auto/configure src/configure.in src/doc-txt.icns src/edit.c src/eval.c src/gui_gtk_x11.c src/gui_mac.c src/gui_photon.c src/gui_riscos.c src/gui_w48.c src/gui_x11.c src/option.c src/screen.c src/syntax.c src/version.h
diffstat 39 files changed, 1030 insertions(+), 99 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/autoload/sqlcomplete.vim
@@ -0,0 +1,459 @@
+" Vim completion script
+" Language:    SQL
+" Maintainer:  David Fishburn <fishburn@ianywhere.com>
+" Version:     1.0
+" Last Change: Tue Mar 28 2006 4:39:49 PM
+
+" Set completion with CTRL-X CTRL-O to autoloaded function.
+" This check is in place in case this script is
+" sourced directly instead of using the autoload feature. 
+if exists('&omnifunc')
+    " Do not set the option if already set since this
+    " results in an E117 warning.
+    if &omnifunc == ""
+        setlocal omnifunc=sqlcomplete#Complete
+    endif
+endif
+
+if exists('g:loaded_sql_completion')
+    finish 
+endif
+let g:loaded_sql_completion = 1
+
+" Maintains filename of dictionary
+let s:sql_file_table             = ""
+let s:sql_file_procedure         = ""
+let s:sql_file_view              = ""
+
+" Define various arrays to be used for caching
+let s:tbl_name                   = []
+let s:tbl_alias                  = []
+let s:tbl_cols                   = []
+let s:syn_list                   = []
+let s:syn_value                  = []
+ 
+" Used in conjunction with the syntaxcomplete plugin
+let s:save_inc = ""
+let s:save_exc = ""
+if exists('g:omni_syntax_group_include_sql')
+    let s:save_inc = g:omni_syntax_group_include_sql
+endif
+if exists('g:omni_syntax_group_exclude_sql')
+    let s:save_exc = g:omni_syntax_group_exclude_sql
+endif
+ 
+" Used with the column list
+let s:save_prev_table = ""
+
+" Default the option to verify table alias
+if !exists('g:omni_sql_use_tbl_alias')
+    let g:omni_sql_use_tbl_alias = 'a'
+endif
+
+" This function is used for the 'omnifunc' option.
+function! sqlcomplete#Complete(findstart, base)
+
+    " Default to table name completion
+    let compl_type = 'table'
+    " Allow maps to specify what type of object completion they want
+    if exists('b:sql_compl_type')
+        let compl_type = b:sql_compl_type
+    endif
+
+    if a:findstart
+        " Locate the start of the item, including "."
+        let line = getline('.')
+        let start = col('.') - 1
+        let lastword = -1
+        while start > 0
+            if line[start - 1] =~ '\w'
+                let start -= 1
+            elseif line[start - 1] =~ '\.' && compl_type =~ 'column\|table'
+                " If the completion type is table or column
+                " Then assume we are looking for column completion
+                " column_type can be either 'column' or 'column_csv'
+                if lastword == -1
+                    let lastword = start
+                endif
+                let start -= 1
+                let b:sql_compl_type = 'column'
+            else
+                break
+            endif
+        endwhile
+
+        " Return the column of the last word, which is going to be changed.
+        " Remember the text that comes before it in s:prepended.
+        if lastword == -1
+            let s:prepended = ''
+            return start
+        endif
+        let s:prepended = strpart(line, start, lastword - start)
+        return lastword
+    endif
+
+    let base = s:prepended . a:base
+
+    let compl_list = []
+
+    " Default to table name completion
+    let compl_type = 'table'
+    " Allow maps to specify what type of object completion they want
+    if exists('b:sql_compl_type')
+        let compl_type = b:sql_compl_type
+        unlet b:sql_compl_type
+    endif
+
+    if compl_type == 'tableReset'
+        let compl_type = 'table'
+        let base = ''
+    endif
+
+    if compl_type == 'table' ||
+                \ compl_type == 'procedure' ||
+                \ compl_type == 'view' 
+
+        " This type of completion relies upon the dbext.vim plugin
+        if s:SQLCCheck4dbext() == -1
+            return []
+        endif
+
+        if s:sql_file_{compl_type} == ""
+            let compl_type = substitute(compl_type, '\w\+', '\u&', '')
+            let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type)
+        endif
+        let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type)
+        if s:sql_file_{compl_type} != ""
+            if filereadable(s:sql_file_{compl_type})
+                let compl_list = readfile(s:sql_file_{compl_type})
+            endif
+        endif
+    elseif compl_type == 'column'
+
+        " This type of completion relies upon the dbext.vim plugin
+        if s:SQLCCheck4dbext() == -1
+            return []
+        endif
+
+        if base == ""
+            " The last time we displayed a column list we stored
+            " the table name.  If the user selects a column list 
+            " without a table name of alias present, assume they want
+            " the previous column list displayed.
+            let base = s:save_prev_table
+        endif
+
+        if base != ""
+            let compl_list        = s:SQLCGetColumns(base, '')
+            let s:save_prev_table = base
+            let base              = ''
+        endif
+    elseif compl_type == 'column_csv'
+
+        " This type of completion relies upon the dbext.vim plugin
+        if s:SQLCCheck4dbext() == -1
+            return []
+        endif
+
+        if base == ""
+            " The last time we displayed a column list we stored
+            " the table name.  If the user selects a column list 
+            " without a table name of alias present, assume they want
+            " the previous column list displayed.
+            let base = s:save_prev_table
+        endif
+
+        if base != ""
+            let compl_list        = s:SQLCGetColumns(base, 'csv')
+            let s:save_prev_table = base
+            " Join the column array into 1 single element array
+            " but make the columns column separated
+            let compl_list        = [join(compl_list, ', ')]
+            let base              = ''
+        endif
+    elseif compl_type == 'resetCache'
+        " Reset all cached items
+        let s:tbl_name  = []
+        let s:tbl_alias = []
+        let s:tbl_cols  = []
+        let s:syn_list  = []
+        let s:syn_value = []
+        return []
+    else
+        " Default to empty or not found
+        let compl_list = []
+        " Check if we have already cached the syntax list
+        let list_idx = index(s:syn_list, compl_type, 0, &ignorecase)
+        if list_idx > -1
+            " Return previously cached value
+            let compl_list = s:syn_value[list_idx]
+        else
+            " Request the syntax list items from the 
+            " syntax completion plugin
+            if compl_type == 'syntax'
+                " Handle this special case.  This allows the user
+                " to indicate they want all the syntax items available,
+                " so do not specify a specific include list.
+                let g:omni_syntax_group_include_sql = ''
+            else
+                " The user has specified a specific syntax group
+                let g:omni_syntax_group_include_sql = compl_type
+            endif
+            let g:omni_syntax_group_exclude_sql = ''
+            let syn_value                       = OmniSyntaxList()
+            let g:omni_syntax_group_include_sql = s:save_inc
+            let g:omni_syntax_group_exclude_sql = s:save_exc
+            " Cache these values for later use
+            let s:syn_list  = add( s:syn_list,  compl_type )
+            let s:syn_value = add( s:syn_value, syn_value )
+            let compl_list  = syn_value
+        endif
+    endif
+
+    if base != ''
+        " Filter the list based on the first few characters the user
+        " entered
+        let expr = 'v:val =~ "^'.base.'"'
+        let compl_list = filter(copy(compl_list), expr)
+    endif
+
+    return compl_list
+endfunc
+
+function! s:SQLCWarningMsg(msg)
+    echohl WarningMsg
+    echomsg a:msg 
+    echohl None
+endfunction
+      
+function! s:SQLCErrorMsg(msg)
+    echohl ErrorMsg
+    echomsg a:msg 
+    echohl None
+endfunction
+      
+function! s:SQLCCheck4dbext()
+    if !exists('g:loaded_dbext')
+        let msg = "The dbext plugin must be loaded for dynamic SQL completion"
+        call s:SQLCErrorMsg(msg)
+        " Leave time for the user to read the error message
+        :sleep 2
+        return -1
+    elseif g:loaded_dbext < 210
+        let msg = "The dbext plugin must be at least version 2.10 " .
+                    \ " for dynamic SQL completion"
+        call s:SQLCErrorMsg(msg)
+        " Leave time for the user to read the error message
+        :sleep 2
+        return -1
+    endif
+    return 1
+endfunction
+
+function! s:SQLCAddAlias(table_name, table_alias, cols)
+    let table_name  = a:table_name
+    let table_alias = a:table_alias
+    let cols        = a:cols
+
+    if g:omni_sql_use_tbl_alias != 'n' 
+        if table_alias == ''
+            if 'da' =~? g:omni_sql_use_tbl_alias
+                if table_name =~ '_'
+                    " Treat _ as separators since people often use these
+                    " for word separators
+                    let save_keyword = &iskeyword
+                    setlocal iskeyword-=_
+
+                    " Get the first letter of each word
+                    " [[:alpha:]] is used instead of \w 
+                    " to catch extended accented characters
+                    "
+                    let table_alias = substitute( 
+                                \ table_name, 
+                                \ '\<[[:alpha:]]\+\>_\?', 
+                                \ '\=strpart(submatch(0), 0, 1)', 
+                                \ 'g'
+                                \ )
+                    " Restore original value
+                    let &iskeyword = save_keyword
+                elseif table_name =~ '\u\U'
+                    let initials = substitute(
+                                \ table_name, '\(\u\)\U*', '\1', 'g')
+                else
+                    let table_alias = strpart(table_name, 0, 1)
+                endif
+            endif
+        endif
+        if table_alias != ''
+            " Following a word character, make sure there is a . and no spaces
+            let table_alias = substitute(table_alias, '\w\zs\.\?\s*$', '.', '')
+            if 'a' =~? g:omni_sql_use_tbl_alias && a:table_alias == ''
+                let table_alias = inputdialog("Enter table alias:", table_alias)
+            endif
+        endif
+        if table_alias != ''
+            let cols = substitute(cols, '\<\w', table_alias.'&', 'g')
+        endif
+    endif
+
+    return cols
+endfunction
+
+function! s:SQLCGetColumns(table_name, list_type)
+    let table_name   = matchstr(a:table_name, '^\w\+')
+    let table_cols   = []
+    let table_alias  = ''
+    let move_to_top  = 1
+
+    if g:loaded_dbext >= 210
+        let saveSettingAlias = DB_listOption('use_tbl_alias')
+        exec 'DBSetOption use_tbl_alias=n'
+    endif
+
+    " Check if we have already cached the column list for this table
+    " by its name
+    let list_idx = index(s:tbl_name, table_name, 0, &ignorecase)
+    if list_idx > -1
+        let table_cols = split(s:tbl_cols[list_idx])
+    else
+        " Check if we have already cached the column list for this table 
+        " by its alias, assuming the table_name provided was actually
+        " the alias for the table instead
+        "     select *
+        "       from area a
+        "      where a.
+        let list_idx = index(s:tbl_alias, table_name, 0, &ignorecase)
+        if list_idx > -1
+            let table_alias = table_name
+            let table_name  = s:tbl_name[list_idx]
+            let table_cols  = split(s:tbl_cols[list_idx])
+        endif
+    endif
+
+    " If we have not found a cached copy of the table
+    " And the table ends in a "." or we are looking for a column list
+    " if list_idx == -1 && (a:table_name =~ '\.' || b:sql_compl_type =~ 'column')
+    " if list_idx == -1 && (a:table_name =~ '\.' || a:list_type =~ 'csv')
+    if list_idx == -1 
+         let saveY      = @y
+         let saveSearch = @/
+         let saveWScan  = &wrapscan
+         let curline    = line(".")
+         let curcol     = col(".")
+
+         " Do not let searchs wrap
+         setlocal nowrapscan
+         " If . was entered, look at the word just before the .
+         " We are looking for something like this:
+         "    select * 
+         "      from customer c
+         "     where c.
+         " So when . is pressed, we need to find 'c'
+         "
+
+         " Search backwards to the beginning of the statement
+         " and do NOT wrap
+         " exec 'silent! normal! v?\<\(select\|update\|delete\|;\)\>'."\n".'"yy'
+         exec 'silent! normal! ?\<\(select\|update\|delete\|;\)\>'."\n"
+
+         " Start characterwise visual mode
+         " Advance right one character
+         " Search foward until one of the following:
+         "     1.  Another select/update/delete statement
+         "     2.  A ; at the end of a line (the delimiter)
+         "     3.  The end of the file (incase no delimiter)
+         " Yank the visually selected text into the "y register.
+         exec 'silent! normal! vl/\(\<select\>\|\<update\>\|\<delete\>\|;\s*$\|\%$\)'."\n".'"yy'
+
+         let query = @y
+         let query = substitute(query, "\n", ' ', 'g')
+         let found = 0
+
+         " if query =~? '^\(select\|update\|delete\)'
+         if query =~? '^\(select\)'
+             let found = 1
+             "  \(\(\<\w\+\>\)\.\)\?   - 
+             " 'from.\{-}'  - Starting at the from clause
+             " '\zs\(\(\<\w\+\>\)\.\)\?' - Get the owner name (optional)
+             " '\<\w\+\>\ze' - Get the table name 
+             " '\s\+\<'.table_name.'\>' - Followed by the alias
+             " '\s*\.\@!.*'  - Cannot be followed by a .
+             " '\(\<where\>\|$\)' - Must be followed by a WHERE clause
+             " '.*'  - Exclude the rest of the line in the match
+             let table_name_new = matchstr(@y, 
+                         \ 'from.\{-}'.
+                         \ '\zs\(\(\<\w\+\>\)\.\)\?'.
+                         \ '\<\w\+\>\ze'.
+                         \ '\s\+\%(as\s\+\)\?\<'.table_name.'\>'.
+                         \ '\s*\.\@!.*'.
+                         \ '\(\<where\>\|$\)'.
+                         \ '.*'
+                         \ )
+             if table_name_new != ''
+                 let table_alias = table_name
+                 let table_name  = table_name_new
+
+                 let list_idx = index(s:tbl_name, table_name, 0, &ignorecase)
+                 if list_idx > -1
+                     let table_cols  = split(s:tbl_cols[list_idx])
+                     let s:tbl_name[list_idx]  = table_name
+                     let s:tbl_alias[list_idx] = table_alias
+                 else
+                     let list_idx = index(s:tbl_alias, table_name, 0, &ignorecase)
+                     if list_idx > -1
+                         let table_cols = split(s:tbl_cols[list_idx])
+                         let s:tbl_name[list_idx]  = table_name
+                         let s:tbl_alias[list_idx] = table_alias
+                     endif
+                 endif
+
+             endif
+         else
+             " Simply assume it is a table name provided with a . on the end
+             let found = 1
+         endif
+
+         let @y        = saveY
+         let @/        = saveSearch
+         let &wrapscan = saveWScan
+
+         " Return to previous location
+         call cursor(curline, curcol)
+         
+         if found == 0
+             if g:loaded_dbext > 201
+                 exec 'DBSetOption use_tbl_alias='.saveSettingAlias
+             endif
+
+             " Not a SQL statement, do not display a list
+             return []
+         endif
+    endif 
+
+    if empty(table_cols)
+        " Specify silent mode, no messages to the user (tbl, 1)
+        " Specify do not comma separate (tbl, 1, 1)
+        let table_cols_str = DB_getListColumn(table_name, 1, 1)
+
+        if table_cols_str != ""
+            let s:tbl_name  = add( s:tbl_name,  table_name )
+            let s:tbl_alias = add( s:tbl_alias, table_alias )
+            let s:tbl_cols  = add( s:tbl_cols,  table_cols_str )
+            let table_cols  = split(table_cols_str)
+        endif
+
+    endif
+
+    if g:loaded_dbext > 201
+        exec 'DBSetOption use_tbl_alias='.saveSettingAlias
+    endif
+
+    if a:list_type == 'csv' && !empty(table_cols)
+        let cols = join(table_cols, ', ')
+        let cols = s:SQLCAddAlias(table_name, table_alias, cols)
+        let table_cols = [cols]
+    endif
+
+    return table_cols
+endfunction
+
--- a/runtime/autoload/syntaxcomplete.vim
+++ b/runtime/autoload/syntaxcomplete.vim
@@ -1,8 +1,8 @@
 " Vim completion script
 " Language:    All languages, uses existing syntax highlighting rules
 " Maintainer:  David Fishburn <fishburn@ianywhere.com>
-" Version:     1.2
-" Last Change: Sat Mar 18 2006 8:25:30 PM
+" Version:     1.3
+" Last Change: Mon Mar 27 2006 9:29:35 PM
 
 " Set completion with CTRL-X CTRL-O to autoloaded function.
 " This check is in place in case this script is
@@ -181,7 +181,7 @@ function! OmniSyntaxList()
         if get_syn_list == 1
             " Pass in the full syntax listing, plus the group name we 
             " are interested in.
-            let extra_syn_list = s:SyntaxGroupItems(group_name, syntax_full)
+            let extra_syn_list = s:SyntaxCSyntaxGroupItems(group_name, syntax_full)
 
             let syn_list = syn_list . extra_syn_list . "\n"
         endif
@@ -212,7 +212,7 @@ function! OmniSyntaxList()
     endif
 endfunction
 
-function! s:SyntaxGroupItems( group_name, syntax_full )
+function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
 
     let syn_list = ""
 
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0c.  Last change: 2006 Mar 26
+*eval.txt*      For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1501,6 +1501,7 @@ append( {lnum}, {list})		Number	append l
 argc()				Number	number of files in the argument list
 argidx()			Number	current index in the argument list
 argv( {nr})			String	{nr} entry of the argument list
+argv( )				List	the argument list
 browse( {save}, {title}, {initdir}, {default})
 				String	put up a file requester
 browsedir( {title}, {initdir})  String	put up a directory requester
@@ -1767,7 +1768,7 @@ argidx()	The result is the current index
 		the first file.  argc() - 1 is the last one.  See |arglist|.
 
 							*argv()*
-argv({nr})	The result is the {nr}th file in the argument list of the
+argv([{nr}])	The result is the {nr}th file in the argument list of the
 		current window.  See |arglist|.  "argv(0)" is the first one.
 		Example: >
 	:let i = 0
@@ -1776,7 +1777,9 @@ argv({nr})	The result is the {nr}th file
 	:  exe 'amenu Arg.' . f . ' :e ' . f . '<CR>'
 	:  let i = i + 1
 	:endwhile
-<
+<		Without the {nr} argument a |List| with the whole |arglist| is
+		returned.
+
 							*browse()*
 browse({save}, {title}, {initdir}, {default})
 		Put up a file requester.  This only works when "has("browse")"
--- a/runtime/doc/fold.txt
+++ b/runtime/doc/fold.txt
@@ -1,4 +1,4 @@
-*fold.txt*      For Vim version 7.0c.  Last change: 2005 Sep 10
+*fold.txt*      For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -109,6 +109,7 @@ level of the previous line.
 
 There must be no side effects from the expression.  The text in the buffer,
 cursor position, the search patterns, options etc. must not be changed.
+You can change and restore them if you are careful.
 
 If there is some error in the expression, or the resulting value isn't
 recognized, there is no error message and the fold level will be zero.
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -1,4 +1,4 @@
-*indent.txt*    For Vim version 7.0c.  Last change: 2005 Aug 30
+*indent.txt*    For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -68,7 +68,7 @@ as follows:
 	"e"	if you type the second 'e' for an "else" at the start of a
 		line
 
-Characters that can precede each key:
+Characters that can precede each key:				*i_CTRL-F*
 !	When a '!' precedes the key, Vim will not insert the key but will
 	instead reindent the current line.  This allows you to define a
 	command key for reindenting the current line.  CTRL-F is the default
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0c.  Last change: 2006 Mar 28
+*insert.txt*    For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1214,11 +1214,11 @@ are included.
 CSS							*ft-css-omni*
 
 Complete properties and their appropriate values according to CSS 2.1
-specification. 
+specification.
 
 
-HTML and XHTML						*ft-html-omni*
-							*ft-xhtml-omni*
+HTML							*ft-html-omni*
+XHTML							*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
@@ -1239,12 +1239,12 @@ other versions of HTML. Features:
 - 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
-- this is time needed for loading of data file.  
+- this is time needed for loading of data file.
 Note: Completion may fail in badly formatted documents. In such case try to
 run |:make| command to detect formatting problems.
 
 
-JAVASCRIPT                                             *ft-javascript-omni*
+JAVASCRIPT					       *ft-javascript-omni*
 
 Completion of most elements of JavaScript language and DOM elements.
 
@@ -1260,7 +1260,7 @@ Complete:
 Completion works in separate JavaScript files (&ft==javascript), inside of
 <script> tag of (X)HTML and in values of event attributes (including scanning
 of external files.
- 
+
 DOM compatibility
 
 At the moment (beginning of 2006) there are two main browsers - MS Internet
@@ -1268,11 +1268,11 @@ Explorer and Mozilla Firefox. These two 
 market. Theoretically standards are created by W3C organisation
 (http://www.w3c.org) but they are not always followed/implemented.
 
-		IE 	FF 	W3C  Omni completion ~
-		+/-     +/-     +    +               ~
-                +       +       -    +               ~
-                +       -       -    -               ~
-                -       +       -    -               ~
+		IE	FF	W3C  Omni completion ~
+		+/-	+/-	+    +		     ~
+		+	+	-    +		     ~
+		+	-	-    -		     ~
+		-	+	-    -		     ~
 
 Regardless from state of implementation in browsers but if element is defined
 in standards, completion plugin will place element in suggestion list. When
@@ -1280,7 +1280,7 @@ both major engines implemented element, 
 will be suggested. All other elements are not placed in suggestion list.
 
 
-PHP                                                     *ft-php-omni*
+PHP							*ft-php-omni*
 
 Completion of PHP code requires tags file for completion of data from external
 files. You should use Exuberant ctags version 5.5.4 or newer. You can find it
@@ -1317,15 +1317,15 @@ This uses the current syntax highlightin
 any filetype and provides a minimal language-sensitive completion.
 
 To enable syntax code completion you can run: >
-	setlocal omnifunc=syntaxcomplete#Complete 
+	setlocal omnifunc=syntaxcomplete#Complete
 
 You can automate this by placing the following in your vimrc (after any
 ":filetype" command): >
     if has("autocmd") && exists("+omnifunc")
-        autocmd Filetype *
-                    \	if &omnifunc == "" |
-                    \		setlocal omnifunc=syntaxcomplete#Complete |
-                    \	endif
+	autocmd Filetype *
+		    \	if &omnifunc == "" |
+		    \		setlocal omnifunc=syntaxcomplete#Complete |
+		    \	endif
     endif
 
 The above will set completion to this script only if a specific plugin does
@@ -1368,6 +1368,14 @@ You can create as many of these variable
 filetype at the end of the variable name.
 
 
+SQL							*ft-sql-omni*
+
+Completion for the SQL language includes statements, functions, keywords.
+It will also dynamically complete tables, procedures, views and column lists
+with data pulled directly from within a database.  For detailed instructions
+and a tutorial see |omni-sql-completion|.
+
+
 XML							*ft-xml-omni*
 
 Vim 7 provides mechanism to context aware completion of XML files.  It depends
@@ -1394,9 +1402,9 @@ which will not create conflicts in futur
 it is data file for XHTML 1.0 Strict.
 
 File contains one variable with fixed name: g:xmldata_xhtml10s . It is
-compound from two parts: 
+compound from two parts:
 
-1. "g:xmldata_"  general prefix 
+1. "g:xmldata_"  general prefix
 2. "xhtml10s"    name of file and name of described XML dialect
 
 Part two must be exactly the same as name of file.
@@ -1407,14 +1415,14 @@ of possible children, second element is 
 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": [], 
+    \ "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": 
+    \ "meta":
+    \ [ [], {"id": [], "http-equiv": [], "name": [], "content": [], "scheme":
     \ [], "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}]
     \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]},
     \ "vimxmltaginfo": {
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -1,4 +1,4 @@
-*mbyte.txt*     For Vim version 7.0c.  Last change: 2006 Mar 05
+*mbyte.txt*     For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar et al.
@@ -1076,6 +1076,7 @@ also add this line: >
 	''	'
 Since the mapping is defined with |:lnoremap| the resulting quote will not be
 used for the start of another character.
+The "accents" keymap uses this.				*keymap-accents*
 
 Although it's possible to have more than one character in the second column,
 this is unusual.  But you can use various ways to specify the character: >
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0c.  Last change: 2006 Mar 26
+*options.txt*	For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2077,6 +2077,8 @@ A jump table for the options with a shor
 	Highlight the screen line of the cursor with CursorLine
 	|hl-CursorLine|.  Useful to easily spot the cursor.  Will make screen
 	redrawing slower.
+	When Visual mode is active the highlighting isn't used to make it
+	easier to spot where the selected area.
 
 
 						*'debug'*
--- a/runtime/doc/os_mac.txt
+++ b/runtime/doc/os_mac.txt
@@ -1,4 +1,4 @@
-*os_mac.txt*    For Vim version 7.0c.  Last change: 2006 Mar 26
+*os_mac.txt*    For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar et al.
@@ -86,6 +86,14 @@ A: Assuming that Vim.app is located in /
    Or:
    	/Applications/Vim.app/Contents/MacOS/Vim -g  {arguments}
 
+Q: How can I set $PATH to something reasonable when I start Vim.app from the
+   GUI or with open?
+A: The following trick works with most shells.  Put it in your vimrc file.
+   This is included in the system vimrc file included with the binaries
+   distributed at macvim.org . >
+	let s:path = system("echo echo VIMPATH'${PATH}' | $SHELL -l")
+	let $PATH = matchstr(s:path, 'VIMPATH\zs.\{-}\ze\n')
+
 ==============================================================================
 4. Mac Lack						*mac-lack*
 
--- a/runtime/doc/pi_paren.txt
+++ b/runtime/doc/pi_paren.txt
@@ -1,4 +1,4 @@
-*pi_paren.txt*  For Vim version 7.0c.  Last change: 2006 Mar 24
+*pi_paren.txt*  For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -38,5 +38,9 @@ in a string or comment syntax item, then
 syntax items are ignored.  Any syntax items with "string" or "comment"
 somewhere in their name are considered string or comment items.
 
+The search is limited to what is visible in the window.  The plugin doesn't
+search further than 100 lines to avoid a long delay when there are closed
+folds.
+
 ==============================================================================
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/sponsor.txt
+++ b/runtime/doc/sponsor.txt
@@ -1,4 +1,4 @@
-*sponsor.txt*   For Vim version 7.0c.  Last change: 2006 Mar 24
+*sponsor.txt*   For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -13,7 +13,7 @@ working on Vim please send a donation.
 
 Since Bram is back to a paid job the money will now be used to help children
 in Uganda.  See |uganda|.  But at the same time donations increase Bram's
-motivation to work on Vim!
+motivation to keep working on Vim!
 
 For the most recent information about sponsoring look on the Vim web site:
 
@@ -93,7 +93,7 @@ QUESTIONS AND ANSWERS				*sponsor-faq* *
 Why should I give money?
 
 If you do not show your appreciation for Vim then Bram will be less motivated
-to fix bugs and add new features.
+to fix bugs and add new features.  He will do something else instead.
 
 
 How much money should I send?
@@ -177,6 +177,12 @@ You can change your votes any time you l
 sent money.  The points will be counted right away.
 
 
+Can I add an item to vote on?
+
+Not directly.  You can suggest items to vote on to Bram.  He will consider
+fitting your item into the list.
+
+
 How about Charityware?
 
 Currently the Vim donations go to |uganda| anyway.  Thus it doesn't matter if
@@ -202,7 +208,9 @@ let him know that the donation is done b
 
 Can you send me a bill?
 
-No.  But a receipt is possible.
+No, because there is no relation between the money you send and the work that 
+is done.  But a receipt is possible.
+
 
 
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/sql.txt
+++ b/runtime/doc/sql.txt
@@ -1,4 +1,4 @@
-*sql.txt*   	For Vim version 7.0c.  Last change: Fri Jan 06 2006 8:09:25 AM
+*sql.txt*   	For Vim version 7.0c.  Last change: Tue Mar 28 2006 9:33:14 PM
 
 by David Fishburn
 
@@ -17,6 +17,16 @@ 2. SQL Dialects		                       
     2.1 SQLSetType		        	|SQLSetType|
     2.2 SQL Dialect Default		        |sql-type-default|
 3. Adding new SQL Dialects		        |sql-adding-dialects|
+4. OMNI SQL Completion  		        |sql-completion|
+    4.1 Static mode		        	|sql-completion-static|
+    4.2 Dynamic mode    		        |sql-completion-dynamic|
+    4.3 Tutorial				|sql-completion-tutorial|
+        4.3.1 Complete Tables			|sql-completion-tables|
+        4.3.2 Complete Columns			|sql-completion-columns|
+        4.3.3 Complete Procedures		|sql-completion-procedures|
+        4.3.4 Complete Views			|sql-completion-views|
+    4.4 Completion Customization		|sql-completion-customization|
+    4.5 Customizing Maps			|sql-completion-maps|
 
 ==============================================================================
 1. Navigation	        			*sql-navigation*
@@ -89,7 +99,7 @@ file): >
 
 1.3 Predefined Object Motions                   *sql-predefined-objects*
 -----------------------------
-Most relational databases support various standard features, tables, indicies,
+Most relational databases support various standard features, tables, indices,
 triggers and stored procedures.  Each vendor also has a variety of proprietary
 objects.  The next set of maps have been created to help move between these
 objects.  Depends on which database vendor you are using, the list of objects
@@ -293,6 +303,333 @@ No changes are necessary to the SQLSetTy
 pickup the new SQL files and load them when you issue the SQLSetType command. 
 
 
+==============================================================================
+4. OMNI SQL Completion  		        *sql-completion* 
+                                                *omni-sql-completion*
 
+Vim 7 includes a code completion interface and functions which allows plugin
+developers to build in code completion for any language.  Vim 7 includes 
+code completion for the SQL language.
+
+There are two modes to the SQL completion plugin, static and dynamic.  The
+static mode populates the popups with the data generated from current syntax
+highlight rules.  The dynamic mode populates the popups with data retrieved
+directly from a database.  This includes, table lists, column lists,
+procedures names and more.
+
+4.1 Static Mode  		                *sql-completion-static*
+---------------
+The static popups created contain items defined by the active syntax rules
+while editing a file with a filetype of SQL.  The plugin defines (by default)
+various maps to help the user refine which list of items they wish displayed.
+The defaults static maps are: >
+        imap <buffer> <C-C>a <C-\><C-O>:let b:sql_compl_type='syntax'<CR><C-X><C-O>
+        imap <buffer> <C-C>s <C-\><C-O>:let b:sql_compl_type='sqlStatement'<CR><C-X><C-O>
+        imap <buffer> <C-C>f <C-\><C-O>:let b:sql_compl_type='sqlFunction'<CR><C-X><C-O>
+        imap <buffer> <C-C>k <C-\><C-O>:let b:sql_compl_type='sqlKeyword'<CR><C-X><C-O>
+        imap <buffer> <C-C>o <C-\><C-O>:let b:sql_compl_type='sqlOption'<CR><C-X><C-O>
+        imap <buffer> <C-C>T <C-\><C-O>:let b:sql_compl_type='sqlType'<CR><C-X><C-O>
+< 
+The static maps (which are based on the syntax highlight groups) follow this
+format: >
+    imap <buffer> <C-C>k <C-\><C-O>:let b:sql_compl_type='sqlKeyword'<CR><C-X><C-O>
+<
+This command breaks down as: >
+    imap                   - Create an insert map
+    <buffer>               - Only for this buffer
+    <C-C>k             - Your choice of key map
+    <C-\><C-O>             - Execute one command, return to Insert mode
+    :let b:sql_compl_type= - Choose the highlight group's entries to display.
+                             You can view a list of highlight group names to
+                             choose from by executing the
+                                 :syntax list
+                             command while editing a SQL file.
+    'sqlKeyword'           - Display the items for the sqlKeyword highlight
+                             group
+    <CR>                   - Execute the :let command
+    <C-X><C-O>             - Trigger the standard omni completion key stroke.
+                             By setting the b:sql_compl_type variable, this
+                             instructs the SQL completion plugin to populate
+                             the popup with items from the sqlKeyword highlight
+                             group.  The plugin will also cache this result
+                             until Vim is restarted.  The syntax list is 
+                             retrieved using the syntaxcomplete plugin.
+<
+Setting b:sql_compl_type = 'syntax' is a special case.  This instructs the
+syntaxcomplete plugin to retrieve all syntax items.  So this will effectively
+work for any of Vim's SQL syntax files.  At the time of writing this includes
+10 different syntax files for the different dialects of SQL (see section 3
+above, |sql-dialects|).
+
+Here are some examples of the entries which are pulled from the syntax files: >
+     All
+         - Contains the contents of all syntax highlight groups
+     Statements
+         - Select, Insert, Update, Delete, Create, Alter, ...
+     Functions
+         - Min, Max, Trim, Round, Date, ...
+     Keywords
+         - Index, Database, Having, Group, With
+     Options
+         - Isolation_level, On_error, Qualify_owners, Fire_triggers, ...
+     Types
+         - Integer, Char, Varchar, Date, DateTime, Timestamp, ...
+<
+ 
+4.2 Dynamic Mode  		                *sql-completion-dynamic*
+----------------
+Dynamic mode populates the popups with data directly from a database.  In
+order for the dynamic feature to be enabled you must have the dbext.vim
+plugin installed, (http://vim.sourceforge.net/script.php?script_id=356).
+
+Dynamic mode is used by several features of the SQL completion plugin.  
+After installing the dbext plugin see the |dbext-tutorial| for additional
+configuration and usage.  The dbext plugin allows the SQL completion plugin
+to display a list of tables, procedures, views and columns. >
+     Table List
+         - All tables for all schema owners
+     Procedure List
+         - All stored procedures for all schema owners
+     View List
+         - All stored procedures for all schema owners
+     Column List
+         - For the selected table, the columns that are part of the table
+<
+To enable the popup, while in INSERT mode, use the following key combinations
+for each group (where <C-C> means hold the CTRL key down while pressing 
+the space bar):
+     Table List             - <C-C>t
+                            - <C-X><C-O> (the default map assumes tables)
+     Stored Procedure List  - <C-C>p
+     View List              - <C-C>v
+     Column List            - <C-C>c
+                            - .<C-X><C-O>
+                            - If <C-X><C-O> is pressed following a period
+                              it is assumed you are asking for a column list.
+                            - When viewing a popup window displaying the list
+                              of tables, you can press <C-Right>, this will
+                              replace the table currently highlighted with
+                              the column list for that table.
+                            - When viewing a popup window displaying the list
+                              of columns, you can press <C-Left>, this will
+                              replace the column list with the list of tables.
+ 
+The SQL completion plugin caches various lists that are displayed in
+the popup window.  This makes the re-displaying of these lists very
+fast.  If new tables or columns are added to the database it may become 
+necessary to clear the plugins cache.  The default map for this is: >
+        imap <buffer> <C-C>R <C-O>:let b:sql_compl_type='ResetCache'<CR><C-X><C-O>
+<
+ 
+4.3 SQL Tutorial				*sql-completion-tutorial*
+----------------
+ 
+This tutorial is designed to take you through the common features of the SQL
+completion plugin so that: >
+     a) You gain familiarity with the plugin
+     b) You are introduced to some of the more common features
+     c) Show how to customize it to your preferences
+     d) Demonstrate "Best of Use" of the plugin (easiest way to configure).
+<
+First, create a new buffer: >
+     :e tutorial.sql
+<
+
+Static features
+---------------
+To take you through the various lists, simply enter insert mode, hit:
+    <C-C>s   (show SQL statements)
+At this point, you can page down through the list until you find "select".
+If you are familiar with the item you are looking for, for example you know
+the statement begins with the letter "s".  You can type ahead (without the
+quotes) "se" then press: 
+    <C-Spact>t 
+Assuming "select" is highlighted in the popup list press <Enter> to choose
+the entry.  Now type:
+    * fr<C-C>a (show all syntax items)
+choose "from" from the popup list.
+
+When writing stored procedures using the "type" list is useful.  It contains
+a list of all the database supported types.  This may or may not be true
+depending on the syntax file you are using.  The SQL Anywhere syntax file
+(sqlanywhere.vim) has support for this: >
+     BEGIN
+        DECLARE customer_id <C-C>T <-- Choose a type from the list
+< 
+
+Dynamic features
+----------------
+To take advantage of the dynamic features you must first install the 
+dbext.vim plugin (http://vim.sourceforge.net/script.php?script_id=356).  It
+also comes with a tutorial.  From the SQL completion plugin's perspective,
+the main feature dbext provides is a connection to a database.  dbext
+connection profiles are the most efficient mechanism to define connection
+information.  Once connections have been setup, the SQL completion plugin
+uses the features of dbext in the background to populate the popups.
+
+What follows assumes dbext.vim has been correctly configured, a simple test
+is to run the command, :DBListTable.  If a list of tables is shown, you know
+dbext.vim is working as expected.  If not, please consult the dbext.txt 
+documentation.
+
+Assuming you have followed the |dbext-tutorial| you can press <C-C>t to
+display a list of tables.  There is a delay while dbext is creating the table
+list.  After the list is displayed press <C-W>.  This will remove both the 
+popup window and the table name already chosen when the list became active. >
+ 
+ 4.3.1 Table Completion:			*sql-completion-tables*
+<
+Press <C-C>t to display a list of tables from within the database you
+have connected via the dbext plugin.  
+NOTE: All of the SQL completion popups support typing a prefix before pressing
+the key map.  This will limit the contents of the popup window to just items
+beginning with those characters.  >
+ 
+ 4.3.2 Column Completion:			*sql-completion-columns*
+<
+The SQL completion plugin can also display a list of columns for particular
+tables.  The column completion is trigger via <C-C>c.
+
+NOTE: The following example uses <C-Right> to trigger a column list while
+the popup window is active.  This map is only available on the Windows
+platforms since *nix does not recognize CTRL and the right arrow held down
+together.  If you wish to enable this functionality on a *nix platform choose
+a key and create this mapping (see |sql-completion-maps| for further 
+details on where to create this imap): >
+    imap <buffer> <your_keystroke>  <CR><C-\><C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
+<
+Example of using column completion:
+     - Press <C-C>t again to display the list of tables.  
+     - When the list is displayed in the completion window, press <C-Right>,
+       this will replace the list of tables, with a list of columns for the
+       table highlighted (after the same short delay).  
+     - If you press <C-Left>, this will again replace the column list with the
+       list of tables.  This allows you to drill into tables and column lists
+       very quickly.  
+     - Press <C-Right> again while the same table is highlighted.  You will
+       notice there is no delay since the column list has been cached.  If you
+       change the schema of a cached table you can press <C-C>R, which
+       clears the SQL completion cache.  
+     - NOTE: <C-Right> and <C-Left> have been designed to work while the
+       completion window is active.  If you use these maps when the completion
+       window is not active a carriage return will be inadvertently entered in
+       your buffer.
+ 
+Lets look how we can build a SQL statement dynamically.  A select statement
+requires a list of columns.  There are two ways to build a column list using
+the SQL completion plugin. >
+    One column at a time:
+<       1. After typing SELECT press <C-C>t to display a list of tables.
+        2. Choose a table from the list.
+        3. Press <C-Right> to display a list of columns.
+        4. Choose the column from the list and press enter.
+        5. Enter a "," and press <C-C>c.  Generating a column list
+           generally requires having the cursor on a table name.  The plugin
+           uses this name to determine what table to retrieve the column list.  
+           In this step, since we are pressing <C-C>c without the cursor 
+           on a table name the column list displayed will be for the previous 
+           table.  Choose a different column and move on. 
+        6. Repeat step 5 as often as necessary. >
+    All columns for a table: 
+<       1. After typing SELECT press <C-C>t to display a list of tables.
+        2. Highlight the table you need the column list for.
+        3. Press <Enter> to choose the table from the list.
+        4. Press <C-C>l to request a comma separated list of all columns
+           for this table.
+        5. Based on the table name chosen in step 3, the plugin attempts to
+           decide on a reasonable table alias.  You are then prompted to
+           either accept of change the alias.  Press OK.
+        6. The table name is replaced with the column list of the table is
+           replaced with the comma separate list of columns with the alias
+           prepended to each of the columns.
+        7. Step 3 and 4 can be replaced by pressing <C-C>L, which has
+           a <CR> embedded in the map to choose the currently highlighted 
+           table in the list.
+
+There is a special provision when writing select statements.  Consider the
+following statement: >
+     select * 
+       from customer c,
+            contact cn,
+            department as dp,
+            employee e,
+            site_options so
+      where c.
+<
+In INSERT mode after typing the final "c." which is an alias for the
+"customer" table, you can press either <C-C>c or <C-X><C-O>.  This will
+popup a list of columns for the customer table.  It does this by looking back
+to the beginning of the select statement and finding a list of the tables
+specified in the FROM clause.  In this case it notes that in the string
+"customer c", "c" is an alias for the customer table.  The optional "AS"
+keyword is also supported, "customer AS c". >
+ 
+ 
+ 4.3.3 Procedure Completion:			*sql-completion-procedures*
+<
+Similar to the table list, <C-C>p, will display a list of stored
+procedures stored within the database. >
+ 
+ 4.3.4 View Completion:				*sql-completion-views*
+<
+Similar to the table list, <C-C>v, will display a list of views in the
+database.
+
+ 
+4.4 Completion Customization			*sql-completion-customization*
+----------------------------
+
+The SQL completion plugin can be customized through various options set in
+your |vimrc|: >
+    omni_sql_no_default_maps
+<       - Default: This variable is not defined
+        - If this variable is defined, no maps are created for OMNI
+          completion.  See |sql-completion-maps| for further discussion.
+>
+    omni_sql_use_tbl_alias
+<       - Default: a
+        - This setting is only used when generating a comma separated
+          column list.  By default the map is <C-C>l.  When generating
+          a column list, an alias can be prepended to the beginning of each
+          column, for example:  e.emp_id, e.emp_name.  This option has three 
+          settings: >
+                n - do not use an alias
+                d - use the default (calculated) alias
+                a - ask to confirm the alias name
+<
+          An alias is determined following a few rules:
+               1.  If the table name has an '_', then use it as a separator: >
+                   MY_TABLE_NAME --> MTN
+                   my_table_name --> mtn
+                   My_table_NAME --> MtN
+<              2.  If the table name does NOT contain an '_', but DOES use
+                   mixed case then the case is used as a separator: >
+                   MyTableName --> MTN
+<              3.  If the table name does NOT contain an '_', and does NOT 
+                   use mixed case then the first letter of the table is used: >
+                   mytablename --> m
+                   MYTABLENAME --> M
+<
+ 
+4.5 Customizing Maps				*sql-completion-maps*
+--------------------
+
+You can create as many additional key maps as you like.  Generally, the maps
+will be specifying different syntax highlight groups.  
+
+If you do not wish the default maps created or the key choices do not work on
+your platform (often a case on *nix) you define the following variable in
+your |vimrc|: >
+    let g:omni_sql_no_default_maps = 1
+< 
+Do no edit ftplugin/sql.vim directly!  If you change this file your changes
+will be over written on future updates.  Vim has a special directory structure
+that allows you to make customizations without changing the files that are
+included with the Vim distribution.  If you wish to customize the maps
+create an after/ftplugin/sql.vim (see |after-directory|) and place the same
+maps from the ftplugin/sql.vim in it using your own key strokes.  <C-C> was
+chosen since it will work on both Windows and *nix platforms.  On the windows
+platform you can also use <C-Space> or ALT keys.
+ 
 
 vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5307,6 +5307,7 @@ ft-sh-syntax	syntax.txt	/*ft-sh-syntax*
 ft-spec-plugin	filetype.txt	/*ft-spec-plugin*
 ft-spup-syntax	syntax.txt	/*ft-spup-syntax*
 ft-sql	filetype.txt	/*ft-sql*
+ft-sql-omni	insert.txt	/*ft-sql-omni*
 ft-sql-syntax	syntax.txt	/*ft-sql-syntax*
 ft-sqlanywhere-syntax	syntax.txt	/*ft-sqlanywhere-syntax*
 ft-sqlinformix-syntax	syntax.txt	/*ft-sqlinformix-syntax*
@@ -5746,6 +5747,7 @@ i_CTRL-B-gone	version5.txt	/*i_CTRL-B-go
 i_CTRL-C	insert.txt	/*i_CTRL-C*
 i_CTRL-D	insert.txt	/*i_CTRL-D*
 i_CTRL-E	insert.txt	/*i_CTRL-E*
+i_CTRL-F	indent.txt	/*i_CTRL-F*
 i_CTRL-G_<Down>	insert.txt	/*i_CTRL-G_<Down>*
 i_CTRL-G_<Up>	insert.txt	/*i_CTRL-G_<Up>*
 i_CTRL-G_CTRL-J	insert.txt	/*i_CTRL-G_CTRL-J*
@@ -5916,6 +5918,7 @@ key-mapping	map.txt	/*key-mapping*
 key-notation	intro.txt	/*key-notation*
 key-variable	eval.txt	/*key-variable*
 keycodes	intro.txt	/*keycodes*
+keymap-accents	mbyte.txt	/*keymap-accents*
 keymap-file-format	mbyte.txt	/*keymap-file-format*
 keymap-hebrew	mbyte.txt	/*keymap-hebrew*
 keypad-0	intro.txt	/*keypad-0*
@@ -6386,6 +6389,7 @@ ole-normal	if_ole.txt	/*ole-normal*
 ole-registration	if_ole.txt	/*ole-registration*
 ole-sendkeys	if_ole.txt	/*ole-sendkeys*
 ole-setforeground	if_ole.txt	/*ole-setforeground*
+omni-sql-completion	sql.txt	/*omni-sql-completion*
 online-help	various.txt	/*online-help*
 opening-window	windows.txt	/*opening-window*
 operator	motion.txt	/*operator*
@@ -6905,6 +6909,16 @@ sponsor.txt	sponsor.txt	/*sponsor.txt*
 spoon	os_unix.txt	/*spoon*
 spup.vim	syntax.txt	/*spup.vim*
 sql-adding-dialects	sql.txt	/*sql-adding-dialects*
+sql-completion	sql.txt	/*sql-completion*
+sql-completion-columns	sql.txt	/*sql-completion-columns*
+sql-completion-customization	sql.txt	/*sql-completion-customization*
+sql-completion-dynamic	sql.txt	/*sql-completion-dynamic*
+sql-completion-maps	sql.txt	/*sql-completion-maps*
+sql-completion-procedures	sql.txt	/*sql-completion-procedures*
+sql-completion-static	sql.txt	/*sql-completion-static*
+sql-completion-tables	sql.txt	/*sql-completion-tables*
+sql-completion-tutorial	sql.txt	/*sql-completion-tutorial*
+sql-completion-views	sql.txt	/*sql-completion-views*
 sql-dialects	sql.txt	/*sql-dialects*
 sql-macros	sql.txt	/*sql-macros*
 sql-matchit	sql.txt	/*sql-matchit*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0c.  Last change: 2006 Mar 28
+*todo.txt*      For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,10 +30,7 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-The 16 bit DOS version compiles now, but it's still too low on memory, writing
-a file fails when 'writebackup' is set.
-
-Have argv() return the arguments in a List.
+When "search" is in 'foldopen' have [s and ]s open folds.
 
 New Hungarian dictionary. (Laci Nemeth)
     test COMPOUNDFORBIDFLAG
@@ -49,9 +46,6 @@ New Hungarian dictionary. (Laci Nemeth)
     Also: when the environment variable exists, use it.  If it doesn't
     exist, set it.  Requires good names: $VIM_USER_VIMRC  $VIM_USER_DIR
     Add a menu item "Preferences" that does "sp $MYVIMRC".
--   The Replace dialog takes "\r" literal, unless "replace all" is used.
-    Need to escape backslashes.
-    Win32: the text to replace with isn't remembered.
 
 Add more tests for all new functionality in Vim 7.  Especially new functions.
 
@@ -461,7 +455,8 @@ 9   Pressing CTRL-C often crashes the co
 8   DJGPP: "cd c:" can take us to a directory that no longer exists.
     change_drive() doesn't check this.  How to check for this error?
 9   The 16 bit version runs out of memory very quickly.  Should find unused
-    code and reduce static data.
+    code and reduce static data.  Resetting 'writebackup' helps to be able to
+    write a file.
 9   Crash when running on Windows 98 in a console window and pressing CTRL-C.
     Happens now and then.  When debugging Vim in gdb this also happens.  Since
     the console crashes, might be a bug in the DOS console.  Resetting
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0c.  Last change: 2006 Mar 28
+*version7.txt*  For Vim version 7.0c.  Last change: 2006 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -692,6 +692,7 @@ New and extended functions: ~
 
 |add()|			append an item to a List
 |append()|		append List of lines to the buffer
+|argv()|		without an argument return the whole argument list
 |browsedir()|		dialog to select a directory
 |bufnr()|		takes an extra argument: create buffer
 |byteidx()| 		index of a character (Ilya Sher)
@@ -2239,4 +2240,19 @@ text.
 GUI: When there are left and righ scrollbars, ":tabedit" kept them instead of
 using the one that isn't needed.
 
+Using "gP" to replace al the text could leave the cursor below the last line,
+causing ml_get errors.
+
+When 'cursorline' is set don't use the highlighting when Visual mode is
+active, otherwise it's difficult to see the selected area.
+
+The matchparen plugin restricts the search to 100 lines, to avoid a long delay
+when there are closed folds.
+
+Sometimes using CTRL-X s to list spelling suggestions used text from another
+line.
+
+Win32: Set the default for 'isprint' back to the wrong default "@,~-255",
+because many people use Windows-1252 while 'encoding' is "latin1".
+
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/evim.vim
+++ b/runtime/evim.vim
@@ -1,6 +1,6 @@
 " Vim script for Evim key bindings
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2002 Mar 04
+" Last Change:	2006 Mar 29
 
 " Don't use Vi-compatible mode.
 set nocompatible
@@ -15,8 +15,8 @@ set insertmode
 set hidden
 
 " Make cursor keys ignore wrapping
-inoremap <Down> <C-O>gj
-inoremap <Up> <C-O>gk
+inoremap <Down> <C-R>=pumvisible() ? "\<lt>Down>" : "\<lt>C-O>gj"<CR>
+inoremap <Up> <C-R>=pumvisible() ? "\<lt>Up>" : "\<lt>C-O>gk"<CR>
 
 " CTRL-F does Find dialog instead of page forward
 noremap <C-F> :promptfind<CR>
--- a/runtime/ftplugin/sql.vim
+++ b/runtime/ftplugin/sql.vim
@@ -2,7 +2,7 @@
 " Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase)
 " Version:     1.0
 " Maintainer:  David Fishburn <fishburn at ianywhere dot com>
-" Last Change: Wed Jan 11 2006 10:04:55 AM
+" Last Change: Tue Mar 28 2006 2:26:48 PM
 " Download:    http://vim.sourceforge.net/script.php?script_id=454
 
 " For more details please use:
@@ -367,16 +367,35 @@ if exists('&omnifunc')
     setlocal omnifunc=sqlcomplete#Complete
     " Prevent the intellisense plugin from loading
     let b:sql_vis = 1
-    imap <buffer> <c-space>t <C-O>:let b:sql_compl_type='table'<CR><C-X><C-O>
-    imap <buffer> <c-space>p <C-O>:let b:sql_compl_type='procedure'<CR><C-X><C-O>
-    imap <buffer> <c-space>v <C-O>:let b:sql_compl_type='view'<CR><C-X><C-O>
-    imap <buffer> <c-space>c <C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
-    imap <buffer> <c-space>f <C-O>:let b:sql_compl_type='function'<CR><C-X><C-O>
-    imap <buffer> <c-space>o <C-O>:let b:sql_compl_type='option'<CR><C-X><C-O>
-    imap <buffer> <c-right> <C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
+    if !exists('g:omni_sql_no_default_maps')
+        " Static maps which use populate the completion list
+        " using Vim's syntax highlighting rules
+        imap <buffer> <c-c>a <C-\><C-O>:let b:sql_compl_type='syntax'<CR><C-X><C-O>
+        imap <buffer> <c-c>k <C-\><C-O>:let b:sql_compl_type='sqlKeyword'<CR><C-X><C-O>
+        imap <buffer> <c-c>f <C-\><C-O>:let b:sql_compl_type='sqlFunction'<CR><C-X><C-O>
+        imap <buffer> <c-c>o <C-\><C-O>:let b:sql_compl_type='sqlOption'<CR><C-X><C-O>
+        imap <buffer> <c-c>T <C-\><C-O>:let b:sql_compl_type='sqlType'<CR><C-X><C-O>
+        imap <buffer> <c-c>s <C-\><C-O>:let b:sql_compl_type='sqlStatement'<CR><C-X><C-O>
+        " Dynamic maps which use populate the completion list
+        " using the dbext.vim plugin
+        imap <buffer> <c-c>t <C-\><C-O>:let b:sql_compl_type='table'<CR><C-X><C-O>
+        imap <buffer> <c-c>p <C-\><C-O>:let b:sql_compl_type='procedure'<CR><C-X><C-O>
+        imap <buffer> <c-c>v <C-\><C-O>:let b:sql_compl_type='view'<CR><C-X><C-O>
+        imap <buffer> <c-c>c <C-\><C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
+        imap <buffer> <c-c>l <C-\><C-O>:let b:sql_compl_type='column_csv'<CR><C-X><C-O>
+        " The next 3 maps are only to be used while the completion window is
+        " active due to the <CR> at the beginning of the map
+        imap <buffer> <c-c>L <CR><C-\><C-O>:let b:sql_compl_type='column_csv'<CR><C-X><C-O>
+        if has('win32')
+            imap <buffer> <c-right>  <CR><C-\><C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
+            imap <buffer> <c-left>   <C-\><C-O>:let b:sql_compl_type='tableReset'<CR><C-X><C-O>
+        endif
+        " Remove any cached items useful for schema changes
+        imap <buffer> <c-c>R <C-\><C-O>:let b:sql_compl_type='resetCache'<CR><C-X><C-O>
+    endif
 endif
 
 let &cpo = s:save_cpo
 
-" vim:sw=4:ff=unix:
+" vim:sw=4:
 
--- a/runtime/lang/menu_ja_jp.euc-jp.vim
+++ b/runtime/lang/menu_ja_jp.euc-jp.vim
@@ -330,3 +330,8 @@ if has('iconv')
   endif
   an 10.396.120.130 ファイル(&F).エンコード指定(&E)\.\.\..保存(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
 endif
+
+" filler to avoid the line above being recognized as a modeline
+" filler
+" filler
+" filler
--- a/runtime/lang/menu_ja_jp.utf-8.vim
+++ b/runtime/lang/menu_ja_jp.utf-8.vim
@@ -330,3 +330,8 @@ if has('iconv')
   endif
   an 10.396.120.130 <ゃ(&F).潟潟若絎(&E)\.\.\..篆絖(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
 endif
+
+" filler to avoid the line above being recognized as a modeline
+" filler
+" filler
+" filler
--- a/runtime/lang/menu_japanese_japan.932.vim
+++ b/runtime/lang/menu_japanese_japan.932.vim
@@ -330,3 +330,8 @@ if has('iconv')
   endif
   an 10.396.120.130 t@C(&F).GR[hw(&E)\.\.\..(&S)\.\.\..UTF-8(&8)<Tab>fenc=utf-8 :set fenc=utf-8 \| w<CR>
 endif
+
+" filler to avoid the line above being recognized as a modeline
+" filler
+" filler
+" filler
--- a/runtime/plugin/matchparen.vim
+++ b/runtime/plugin/matchparen.vim
@@ -1,6 +1,6 @@
 " Vim plugin for showing matching parens
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2006 Mar 14
+" Last Change: 2006 Mar 29
 
 " Exit quickly when:
 " - this plugin was already loaded (or disabled)
@@ -63,15 +63,22 @@ function! s:Highlight_Matching_Pair()
 
   " Figure out the arguments for searchpairpos().
   " Restrict the search to visible lines with "stopline".
+  " And avoid searching very far (e.g., for closed folds)
   if i % 2 == 0
     let s_flags = 'nW'
     let c2 = plist[i + 1]
     let stopline = line('w$')
+    if stopline > c_lnum + 100
+      let stopline = c_lnu + 100
+    endif
   else
     let s_flags = 'nbW'
     let c2 = c
     let c = plist[i - 1]
     let stopline = line('w0')
+    if stopline < c_lnum - 100
+      let stopline = c_lnu - 100
+    endif
   endif
   if c == '['
     let c = '\['
--- a/runtime/syntax/help.vim
+++ b/runtime/syntax/help.vim
@@ -1,14 +1,14 @@
 " Vim syntax file
 " Language:	Vim help file
 " Maintainer:	Bram Moolenaar (Bram@vim.org)
-" Last Change:	2006 Mar 26
+" Last Change:	2006 Mar 29
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
   finish
 endif
 
-syn match helpHeadline		"^[A-Z ]\+[ ]\+\*"me=e-1
+syn match helpHeadline		"^[-A-Z ]\+[ \t]\+\*"me=e-1
 syn match helpSectionDelim	"^=\{3,}.*===$"
 syn match helpSectionDelim	"^-\{3,}.*--$"
 syn region helpExample		matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<"
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -47,7 +47,8 @@ syn match   pythonFunction	"[a-zA-Z_][a-
 syn keyword pythonRepeat	for while
 syn keyword pythonConditional	if elif else
 syn keyword pythonOperator	and in is not or
-syn keyword pythonPreCondit	import from
+" AS will be a keyword in Python 3
+syn keyword pythonPreCondit	import from as
 syn match   pythonComment	"#.*$" contains=pythonTodo
 syn keyword pythonTodo		TODO FIXME XXX contained
 
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Vim 7.0 script
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	March 22, 2006
-" Version:	7.0-35
+" Last Change:	March 29, 2006
+" Version:	7.0-37	NOT RELEASED
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -16,7 +16,7 @@ syn keyword vimTodo contained	COMBAK	NOT
 syn cluster vimCommentGroup	contains=vimTodo,@Spell
 
 " regular vim commands {{{2
-syn keyword vimCommand contained	ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] caddb[uffer] cad[dexpr] caddf[ile] cal[l] cat[ch] cb[uffer] cc ccl[ose] cd ce[nter] cex[pr] cf[ile] cfir[st] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] DeleteFirst delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis diffu[pdate] dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] earlier echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endfo[r] endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] Explore exu[sage] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] for fu[nction] g[lobal] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] Hexplore hid[e] his[tory] I ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] laddb[uffer] lad[dexpr] laddf[ile] lan[guage] la[st] later lb[uffer] lc[d] lch[dir] lcl[ose] le[ft] lefta[bove] lex[pr] lf[ile] lfir[st] lg[etfile] lgr[ep] lgrepa[dd] lh[elpgrep] l[ist] ll lla[st] lli[st] lmak[e] lm[ap] lmapc[lear] lnew[er] lne[xt] lN[ext] lnf[ile] lNf[ile] ln[oremap] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lpf[ile] lp[revious] lr[ewind] ls lt[ag] lu[nmap] lv[imgrep] lvimgrepa[dd] lw[indow] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mksp[ell] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] nbkey NetrwSettings new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] Nread nu[mber] nun[map] Nw omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] profd[el] prof[ile] prompt promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] san[dbox] sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] Sexplore sf[ind] sfir[st] sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sm[ap] smapc[lear] sme smenu sn[ext] sN[ext] sni[ff] sno[magic] snor[emap] snoreme snoremenu sor[t] so[urce] spelld[ump] spe[llgood] spelli[nfo] spellr[epall] spellu[ndo] spellw[rong] sp[lit] spr[evious] sre[wind] sta[g] startg[replace] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sunm[ap] sus[pend] sv[iew] syncbind t tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabl[ast] tabmove tabnew tabn[ext] tabN[ext] tabo[nly] tabp[revious] tabr[ewind] tabs ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] the th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] Vexplore v[global] vie[w] vim[grep] vimgrepa[dd] vi[sual] viu[sage] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] win[size] wn[ext] wN[ext] wp[revious] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] xm[ap] xmapc[lear] xme xmenu XMLent XMLns xn[oremap] xnoreme xnoremenu xu[nmap] y[ank] 
+syn keyword vimCommand contained	ab[breviate] abc[lear] abo[veleft] al[l] arga[dd] argd[elete] argdo arge[dit] argg[lobal] argl[ocal] ar[gs] argu[ment] as[cii] bad[d] ba[ll] bd[elete] be bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bN[ext] bo[tright] bp[revious] brea[k] breaka[dd] breakd[el] breakl[ist] br[ewind] bro[wse] bufdo b[uffer] buffers bun[load] bw[ipeout] ca[bbrev] cabc[lear] caddb[uffer] cad[dexpr] caddf[ile] cal[l] cat[ch] cb[uffer] cc ccl[ose] cd ce[nter] cex[pr] cf[ile] cfir[st] cgetb[uffer] cgete[xpr] cg[etfile] c[hange] changes chd[ir] che[ckpath] checkt[ime] cla[st] cl[ist] clo[se] cmapc[lear] cnew[er] cn[ext] cN[ext] cnf[ile] cNf[ile] cnorea[bbrev] col[der] colo[rscheme] comc[lear] comp[iler] conf[irm] con[tinue] cope[n] co[py] cpf[ile] cp[revious] cq[uit] cr[ewind] cuna[bbrev] cu[nmap] cw[indow] debugg[reedy] delc[ommand] d[elete] DeleteFirst delf[unction] delm[arks] diffg[et] diffoff diffpatch diffpu[t] diffsplit diffthis diffu[pdate] dig[raphs] di[splay] dj[ump] dl[ist] dr[op] ds[earch] dsp[lit] earlier echoe[rr] echom[sg] echon e[dit] el[se] elsei[f] em[enu] emenu* endfo[r] endf[unction] en[dif] endt[ry] endw[hile] ene[w] ex exi[t] Explore exu[sage] f[ile] files filetype fina[lly] fin[d] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] folddoc[losed] foldd[oopen] foldo[pen] for fu[nction] g[lobal] go[to] gr[ep] grepa[dd] ha[rdcopy] h[elp] helpf[ind] helpg[rep] helpt[ags] Hexplore hid[e] his[tory] I ia[bbrev] iabc[lear] if ij[ump] il[ist] imapc[lear] inorea[bbrev] is[earch] isp[lit] iuna[bbrev] iu[nmap] j[oin] ju[mps] k keepalt keepj[umps] kee[pmarks] laddb[uffer] lad[dexpr] laddf[ile] lan[guage] la[st] later lb[uffer] lc[d] lch[dir] lcl[ose] le[ft] lefta[bove] lex[pr] lf[ile] lfir[st] lgetb[uffer] lgete[xpr] lg[etfile] lgr[ep] lgrepa[dd] lh[elpgrep] l[ist] ll lla[st] lli[st] lmak[e] lm[ap] lmapc[lear] lnew[er] lne[xt] lN[ext] lnf[ile] lNf[ile] ln[oremap] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lpf[ile] lp[revious] lr[ewind] ls lt[ag] lu[nmap] lv[imgrep] lvimgrepa[dd] lw[indow] mak[e] ma[rk] marks mat[ch] menut[ranslate] mk[exrc] mks[ession] mksp[ell] mkvie[w] mkv[imrc] mod[e] m[ove] mzf[ile] mz[scheme] nbkey NetrwSettings new n[ext] N[ext] nmapc[lear] noh[lsearch] norea[bbrev] Nread nu[mber] nun[map] Nw omapc[lear] on[ly] o[pen] opt[ions] ou[nmap] pc[lose] ped[it] pe[rl] perld[o] po[p] popu popu[p] pp[op] pre[serve] prev[ious] p[rint] P[rint] profd[el] prof[ile] prompt promptf[ind] promptr[epl] ps[earch] pta[g] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptN[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pw[d] pyf[ile] py[thon] qa[ll] q[uit] quita[ll] r[ead] rec[over] redi[r] red[o] redr[aw] redraws[tatus] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] rub[y] rubyd[o] rubyf[ile] ru[ntime] rv[iminfo] sal[l] san[dbox] sa[rgument] sav[eas] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbN[ext] sbp[revious] sbr[ewind] sb[uffer] scripte[ncoding] scrip[tnames] se[t] setf[iletype] setg[lobal] setl[ocal] Sexplore sf[ind] sfir[st] sh[ell] sign sil[ent] sim[alt] sla[st] sl[eep] sm[agic] sm[ap] smapc[lear] sme smenu sn[ext] sN[ext] sni[ff] sno[magic] snor[emap] snoreme snoremenu sor[t] so[urce] spelld[ump] spe[llgood] spelli[nfo] spellr[epall] spellu[ndo] spellw[rong] sp[lit] spr[evious] sre[wind] sta[g] startg[replace] star[tinsert] startr[eplace] stj[ump] st[op] stopi[nsert] sts[elect] sun[hide] sunm[ap] sus[pend] sv[iew] syncbind t tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabl[ast] tabmove tabnew tabn[ext] tabN[ext] tabo[nly] tabp[revious] tabr[ewind] tabs ta[g] tags tc[l] tcld[o] tclf[ile] te[aroff] tf[irst] the th[row] tj[ump] tl[ast] tm tm[enu] tn[ext] tN[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] tu tu[nmenu] una[bbreviate] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] unm[ap] up[date] verb[ose] ve[rsion] vert[ical] Vexplore v[global] vie[w] vim[grep] vimgrepa[dd] vi[sual] viu[sage] vmapc[lear] vne[w] vs[plit] vu[nmap] wa[ll] wh[ile] winc[md] windo winp[os] win[size] wn[ext] wN[ext] wp[revious] wq wqa[ll] w[rite] ws[verb] wv[iminfo] X xa[ll] x[it] xm[ap] xmapc[lear] xme xmenu XMLent XMLns xn[oremap] xnoreme xnoremenu xu[nmap] y[ank] 
 syn match   vimCommand contained	"\<z[-+^.=]"
 
 " vimOptions are caught only when contained in a vimSet {{{2
@@ -473,6 +473,11 @@ syn match  vimContinue	"^\s*\\"
 syn region vimString	start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue
 syn match  vimCommentTitleLeader	'"\s\+'ms=s+1	contained
 
+" Searches: {{{2
+" =========
+syn match vimSearch	'^\s*[/?].*'		contains=vimSearchDelim
+syn match vimSearchDelim	'^\s*\zs[/?]\|[/?]$'	contained
+
 " Scripts  : perl,ruby : Benoit Cerrina {{{2
 " =======    python,tcl: Johannes Zellner
 
@@ -609,6 +614,8 @@ hi def link vimPatSepErr	vimPatSep
 hi def link vimPatSepZone	vimString
 hi def link vimPlainMark	vimMark
 hi def link vimPlainRegister	vimRegister
+hi def link vimSearch	vimString
+hi def link vimSearchDelim	Statement
 hi def link vimSetMod	vimOption
 hi def link vimSetString	vimString
 hi def link vimSpecFileMod	vimSpecFile
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -2992,7 +2992,7 @@ rm -f conftest.err conftest.$ac_objext \
   elif test "x$MACARCH" = "xintel"; then
     CPPFLAGS="$CPPFLAGS -arch intel"
     LDFLAGS="$LDFLAGS -arch intel"
-  else
+  elif test "x$MACARCH" = "xppc"; then
     CPPFLAGS="$CPPFLAGS -arch ppc"
     LDFLAGS="$LDFLAGS -arch ppc"
   fi
--- a/src/configure.in
+++ b/src/configure.in
@@ -136,7 +136,7 @@ if test "`(uname) 2>/dev/null`" = Darwin
   elif test "x$MACARCH" = "xintel"; then
     CPPFLAGS="$CPPFLAGS -arch intel"
     LDFLAGS="$LDFLAGS -arch intel"
-  else
+  elif test "x$MACARCH" = "xppc"; then
     CPPFLAGS="$CPPFLAGS -arch ppc"
     LDFLAGS="$LDFLAGS -arch ppc"
   fi
index bcd11d67c7ce67e8abb4232e3d425620ea893cb2..c66b0ceffbdd6af00184a6cc8f7c024333b61f62
GIT binary patch
literal 35539
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
XGrI>y6ilr;o<k1q>>o_r>)ieqYb6E*
--- a/src/edit.c
+++ b/src/edit.c
@@ -4497,6 +4497,8 @@ ins_complete(c)
 	    if (compl_col >= (colnr_T)startcol)
 		return FAIL;
 	    spell_expand_check_cap(compl_col);
+	    /* Need to obtain "line" again, it may have become invalid. */
+	    line = ml_get(curwin->w_cursor.lnum);
 	    compl_length = (int)curs_col - compl_col;
 	    compl_pattern = vim_strnsave(line + compl_col, compl_length);
 	    if (compl_pattern == NULL)
--- a/src/eval.c
+++ b/src/eval.c
@@ -6900,7 +6900,7 @@ static struct fst
     {"append",		2, 2, f_append},
     {"argc",		0, 0, f_argc},
     {"argidx",		0, 0, f_argidx},
-    {"argv",		1, 1, f_argv},
+    {"argv",		0, 1, f_argv},
     {"browse",		4, 4, f_browse},
     {"browsedir",	2, 2, f_browsedir},
     {"bufexists",	1, 1, f_bufexists},
@@ -7651,12 +7651,19 @@ f_argv(argvars, rettv)
 {
     int		idx;
 
-    idx = get_tv_number_chk(&argvars[0], NULL);
-    if (idx >= 0 && idx < ARGCOUNT)
-	rettv->vval.v_string = vim_strsave(alist_name(&ARGLIST[idx]));
-    else
-	rettv->vval.v_string = NULL;
-    rettv->v_type = VAR_STRING;
+    if (argvars[0].v_type != VAR_UNKNOWN)
+    {
+	idx = get_tv_number_chk(&argvars[0], NULL);
+	if (idx >= 0 && idx < ARGCOUNT)
+	    rettv->vval.v_string = vim_strsave(alist_name(&ARGLIST[idx]));
+	else
+	    rettv->vval.v_string = NULL;
+	rettv->v_type = VAR_STRING;
+    }
+    else if (rettv_list_alloc(rettv) == OK)
+	for (idx = 0; idx < ARGCOUNT; ++idx)
+	    list_append_string(rettv->vval.v_list,
+					       alist_name(&ARGLIST[idx]), -1);
 }
 
 /*
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -5352,6 +5352,8 @@ gui_mch_get_color(char_u *name)
 	{"DarkMagenta",  "#BB00BB"},
 	{"DarkGrey",	 "#BBBBBB"},
 	{"DarkYellow",	 "#BBBB00"},
+	{"Grey90",	 "#E5E5E5"},
+	{"Gray90",	 "#E5E5E5"},
 	{NULL, NULL}
     };
 
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -3642,6 +3642,8 @@ gui_mch_get_color(char_u *name)
 	{"Grey",	RGB(0xC0, 0xC0, 0xC0)}, /*W*/
 	{"lightgray",	RGB(0xE0, 0xE0, 0xE0)}, /*W*/
 	{"lightgrey",	RGB(0xE0, 0xE0, 0xE0)}, /*W*/
+	{"gray90",	RGB(0xE5, 0xE5, 0xE5)}, /*W*/
+	{"grey90",	RGB(0xE5, 0xE5, 0xE5)}, /*W*/
 	{"white",	RGB(0xFF, 0xFF, 0xFF)},
 	{"darkred",	RGB(0x80, 0x00, 0x00)}, /*W*/
 	{"red",		RGB(0xDD, 0x08, 0x06)}, /*M*/
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -2007,6 +2007,8 @@ gui_mch_get_color(char_u *name)
 	{"Grey",	    RGB(0xC0, 0xC0, 0xC0)},
 	{"LightGray",	    RGB(0xD3, 0xD3, 0xD3)},
 	{"LightGrey",	    RGB(0xD3, 0xD3, 0xD3)},
+	{"Gray90",	    RGB(0xE5, 0xE5, 0xE5)},
+	{"Grey90",	    RGB(0xE5, 0xE5, 0xE5)},
 	{"White",	    RGB(0xFF, 0xFF, 0xFF)},
 	{"DarkRed",	    RGB(0x80, 0x00, 0x00)},
 	{"Red",		    RGB(0xFF, 0x00, 0x00)},
--- a/src/gui_riscos.c
+++ b/src/gui_riscos.c
@@ -1145,6 +1145,8 @@ gui_mch_get_color(char_u *name)
 	{ "LightGrey",		grgb(211,	211,	211)	},
 	{ "DarkGray",		grgb(169,	169,	169)	},
 	{ "DarkGrey",		grgb(169,	169,	169)	},
+	{ "Grey90",		grgb(229,	229,	229)	},
+	{ "Gray90",		grgb(229,	229,	229)	},
 
 	{ "Black",		grgb(0,		0,	0)	},
 	{ "White",		grgb(255,	255,	255)	},
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -1070,6 +1070,12 @@ gui_mch_open(void)
     if (!IsWindowVisible(s_hwnd))
 	ShowWindow(s_hwnd, SW_SHOWDEFAULT);
 
+#ifdef MSWIN_FIND_REPLACE
+    /* Init replace string here, so that we keep it when re-opening the
+     * dialog. */
+    s_findrep_struct.lpstrReplaceWith[0] = NUL;
+#endif
+
     return OK;
 }
 
@@ -1339,6 +1345,8 @@ gui_mch_get_color(char_u *name)
 	{"Grey",		RGB(0xC0, 0xC0, 0xC0)},
 	{"LightGray",		RGB(0xE0, 0xE0, 0xE0)},
 	{"LightGrey",		RGB(0xE0, 0xE0, 0xE0)},
+	{"Gray90",		RGB(0xE5, 0xE5, 0xE5)},
+	{"Grey90",		RGB(0xE5, 0xE5, 0xE5)},
 	{"White",		RGB(0xFF, 0xFF, 0xFF)},
 	{"DarkRed",		RGB(0x80, 0x00, 0x00)},
 	{"Red",			RGB(0xFF, 0x00, 0x00)},
@@ -2370,11 +2378,8 @@ initialise_findrep(char_u *initial_strin
     if (wword)
 	s_findrep_struct.Flags |= FR_WHOLEWORD;
     if (entry_text != NULL && *entry_text != NUL)
-    {
 	vim_strncpy(s_findrep_struct.lpstrFindWhat, entry_text,
 					   s_findrep_struct.wFindWhatLen - 1);
-	s_findrep_struct.lpstrReplaceWith[0] = NUL;
-    }
     vim_free(entry_text);
 }
 #endif
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -2296,6 +2296,8 @@ gui_mch_get_color(reqname)
 	{"DarkMagenta",	"#BB00BB"},
 	{"DarkGrey",	"#BBBBBB"},
 	{"DarkYellow",	"#BBBB00"},
+	{"Gray90",	"#E5E5E5"},
+	{"Grey90",	"#E5E5E5"},
 	{NULL, NULL}
     };
 
--- a/src/option.c
+++ b/src/option.c
@@ -431,9 +431,10 @@ struct vimoption
 #define ISK_LATIN1  (char_u *)"@,48-57,_,192-255"
 
 /* 'isprint' for latin1 is also used for MS-Windows, where 0x80 is used for
- * the currency sign.  Thus this isn't really latin1... */
+ * the currency sign.  This isn't really latin1 but Windows-1252, but we can't
+ * detect that. */
 #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
-# define ISP_LATIN1 (char_u *)"@,128,161-255"
+# define ISP_LATIN1 (char_u *)"@,~-255"
 #else
 # define ISP_LATIN1 (char_u *)"@,161-255"
 #endif
--- a/src/screen.c
+++ b/src/screen.c
@@ -3106,8 +3106,9 @@ win_line(wp, lnum, startrow, endrow, noc
 #endif
 
 #ifdef FEAT_SYN_HL
-    /* Cursor line highlighting for 'cursorline'. */
-    if (wp->w_p_cul && lnum == wp->w_cursor.lnum)
+    /* Cursor line highlighting for 'cursorline'.  Not when Visual mode is
+     * active, because it's not clear what is selected then. */
+    if (wp->w_p_cul && lnum == wp->w_cursor.lnum && !VIsual_active)
     {
 	line_attr = hl_attr(HLF_CUL);
 	area_highlighting = TRUE;
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6186,9 +6186,9 @@ static char *(highlight_init_light[]) =
 #endif
 #ifdef FEAT_SYN_HL
 	CENT("CursorColumn term=reverse ctermbg=LightGrey",
-	     "CursorColumn term=reverse ctermbg=LightGrey guibg=LightGrey"),
+	     "CursorColumn term=reverse ctermbg=LightGrey guibg=Grey90"),
 	CENT("CursorLine term=underline cterm=underline",
-	     "CursorLine term=underline cterm=underline guibg=LightGrey"),
+	     "CursorLine term=underline cterm=underline guibg=Grey90"),
 #endif
 #ifdef FEAT_GUI
 	"Normal gui=NONE",
@@ -6262,9 +6262,9 @@ static char *(highlight_init_dark[]) =
 #endif
 #ifdef FEAT_SYN_HL
 	CENT("CursorColumn term=reverse ctermbg=DarkGrey",
-	     "CursorColumn term=reverse ctermbg=DarkGrey guibg=DarkGrey"),
+	     "CursorColumn term=reverse ctermbg=DarkGrey guibg=Grey90"),
 	CENT("CursorLine term=underline cterm=underline",
-	     "CursorLine term=underline cterm=underline guibg=DarkGrey"),
+	     "CursorLine term=underline cterm=underline guibg=Grey90"),
 #endif
 #ifdef FEAT_GUI
 	"Normal gui=NONE",
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70c"
 #define VIM_VERSION_SHORT	"7.0c"
-#define VIM_VERSION_MEDIUM	"7.0c02 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0c02 BETA (2006 Mar 28)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0c02 BETA (2006 Mar 28, compiled "
+#define VIM_VERSION_MEDIUM	"7.0c03 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0c03 BETA (2006 Mar 29)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0c03 BETA (2006 Mar 29, compiled "