diff options
author | Bram Moolenaar <Bram@vim.org> | 2012-12-05 19:01:43 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2012-12-05 19:01:43 +0100 |
commit | 34feacbccea905d3a71ccf9175d872c50f370705 (patch) | |
tree | bf87560cfa592a3c9a132e58a8dc69c553bb1ddd /runtime/ftplugin | |
parent | 32c8f1cb1957bf92853f4419b0ffc761df67ad2d (diff) |
Update runtime files.
Diffstat (limited to 'runtime/ftplugin')
-rw-r--r-- | runtime/ftplugin/sql.vim | 157 |
1 files changed, 87 insertions, 70 deletions
diff --git a/runtime/ftplugin/sql.vim b/runtime/ftplugin/sql.vim index c13dcf1869..39028f318d 100644 --- a/runtime/ftplugin/sql.vim +++ b/runtime/ftplugin/sql.vim @@ -1,8 +1,8 @@ " SQL filetype plugin file " Language: SQL (Common for Oracle, Microsoft SQL Server, Sybase) -" Version: 8.0 +" Version: 10.0 " Maintainer: David Fishburn <dfishburn dot vim at gmail dot com> -" Last Change: 2012 May 18 +" Last Change: 2012 Dec 04 " Download: http://vim.sourceforge.net/script.php?script_id=454 " For more details please use: @@ -30,34 +30,48 @@ " To change the default dialect, add the following to your vimrc: " let g:sql_type_default = 'sqlanywhere' " -" This file also creates a command, SQLGetType, which allows you to +" This file also creates a command, SQLGetType, which allows you to " determine what the current dialect is in use. " :SQLGetType " " History " +" Version 10.0 (Dec 2012) +" +" NF: Changed all maps to use noremap instead of must map +" NF: Changed all visual maps to use xnoremap instead of vnoremap as they +" should only be used in visual mode and not select mode. +" BF: Most of the maps were using doubled up backslashes before they were +" changed to using the search() function, which meant they no longer +" worked. +" +" Version 9.0 +" +" NF: Completes 'b:undo_ftplugin' +" BF: Correctly set cpoptions when creating script +" " Version 8.0 -" +" " NF: Improved the matchit plugin regex (Talek) " " Version 7.0 -" +" " NF: Calls the sqlcomplete#ResetCacheSyntax() function when calling " SQLSetType. " " Version 6.0 -" +" " NF: Adds the command SQLGetType " " Version 5.0 -" -" NF: Adds the ability to choose the keys to control SQL completion, just add +" +" NF: Adds the ability to choose the keys to control SQL completion, just add " the following to your .vimrc: " let g:ftplugin_sql_omni_key = '<C-C>' " let g:ftplugin_sql_omni_key_right = '<Right>' " let g:ftplugin_sql_omni_key_left = '<Left>' " -" BF: format-options - Auto-wrap comments using textwidth was turned off +" BF: format-options - Auto-wrap comments using textwidth was turned off " by mistake. @@ -81,7 +95,7 @@ setlocal formatoptions+=c " This works with both Vim 6 and 7. if !exists("*SQL_SetType") - " NOTE: You cannot use function! since this file can be + " NOTE: You cannot use function! since this file can be " sourced from within this function. That will result in " an error reported by Vim. function SQL_GetList(ArgLead, CmdLine, CursorPos) @@ -105,9 +119,9 @@ if !exists("*SQL_SetType") " " Recursively, since there are many filenames that contain " the word SQL in the indent, syntax and ftplugin directory - let sqls = substitute( sqls, - \ '[\n]\%(.\{-}\)\(\w\+\.\w\+\)\n\@=', - \ '\1\n', + let sqls = substitute( sqls, + \ '[\n]\%(.\{-}\)\(\w\+\.\w\+\)\n\@=', + \ '\1\n', \ 'g' \ ) @@ -142,10 +156,10 @@ if !exists("*SQL_SetType") function SQL_SetType(name) " User has decided to override default SQL scripts and - " specify a vendor specific version + " specify a vendor specific version " (ie Oracle, Informix, SQL Anywhere, ...) " So check for an remove any settings that prevent the - " scripts from being executed, and then source the + " scripts from being executed, and then source the " appropriate Vim scripts. if exists("b:did_ftplugin") unlet b:did_ftplugin @@ -163,10 +177,10 @@ if !exists("*SQL_SetType") endif " Ensure the name is in the correct format - let new_sql_type = substitute(a:name, + let new_sql_type = substitute(a:name, \ '\s*\([^\.]\+\)\(\.\w\+\)\?', '\L\1', '') - " Do not specify a buffer local variable if it is + " Do not specify a buffer local variable if it is " the default value if new_sql_type == 'sql' let new_sql_type = 'sqloracle' @@ -203,10 +217,10 @@ endif if !exists("*SQL_GetType") function SQL_GetType() - if exists('b:sql_type_override') + if exists('b:sql_type_override') echomsg "Current SQL dialect in use:".b:sql_type_override else - echomsg "Current SQL dialect in use:".g:sql_type_default + echomsg "Current SQL dialect in use:".g:sql_type_default endif endfunction command! -nargs=0 SQLGetType :call SQL_GetType() @@ -233,7 +247,8 @@ if exists("b:did_ftplugin") finish endif -let b:undo_ftplugin = "setl comments<" +let b:undo_ftplugin = "setl comments< formatoptions< define< omnifunc<" . + \ " | unlet! b:browsefilter b:match_words" " Don't load another plugin for this buffer let b:did_ftplugin = 1 @@ -280,7 +295,7 @@ if !exists("b:match_words") " doend " " case - " when + " when " when " default " end case @@ -296,8 +311,10 @@ if !exists("b:match_words") " create[ or replace] procedure|function|event " \ '^\s*\<\%(do\|for\|while\|loop\)\>.*:'. - let b:match_words = - \ '\<begin\>:\<end\>\W*$,'. + " For ColdFusion support + setlocal matchpairs+=<:> + let b:match_words = &matchpairs . + \ ',\<begin\>:\<end\>\W*$,'. \ \ s:notend . '\<if\>:'. \ '\<elsif\>\|\<elseif\>\|\<else\>:'. @@ -337,14 +354,14 @@ let &l:define = '\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>' " Mappings to move to the next BEGIN ... END block " \W - no characters or digits -nmap <buffer> <silent> ]] :call search('\\c^\\s*begin\\>', 'W' )<CR> -nmap <buffer> <silent> [[ :call search('\\c^\\s*begin\\>', 'bW' )<CR> -nmap <buffer> <silent> ][ :call search('\\c^\\s*end\\W*$', 'W' )<CR> -nmap <buffer> <silent> [] :call search('\\c^\\s*end\\W*$', 'bW' )<CR> -vmap <buffer> <silent> ]] :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*begin\\>', 'W' )<CR> -vmap <buffer> <silent> [[ :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*begin\\>', 'bW' )<CR> -vmap <buffer> <silent> ][ :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*end\\W*$', 'W' )<CR> -vmap <buffer> <silent> [] :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*end\\W*$', 'bW' )<CR> +nnoremap <buffer> <silent> ]] :call search('\c^\s*begin\>', 'W' )<CR> +nnoremap <buffer> <silent> [[ :call search('\c^\s*begin\>', 'bW' )<CR> +nnoremap <buffer> <silent> ][ :call search('\c^\s*end\W*$', 'W' )<CR> +nnoremap <buffer> <silent> [] :call search('\c^\s*end\W*$', 'bW' )<CR> +xnoremap <buffer> <silent> ]] :<C-U>exec "normal! gv"<Bar>call search('\c^\s*begin\>', 'W' )<CR> +xnoremap <buffer> <silent> [[ :<C-U>exec "normal! gv"<Bar>call search('\c^\s*begin\>', 'bW' )<CR> +xnoremap <buffer> <silent> ][ :<C-U>exec "normal! gv"<Bar>call search('\c^\s*end\W*$', 'W' )<CR> +xnoremap <buffer> <silent> [] :<C-U>exec "normal! gv"<Bar>call search('\c^\s*end\W*$', 'bW' )<CR> " By default only look for CREATE statements, but allow @@ -361,7 +378,7 @@ endif " backwards, you must use \{,1} if !exists('g:ftplugin_sql_objects') let g:ftplugin_sql_objects = 'function,procedure,event,' . - \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' . + \ '\(existing\\|global\s\+temporary\s\+\)\{,1}' . \ 'table,trigger' . \ ',schema,service,publication,database,datatype,domain' . \ ',index,subscription,synchronization,view,variable' @@ -382,47 +399,47 @@ endif " Replace all ,'s with bars, except ones with numbers after them. " This will most likely be a \{,1} string. -let s:ftplugin_sql_objects = - \ '\\c^\\s*' . - \ '\\(\\(' . - \ substitute(g:ftplugin_sql_statements, ',\d\@!', '\\\\\\|', 'g') . - \ '\\)\\s\\+\\(or\\s\\+replace\\\s\+\\)\\{,1}\\)\\{,1}' . - \ '\\<\\(' . - \ substitute(g:ftplugin_sql_objects, ',\d\@!', '\\\\\\|', 'g') . - \ '\\)\\>' +let s:ftplugin_sql_objects = + \ '\c^\s*' . + \ '\(\(' . + \ substitute(g:ftplugin_sql_statements, ',\d\@!', '\\\\|', 'g') . + \ '\)\s\+\(or\s\+replace\s\+\)\{,1}\)\{,1}' . + \ '\<\(' . + \ substitute(g:ftplugin_sql_objects, ',\d\@!', '\\\\|', 'g') . + \ '\)\>' " Mappings to move to the next CREATE ... block -exec "nmap <buffer> <silent> ]} :call search('".s:ftplugin_sql_objects."', 'W')<CR>" -exec "nmap <buffer> <silent> [{ :call search('".s:ftplugin_sql_objects."', 'bW')<CR>" +exec "nnoremap <buffer> <silent> ]} :call search('".s:ftplugin_sql_objects."', 'W')<CR>" +exec "nnoremap <buffer> <silent> [{ :call search('".s:ftplugin_sql_objects."', 'bW')<CR>" " Could not figure out how to use a :call search() string in visual mode " without it ending visual mode " Unfortunately, this will add a entry to the search history -exec 'vmap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>' -exec 'vmap <buffer> <silent> [{ ?'.s:ftplugin_sql_objects.'<CR>' +exec 'xnoremap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>' +exec 'xnoremap <buffer> <silent> [{ ?'.s:ftplugin_sql_objects.'<CR>' " Mappings to move to the next COMMENT " " Had to double the \ for the \| separator since this has a special " meaning on maps -let b:comment_leader = '\\(--\\\|\\/\\/\\\|\\*\\\|\\/\\*\\\|\\*\\/\\)' +let b:comment_leader = '\(--\\|\/\/\\|\*\\|\/\*\\|\*\/\)' " Find the start of the next comment -let b:comment_start = '^\\(\\s*'.b:comment_leader.'.*\\n\\)\\@<!'. - \ '\\(\\s*'.b:comment_leader.'\\)' +let b:comment_start = '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. + \ '\(\s*'.b:comment_leader.'\)' " Find the end of the previous comment -let b:comment_end = '\\(^\\s*'.b:comment_leader.'.*\\n\\)'. - \ '\\(^\\s*'.b:comment_leader.'\\)\\@!' +let b:comment_end = '\(^\s*'.b:comment_leader.'.*\n\)'. + \ '\(^\s*'.b:comment_leader.'\)\@!' " Skip over the comment let b:comment_jump_over = "call search('". - \ '^\\(\\s*'.b:comment_leader.'.*\\n\\)\\@<!'. + \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. \ "', 'W')" let b:comment_skip_back = "call search('". - \ '^\\(\\s*'.b:comment_leader.'.*\\n\\)\\@<!'. + \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. \ "', 'bW')" " Move to the start and end of comments exec 'nnoremap <silent><buffer> ]" :call search('."'".b:comment_start."'".', "W" )<CR>' exec 'nnoremap <silent><buffer> [" :call search('."'".b:comment_end."'".', "W" )<CR>' -exec 'vnoremap <silent><buffer> ]" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_start."'".', "W" )<CR>' -exec 'vnoremap <silent><buffer> [" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_end."'".', "W" )<CR>' +exec 'xnoremap <silent><buffer> ]" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_start."'".', "W" )<CR>' +exec 'xnoremap <silent><buffer> [" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_end."'".', "W" )<CR>' " Comments can be of the form: " /* @@ -431,7 +448,7 @@ exec 'vnoremap <silent><buffer> [" :<C-U>exec "normal! gv"<Bar>call search('."'" " or " -- " or -" // +" // setlocal comments=s1:/*,mb:*,ex:*/,:--,:// " Set completion with CTRL-X CTRL-O to autoloaded function. @@ -443,7 +460,7 @@ if exists('&omnifunc') " This is used by the sqlcomplete.vim plugin " Source it for it's global functions - runtime autoload/syntaxcomplete.vim + runtime autoload/syntaxcomplete.vim setlocal omnifunc=sqlcomplete#Complete " Prevent the intellisense plugin from loading @@ -451,32 +468,32 @@ if exists('&omnifunc') if !exists('g:omni_sql_no_default_maps') " Static maps which use populate the completion list " using Vim's syntax highlighting rules - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword")<CR><C-X><C-O>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction")<CR><C-X><C-O>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption")<CR><C-X><C-O>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType")<CR><C-X><C-O>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement")<CR><C-X><C-O>' " Dynamic maps which use populate the completion list " using the dbext.vim plugin - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'p <C-\><C-O>:call sqlcomplete#Map("procedure")<CR><C-X><C-O>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'v <C-\><C-O>:call sqlcomplete#Map("view")<CR><C-X><C-O>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'c <C-\><C-O>:call sqlcomplete#Map("column")<CR><C-X><C-O>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'l <C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'p <C-\><C-O>:call sqlcomplete#Map("procedure")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'v <C-\><C-O>:call sqlcomplete#Map("view")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'c <C-\><C-O>:call sqlcomplete#Map("column")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'l <C-\><C-O>:call sqlcomplete#Map("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 - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' " <C-Right> is not recognized on most Unix systems, so only create " these additional maps on the Windows platform. " If you would like to use these maps, choose a different key and make " the same map in your vimrc. " if has('win32') - exec 'imap <buffer> '.g:ftplugin_sql_omni_key_right.' <C-R>=sqlcomplete#DrillIntoTable()<CR>' - exec 'imap <buffer> '.g:ftplugin_sql_omni_key_left.' <C-R>=sqlcomplete#DrillOutOfColumns()<CR>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key_right.' <C-R>=sqlcomplete#DrillIntoTable()<CR>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key_left.' <C-R>=sqlcomplete#DrillOutOfColumns()<CR>' " endif " Remove any cached items useful for schema changes - exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>' + exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>' endif if b:sql_compl_savefunc != "" |