diff options
-rw-r--r-- | runtime/autoload/ccomplete.vim | 39 | ||||
-rw-r--r-- | runtime/autoload/netrwFileHandlers.vim | 179 | ||||
-rw-r--r-- | runtime/doc/filetype.txt | 8 | ||||
-rw-r--r-- | runtime/doc/quickfix.txt | 4 | ||||
-rw-r--r-- | runtime/doc/sql.txt | 298 | ||||
-rw-r--r-- | runtime/doc/syntax.txt | 17 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 29 | ||||
-rw-r--r-- | runtime/doc/version7.txt | 7 | ||||
-rw-r--r-- | runtime/mswin.vim | 37 | ||||
-rw-r--r-- | runtime/syntax/sql.vim | 110 | ||||
-rw-r--r-- | runtime/syntax/sqloracle.vim | 89 | ||||
-rw-r--r-- | src/ascii.h | 16 | ||||
-rw-r--r-- | src/eval.c | 7 | ||||
-rw-r--r-- | src/ex_cmds2.c | 30 | ||||
-rw-r--r-- | src/main.c | 3 | ||||
-rw-r--r-- | src/memline.c | 2 | ||||
-rw-r--r-- | src/misc1.c | 6 | ||||
-rw-r--r-- | src/proto/ex_cmds2.pro | 1 |
18 files changed, 625 insertions, 257 deletions
diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim index 55e45b0a52..122aa096f6 100644 --- a/runtime/autoload/ccomplete.vim +++ b/runtime/autoload/ccomplete.vim @@ -1,7 +1,7 @@ " Vim completion script " Language: C " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2006 Mar 07 +" Last Change: 2006 Mar 09 " This function is used for the 'omnifunc' option. @@ -64,6 +64,9 @@ function! ccomplete#Complete(findstart, base) return [] endif + " init cache for vimgrep to empty + let s:grepCache = {} + " Split item in words, keep empty word after "." or "->". " "aa" -> ['aa'], "aa." -> ['aa', ''], "aa.bb" -> ['aa', 'bb'], etc. " We can't use split, because we need to skip nested [...]. @@ -275,6 +278,11 @@ function! s:Nextitem(lead, items, depth, all) let res = [] for tidx in range(len(tokens)) + " Skip tokens starting with a non-ID character. + if tokens[tidx] !~ '^\h' + continue + endif + " Recognize "struct foobar" and "union foobar". if (tokens[tidx] == 'struct' || tokens[tidx] == 'union') && tidx + 1 < len(tokens) let res = s:StructMembers(tokens[tidx] . ':' . tokens[tidx + 1], a:items, a:all) @@ -349,20 +357,33 @@ function! s:StructMembers(typename, items, all) let typename = a:typename let qflist = [] + let cached = 0 if a:all == 0 let n = '1' " stop at first found match + if has_key(s:grepCache, a:typename) + let qflist = s:grepCache[a:typename] + let cached = 1 + endif else let n = '' endif - while 1 - exe 'silent! ' . n . 'vimgrep /\t' . typename . '\(\t\|$\)/j ' . fnames - let qflist = getqflist() - if len(qflist) > 0 || match(typename, "::") < 0 - break + if !cached + while 1 + exe 'silent! ' . n . 'vimgrep /\t' . typename . '\(\t\|$\)/j ' . fnames + + let qflist = getqflist() + if len(qflist) > 0 || match(typename, "::") < 0 + break + endif + " No match for "struct:context::name", remove "context::" and try again. + let typename = substitute(typename, ':[^:]*::', ':', '') + endwhile + + if a:all == 0 + " Store the result to be able to use it again later. + let s:grepCache[a:typename] = qflist endif - " No match for "struct:context::name", remove "context::" and try again. - let typename = substitute(typename, ':[^:]*::', ':', '') - endwhile + endif let matches = [] for l in qflist diff --git a/runtime/autoload/netrwFileHandlers.vim b/runtime/autoload/netrwFileHandlers.vim index e30baf75d5..bad6d81c65 100644 --- a/runtime/autoload/netrwFileHandlers.vim +++ b/runtime/autoload/netrwFileHandlers.vim @@ -1,8 +1,8 @@ " netrwFileHandlers: contains various extension-based file handlers for " netrw's browsers' x command ("eXecute launcher") " Author: Charles E. Campbell, Jr. -" Date: Oct 12, 2005 -" Version: 7 +" Date: Feb 15, 2006 +" Version: 8a ASTRO-ONLY " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright @@ -22,22 +22,27 @@ if exists("g:loaded_netrwFileHandlers") || &cp endif let s:keepcpo= &cpo set cpo&vim -let g:loaded_netrwFileHandlers= "v7" +let g:loaded_netrwFileHandlers= "v8a" " --------------------------------------------------------------------- -" netrwFileHandlers#Init: {{{1 -" This functions is here to allow a call to this function to autoload -" the netrwFileHandlers.vim file -fun! netrwFileHandlers#Init() -" call Dfunc("netrwFileHandlers#Init()") -" call Dret("netrwFileHandlers#Init") +" netrwFileHandlers#Invoke: {{{2 +fun! netrwFileHandlers#Invoke(exten,fname) +" call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)") + + if a:exten != "" && exists("*s:NFH_".a:exten) +" call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.a:fname.'")') + exe "let ret= s:NFH_".a:exten.'("'.a:fname.'")' + endif + +" call Dret("netrwFileHandlers#Invoke 0 : ret=".ret) + return 0 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_html: handles html when the user hits "x" when the {{{1 +" s:NFH_html: handles html when the user hits "x" when the {{{1 " cursor is atop a *.html file -fun! netrwFileHandlers#NFH_html(pagefile) -" call Dfunc("netrwFileHandlers#NFH_html(".a:pagefile.")") +fun! s:NFH_html(pagefile) +" call Dfunc("s:NFH_html(".a:pagefile.")") let page= substitute(a:pagefile,'^','file://','') @@ -48,19 +53,19 @@ fun! netrwFileHandlers#NFH_html(pagefile) " call Decho("executing !netscape ".page) exe "!netscape \"".page.'"' else -" call Dret("netrwFileHandlers#NFH_html 0") +" call Dret("s:NFH_html 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_html 1") +" call Dret("s:NFH_html 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_htm: handles html when the user hits "x" when the {{{1 +" s:NFH_htm: handles html when the user hits "x" when the {{{1 " cursor is atop a *.htm file -fun! netrwFileHandlers#NFH_htm(pagefile) -" call Dfunc("netrwFileHandlers#NFH_htm(".a:pagefile.")") +fun! s:NFH_htm(pagefile) +" call Dfunc("s:NFH_htm(".a:pagefile.")") let page= substitute(a:pagefile,'^','file://','') @@ -71,18 +76,18 @@ fun! netrwFileHandlers#NFH_htm(pagefile) " call Decho("executing !netscape ".page) exe "!netscape \"".page.'"' else -" call Dret("netrwFileHandlers#NFH_htm 0") +" call Dret("s:NFH_htm 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_htm 1") +" call Dret("s:NFH_htm 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_jpg: {{{1 -fun! netrwFileHandlers#NFH_jpg(jpgfile) -" call Dfunc("netrwFileHandlers#NFH_jpg(jpgfile<".a:jpgfile.">)") +" s:NFH_jpg: {{{1 +fun! s:NFH_jpg(jpgfile) +" call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)") if executable("gimp") exe "silent! !gimp -s ".a:jpgfile @@ -90,181 +95,181 @@ fun! netrwFileHandlers#NFH_jpg(jpgfile) " call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'")) exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:jpgfile.'"' else -" call Dret("netrwFileHandlers#NFH_jpg 0") +" call Dret("s:NFH_jpg 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_jpg 1") +" call Dret("s:NFH_jpg 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_gif: {{{1 -fun! netrwFileHandlers#NFH_gif(giffile) -" call Dfunc("netrwFileHandlers#NFH_gif(giffile<".a:giffile.">)") +" s:NFH_gif: {{{1 +fun! s:NFH_gif(giffile) +" call Dfunc("s:NFH_gif(giffile<".a:giffile.">)") if executable("gimp") exe "silent! !gimp -s ".a:giffile elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:giffile.'"' else -" call Dret("netrwFileHandlers#NFH_gif 0") +" call Dret("s:NFH_gif 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_gif 1") +" call Dret("s:NFH_gif 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_png: {{{1 -fun! netrwFileHandlers#NFH_png(pngfile) -" call Dfunc("netrwFileHandlers#NFH_png(pngfile<".a:pngfile.">)") +" s:NFH_png: {{{1 +fun! s:NFH_png(pngfile) +" call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)") if executable("gimp") exe "silent! !gimp -s ".a:pngfile elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pngfile.'"' else -" call Dret("netrwFileHandlers#NFH_png 0") +" call Dret("s:NFH_png 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_png 1") +" call Dret("s:NFH_png 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_pnm: {{{1 -fun! netrwFileHandlers#NFH_pnm(pnmfile) -" call Dfunc("netrwFileHandlers#NFH_pnm(pnmfile<".a:pnmfile.">)") +" s:NFH_pnm: {{{1 +fun! s:NFH_pnm(pnmfile) +" call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)") if executable("gimp") exe "silent! !gimp -s ".a:pnmfile elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pnmfile.'"' else -" call Dret("netrwFileHandlers#NFH_pnm 0") +" call Dret("s:NFH_pnm 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_pnm 1") +" call Dret("s:NFH_pnm 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_bmp: visualize bmp files {{{1 -fun! netrwFileHandlers#NFH_bmp(bmpfile) -" call Dfunc("netrwFileHandlers#NFH_bmp(bmpfile<".a:bmpfile.">)") +" s:NFH_bmp: visualize bmp files {{{1 +fun! s:NFH_bmp(bmpfile) +" call Dfunc("s:NFH_bmp(bmpfile<".a:bmpfile.">)") if executable("gimp") exe "silent! !gimp -s ".a:bmpfile elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:bmpfile.'"' else -" call Dret("netrwFileHandlers#NFH_bmp 0") +" call Dret("s:NFH_bmp 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_bmp 1") +" call Dret("s:NFH_bmp 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_pdf: visualize pdf files {{{1 -fun! netrwFileHandlers#NFH_pdf(pdf) -" " call Dfunc("netrwFileHandlers#NFH_pdf(pdf<".a:pdf.">)") +" s:NFH_pdf: visualize pdf files {{{1 +fun! s:NFH_pdf(pdf) +" call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)") if executable("gs") exe 'silent! !gs "'.a:pdf.'"' else -" " call Dret("netrwFileHandlers#NFH_pdf 0") +" call Dret("s:NFH_pdf 0") return 0 endif -" " call Dret("netrwFileHandlers#NFH_pdf 1") +" call Dret("s:NFH_pdf 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_doc: visualize doc files {{{1 -fun! netrwFileHandlers#NFH_doc(doc) -" " call Dfunc("netrwFileHandlers#NFH_doc(doc<".a:doc.">)") +" s:NFH_doc: visualize doc files {{{1 +fun! s:NFH_doc(doc) +" call Dfunc("s:NFH_doc(doc<".a:doc.">)") if executable("oowriter") exe 'silent! !oowriter "'.a:doc.'"' redraw! else -" " call Dret("netrwFileHandlers#NFH_doc 0") +" call Dret("s:NFH_doc 0") return 0 endif -" " call Dret("netrwFileHandlers#NFH_doc 1") +" call Dret("s:NFH_doc 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_sxw: visualize sxw files {{{1 -fun! netrwFileHandlers#NFH_sxw(sxw) -" " call Dfunc("netrwFileHandlers#NFH_sxw(sxw<".a:sxw.">)") +" s:NFH_sxw: visualize sxw files {{{1 +fun! s:NFH_sxw(sxw) +" call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)") if executable("oowriter") exe 'silent! !oowriter "'.a:sxw.'"' redraw! else -" " call Dret("netrwFileHandlers#NFH_sxw 0") +" call Dret("s:NFH_sxw 0") return 0 endif -" " call Dret("netrwFileHandlers#NFH_sxw 1") +" call Dret("s:NFH_sxw 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_xls: visualize xls files {{{1 -fun! netrwFileHandlers#NFH_xls(xls) -" " call Dfunc("netrwFileHandlers#NFH_xls(xls<".a:xls.">)") +" s:NFH_xls: visualize xls files {{{1 +fun! s:NFH_xls(xls) +" call Dfunc("s:NFH_xls(xls<".a:xls.">)") if executable("oocalc") exe 'silent! !oocalc "'.a:xls.'"' redraw! else -" " call Dret("netrwFileHandlers#NFH_xls 0") +" call Dret("s:NFH_xls 0") return 0 endif -" " call Dret("netrwFileHandlers#NFH_xls 1") +" call Dret("s:NFH_xls 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_ps: handles PostScript files {{{1 -fun! netrwFileHandlers#NFH_ps(ps) -" call Dfunc("netrwFileHandlers#NFH_ps()") +" s:NFH_ps: handles PostScript files {{{1 +fun! s:NFH_ps(ps) +" call Dfunc("s:NFH_ps(ps<".a:ps.">)") if executable("gs") +" call Decho("exe silent! !gs ".a:ps) exe "silent! !gs ".a:ps redraw! elseif executable("ghostscript") - exe "silent! !ghostscript ".a:ps - redraw! - elseif executable("ghostscript") +" call Decho("exe silent! !ghostscript ".a:ps) exe "silent! !ghostscript ".a:ps redraw! elseif executable("gswin32") +" call Decho("exe silent! !gswin32 \"".a:ps.'"') exe "silent! !gswin32 \"".a:ps.'"' redraw! else -" call Dret("netrwFileHandlers#NFH_ps 0") +" call Dret("s:NFH_ps 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_ps 1") +" call Dret("s:NFH_ps 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_eps: handles encapsulated PostScript files {{{1 -fun! netrwFileHandlers#NFH_eps(eps) -" call Dfunc("netrwFileHandlers#NFH_ps()") +" s:NFH_eps: handles encapsulated PostScript files {{{1 +fun! s:NFH_eps(eps) +" call Dfunc("s:NFH_eps()") if executable("gs") exe "silent! !gs ".a:eps redraw! @@ -278,40 +283,42 @@ fun! netrwFileHandlers#NFH_eps(eps) exe "silent! !gswin32 \"".a:eps.'"' redraw! else -" call Dret("netrwFileHandlers#NFH_ps 0") +" call Dret("s:NFH_eps 0") return 0 endif +" call Dret("s:NFH_eps 0") + return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_fig: handles xfig files {{{1 -fun! netrwFileHandlers#NFH_fig(fig) -" call Dfunc("netrwFileHandlers#NFH_fig()") +" s:NFH_fig: handles xfig files {{{1 +fun! s:NFH_fig(fig) +" call Dfunc("s:NFH_fig()") if executable("xfig") exe "silent! !xfig ".a:fig redraw! else -" call Dret("netrwFileHandlers#NFH_fig 0") +" call Dret("s:NFH_fig 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_fig 1") +" call Dret("s:NFH_fig 1") return 1 endfun " --------------------------------------------------------------------- -" netrwFileHandlers#NFH_obj: handles tgif's obj files {{{1 -fun! netrwFileHandlers#NFH_obj(obj) -" call Dfunc("netrwFileHandlers#NFH_obj()") +" s:NFH_obj: handles tgif's obj files {{{1 +fun! s:NFH_obj(obj) +" call Dfunc("s:NFH_obj()") if has("unix") && executable("tgif") exe "silent! !tgif ".a:obj redraw! else -" call Dret("netrwFileHandlers#NFH_obj 0") +" call Dret("s:NFH_obj 0") return 0 endif -" call Dret("netrwFileHandlers#NFH_obj 1") +" call Dret("s:NFH_obj 1") return 1 endfun diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index 07d4425178..3a8b164796 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -1,4 +1,4 @@ -*filetype.txt* For Vim version 7.0aa. Last change: 2005 Sep 16 +*filetype.txt* For Vim version 7.0aa. Last change: 2006 Mar 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -536,4 +536,10 @@ Since the text for this plugin is rather long it has been put in a separate file: |pi_spec.txt|. +SQL *ft-sql* + +Since the text for this plugin is rather long it has been put in a separate +file: |sql.txt|. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index 76e0454ef9..09375d3052 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 7.0aa. Last change: 2006 Mar 08 +*quickfix.txt* For Vim version 7.0aa. Last change: 2006 Mar 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -480,7 +480,7 @@ advantages are: |gzip| |netrw| To be able to do this Vim loads each file as if it is being edited. When -there is no match in the file the assicated buffer is wiped out again. The +there is no match in the file the associated buffer is wiped out again. The 'hidden' option is ignored here to avoid running out of memory or file descriptors when searching many files. However, when the |:hide| command modifier is used the buffers are kept loaded. This makes following searches diff --git a/runtime/doc/sql.txt b/runtime/doc/sql.txt new file mode 100644 index 0000000000..a0e6f02401 --- /dev/null +++ b/runtime/doc/sql.txt @@ -0,0 +1,298 @@ +*sql.txt* For Vim version 7.0aa. Last change: Fri Jan 06 2006 8:09:25 AM + +by David Fishburn + +This is a filetype plugin to work with SQL files. + +The Structured Query Language (SQL) is a standard which specifies statements +that allow a user to interact with a relational database. Vim includes +features for navigation, indentation and syntax highlighting. + +1. Navigation |sql-navigation| + 1.1 Matchit |sql-matchit| + 1.2 Text Object Motions |sql-object-motions| + 1.3 Predefined Object Motions |sql-predefined-objects| + 1.4 Macros |sql-macros| +2. SQL Dialects |sql-dialects| + 2.1 SQLSetType |SQLSetType| + 2.2 SQL Dialect Default |sql-type-default| +3. Adding new SQL Dialects |sql-adding-dialects| + +============================================================================== +1. Navigation *sql-navigation* + +The SQL ftplugin provides a number of options to assist with file +navigation. + + +1.1 Matchit *sql-matchit* +----------- +The matchit plugin (http://www.vim.org/scripts/script.php?script_id=39) +provides many additional features and can be customized for different +languages. The matchit plugin is configured by defining a local +buffer variable, b:match_words. Pressing the % key while on various +keywords will move the cursor to its match. For example, if the cursor +is on an "if", pressing % will cycle between the "else", "elseif" and +"end if" keywords. + +The following keywords are supported: > + if + elseif | elsif + else [if] + end if + + [while condition] loop + leave + break + continue + exit + end loop + + for + leave + break + continue + exit + end loop + + do + statements + doend + + case + when + when + default + end case + + merge + when not matched + when matched + + create[ or replace] procedure|function|event + returns +< + +1.2 Text Object Motions *sql-object-motions* +----------------------- +Vim has a number of predefined keys for working with text |object-motions|. +This filetype plugin attempts to translate these keys to maps which make sense +for the SQL language. + +The following |Normal| mode and |Visual| mode maps exist (when you edit a SQL +file): > + ]] move forward to the next 'begin' + [[ move backwards to the previous 'begin' + ][ move forward to the next 'end' + [] move backwards to the previous 'end' +< + +1.3 Predefined Object Motions *sql-predefined-objects* +----------------------------- +Most relational databases support various standard features, tables, indicies, +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 +must be configurable. The filetype plugin attempts to define many of the +standard objects, plus many additional ones. In order to make this as +flexible as possible, you can override the list of objects from within your +|vimrc| with the following: > + let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' . + \ ',schema,service,publication,database,datatype,domain' . + \ ',index,subscription,synchronization,view,variable' +< +The following |Normal| mode and |Visual| mode maps have been created which use +the above list: > + ]} move forward to the next 'create <object name>' + [{ move backward to the previous 'create <object name>' + +Repeatedly pressing ]} will cycle through each of these create statements: > + create table t1 ( + ... + ); + + create procedure p1 + begin + ... + end; + + create index i1 on t1 (c1); +< +The default setting for g:ftplugin_sql_objects is: > + let g:ftplugin_sql_objects = 'function,procedure,event,' . + \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' . + \ 'table,trigger' . + \ ',schema,service,publication,database,datatype,domain' . + \ ',index,subscription,synchronization,view,variable' +< +The above will also handle these cases: > + create table t1 ( + ... + ); + create existing table t2 ( + ... + ); + create global temporary table t3 ( + ... + ); +< +By default, the ftplugin only searches for CREATE statements. You can also +override this via your |vimrc| with the following: > + let g:ftplugin_sql_statements = 'create,alter' + +The filetype plugin defines three types of comments: > + 1. -- + 2. // + 3. /* + * + */ +< +The following |Normal| mode and |Visual| mode maps have been created to work +with comments: > + ]" move forward to the beginning of a comment + [" move forward to the end of a comment + + + +1.4 Macros *sql-macros* +---------- +Vim's feature to find macro definitions, |'define'|, is supported using this +regular expression: > + \c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\> +< +This addresses the following code: > + CREATE VARIABLE myVar1 INTEGER; + + CREATE PROCEDURE sp_test( + IN myVar2 INTEGER, + OUT myVar3 CHAR(30), + INOUT myVar4 NUMERIC(20,0) + ) + BEGIN + DECLARE myVar5 INTEGER; + + SELECT c1, c2, c3 + INTO myVar2, myVar3, myVar4 + FROM T1 + WHERE c4 = myVar1; + END; +< +Place your cursor on "myVar1" on this line: > + WHERE c4 = myVar1; + ^ +< +Press any of the following keys: > + [d + [D + [CTRL-D + + +============================================================================== +2. SQL Dialects *sql-dialects* *sql-types* + *sybase* *TSQL* *Transact-SQL* + *sqlanywhere* + *oracle* *plsql* *sqlj* + *sqlserver* + *mysql* *postgress* *psql* + *informix* + +All relational databases support SQL. There is a portion of SQL that is +portable across vendors (ex. CREATE TABLE, CREATE INDEX), but there is a +great deal of vendor specific extensions to SQL. Oracle supports the +"CREATE OR REPLACE" syntax, column defaults specified in the CREATE TABLE +statement and the procedural language (for stored procedures and triggers). + +The default Vim distribution ships with syntax highlighting based on Oracle's +PL/SQL. The default SQL indent script works for Oracle and SQL Anywhere. +The default filetype plugin works for all vendors and should remain vendor +neutral, but extendable. + +Vim currently has support for a variety of different vendors, currently this +is via syntax scripts. Unfortunately, to flip between different syntax rules +you must either create: + 1. New filetypes + 2. Custom autocmds + 3. Manual steps / commands + +The majority of people work with only one vendor's database product, it would +be nice to specify a default in your |vimrc|. + + +2.1 SQLSetType *sqlsettype* *SQLSetType* +-------------- +For the people that work with many different databases, it would be nice to be +able to flip between the various vendors rules (indent, syntax) on a per +buffer basis, at any time. The ftplugin/sql.vim file defines this function: > + SQLSetType +< +Executing this function without any parameters will set the indent and syntax +scripts back to their defaults, see |sql-type-default|. If you have turned +off Vi's compatibility mode, |'compatible'|, you can use the <Tab> key to +complete the optional parameter. + +After typing the function name and a space, you can use the completion to +supply a parameter. The function takes the name of the Vim script you want to +source. Using the |cmdline-completion| feature, the SQLSetType function will +search the |'runtimepath'| for all Vim scripts with a name containing 'sql'. +This takes the guess work out of the spelling of the names. The following are +examples: > + :SQLSetType + :SQLSetType sqloracle + :SQLSetType sqlanywhere + :SQLSetType sqlinformix + :SQLSetType mysql +< +The easiest approach is to the use <Tab> character which will first complete +the command name (SQLSetType), after a space and another <Tab>, display a list +of available Vim script names: > + :SQL<Tab><space><Tab> +< + +2.2 SQL Dialect Default *sql-type-default* +----------------------- +As mentioned earlier, the default syntax rules for Vim is based on Oracle +(PL/SQL). You can override this default by placing one of the following in +your |vimrc|: > + let g:sql_type_default = 'sqlanywhere' + let g:sql_type_default = 'sqlinformix' + let g:sql_type_default = 'mysql' +< +If you added the following to your |vimrc|: > + let g:sql_type_default = 'sqlinformix' +< +The next time edit a SQL file the following scripts will be automatically +loaded by Vim: > + ftplugin/sql.vim + syntax/sqlinformix.vim + indent/sql.vim +> +Notice indent/sqlinformix.sql was not loaded. There is no indent file +for Informix, Vim loads the default files if the specified files does not +exist. + + +============================================================================== +3. Adding new SQL Dialects *sql-adding-dialects* + +If you begin working with a SQL dialect which does not have any customizations +available with the default Vim distribution you can check http://www.vim.org +to see if any customization currently exist. If not, you can begin by cloning +an existing script. Read |filetype-plugins| for more details. + +To help identify these scripts, try to create the files with a "sql" prefix. +If you decide you wish to create customizations for the SQLite database, you +can create any of the following: > + Unix + ~/.vim/syntax/sqlite.vim + ~/.vim/indent/sqlite.vim + Windows + $VIM/vimfiles/syntax/sqlite.vim + $VIM/vimfiles/indent/sqlite.vim +< +No changes are necessary to the SQLSetType function. It will automatically +pickup the new SQL files and load them when you issue the SQLSetType command. + + + + +vim:tw=78:ts=8:ft=help:norl:ff=unix: diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index a7b25307b1..a07aa13070 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.0aa. Last change: 2006 Mar 01 +*syntax.txt* For Vim version 7.0aa. Last change: 2006 Mar 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2374,13 +2374,18 @@ the syntax file. SQL *sql.vim* *ft-sql-syntax* *sqlinformix.vim* *ft-sqlinformix-syntax* + *sqlanywhere.vim* *ft-sqlanywhere-syntax* -While there is an ANSI standard for SQL, most database engines add their -own custom extensions. Vim currently supports the Oracle and Informix -dialects of SQL. Vim assumes "*.sql" files are Oracle SQL by default. +While there is an ANSI standard for SQL, most database engines add their own +custom extensions. Vim currently supports the Oracle and Informix dialects of +SQL. Vim assumes "*.sql" files are Oracle SQL by default. -If you want to use the Informix dialect, put this in your startup vimrc: > - :let g:filetype_sql = "sqlinformix" +Vim currently has SQL support for a variety of different vendors via syntax +scripts. You can change Vim's default from Oracle to any of the current SQL +supported types. You can also easily alter the SQL dialect being used on a +buffer by buffer basis. + +For more detailed instructions see |sql.txt|. TCSH *tcsh.vim* *ft-tcsh-syntax* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index d3490ff329..35a7429d85 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 Mar 08 +*todo.txt* For Vim version 7.0aa. Last change: 2006 Mar 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,18 +30,11 @@ be worked on, but only if you sponsor Vim development. See |sponsor|. *known-bugs* -------------------- Known bugs and current work ----------------------- -Bug in Netbeans interface. (Xavier de Gaye, 2006 Mar 7) -Code for "insert" is wrong. Don't use b_p_eol or b_start_eol. -Handle partial lines properly. What probably should happen is to append to a -line when "off" points to the NUL after that line, insert before a line when -the text doesn't end in a "\n" and only insert line breaks where there is a -"\n" in the argument. - -Win32: Describe how to do debugging and describe it. (George Reilly) +Win32: Describe how to do debugging. (George Reilly) Mac unicode patch (Da Woon Jung): -- Mac: Unicode input and display (Eckehard Berns, 2004 June 27) - Other patch from Da Woon Jung, 2005 Jan 16. +- Mac: Unicode input and display (Eckehard Berns) + Included patch from Da Woon Jung, not complete yet. 8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac? New patch 2004 Jun 16 - Add default key mappings for the command key (Alan Schmitt) @@ -52,15 +45,13 @@ Mac unicode patch (Da Woon Jung): - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work. (Alan Schmitt) +Add ShellCmdPre/ShellCmdPost/ShellFilterPre/ShellFilterPost ? +Useful for updating the diretory listing in netrw. + CONSIDERED FOR VERSION 7.0: 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? - Check what happens when taglist() is called. - 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? @@ -274,6 +265,7 @@ Awaiting updated patches: runtime files? Also: when the environment variable exists, use it. If it doesn't exist, set it. Requires good names: $VIM_USER_VIMRC $VIM_USER_DIR |