| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | " SQL filetype plugin file | 
					
						
							|  |  |  | " Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase) | 
					
						
							| 
									
										
										
										
											2013-05-17 18:14:19 +02:00
										 |  |  | " Version:     11.0 | 
					
						
							| 
									
										
										
										
											2011-04-01 18:03:16 +02:00
										 |  |  | " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com> | 
					
						
							| 
									
										
										
										
											2013-05-17 18:14:19 +02:00
										 |  |  | " Last Change: 2013 May 13 | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | " Download:    http://vim.sourceforge.net/script.php?script_id=454 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | " For more details please use: | 
					
						
							|  |  |  | "        :h sql.txt | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " This file should only contain values that are common to all SQL languages | 
					
						
							|  |  |  | " Oracle, Microsoft SQL Server, Sybase ASA/ASE, MySQL, and so on | 
					
						
							|  |  |  | " If additional features are required create: | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | "        vimfiles/after/ftplugin/sql.vim (Windows) | 
					
						
							|  |  |  | "        .vim/after/ftplugin/sql.vim     (Unix) | 
					
						
							|  |  |  | " to override and add any of your own settings. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " This file also creates a command, SQLSetType, which allows you to change | 
					
						
							|  |  |  | " SQL dialects on the fly.  For example, if I open an Oracle SQL file, it | 
					
						
							|  |  |  | " is color highlighted appropriately.  If I open an Informix SQL file, it | 
					
						
							|  |  |  | " will still be highlighted according to Oracles settings.  By running: | 
					
						
							|  |  |  | "     :SQLSetType sqlinformix | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " All files called sqlinformix.vim will be loaded from the indent and syntax | 
					
						
							|  |  |  | " directories.  This allows you to easily flip SQL dialects on a per file | 
					
						
							|  |  |  | " basis.  NOTE: you can also use completion: | 
					
						
							|  |  |  | "     :SQLSetType <tab> | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " To change the default dialect, add the following to your vimrc: | 
					
						
							|  |  |  | "    let g:sql_type_default = 'sqlanywhere' | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | " This file also creates a command, SQLGetType, which allows you to | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | " determine what the current dialect is in use. | 
					
						
							|  |  |  | "     :SQLGetType | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " History | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2013-05-17 18:14:19 +02:00
										 |  |  | " Version 11.0 (May 2013) | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " NF: Updated to use SyntaxComplete's new regex support for syntax groups. | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | " 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 | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2011-04-01 18:03:16 +02:00
										 |  |  | " Version 8.0 | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2011-04-01 18:03:16 +02:00
										 |  |  | " NF: Improved the matchit plugin regex (Talek) | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2010-08-01 16:13:51 +02:00
										 |  |  | " Version 7.0 | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2010-08-01 16:13:51 +02:00
										 |  |  | " NF: Calls the sqlcomplete#ResetCacheSyntax() function when calling | 
					
						
							|  |  |  | "     SQLSetType. | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | " Version 6.0 | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | " NF: Adds the command SQLGetType | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Version 5.0 | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | " | 
					
						
							|  |  |  | " NF: Adds the ability to choose the keys to control SQL completion, just add | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | "     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>' | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | " BF: format-options - Auto-wrap comments using textwidth was turned off | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | "                      by mistake. | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Only do this when not done yet for this buffer | 
					
						
							|  |  |  | if exists("b:did_ftplugin") | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | let s:save_cpo = &cpo | 
					
						
							| 
									
										
										
										
											2012-05-18 21:49:28 +02:00
										 |  |  | set cpo&vim | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  | " Disable autowrapping for code, but enable for comments | 
					
						
							|  |  |  | " t	Auto-wrap text using textwidth | 
					
						
							|  |  |  | " c     Auto-wrap comments using textwidth, inserting the current comment | 
					
						
							|  |  |  | "       leader automatically. | 
					
						
							|  |  |  | setlocal formatoptions-=t | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | setlocal formatoptions+=c | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | " Functions/Commands to allow the user to change SQL syntax dialects | 
					
						
							|  |  |  | " through the use of :SQLSetType <tab> for completion. | 
					
						
							|  |  |  | " This works with both Vim 6 and 7. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if !exists("*SQL_SetType") | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |     " NOTE: You cannot use function! since this file can be | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |     " sourced from within this function.  That will result in | 
					
						
							|  |  |  |     " an error reported by Vim. | 
					
						
							|  |  |  |     function SQL_GetList(ArgLead, CmdLine, CursorPos) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if !exists('s:sql_list') | 
					
						
							|  |  |  |             " Grab a list of files that contain "sql" in their names | 
					
						
							|  |  |  |             let list_indent   = globpath(&runtimepath, 'indent/*sql*') | 
					
						
							|  |  |  |             let list_syntax   = globpath(&runtimepath, 'syntax/*sql*') | 
					
						
							|  |  |  |             let list_ftplugin = globpath(&runtimepath, 'ftplugin/*sql*') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             let sqls = "\n".list_indent."\n".list_syntax."\n".list_ftplugin."\n" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             " Strip out everything (path info) but the filename | 
					
						
							|  |  |  |             " Regex | 
					
						
							|  |  |  |             "    From between two newline characters | 
					
						
							|  |  |  |             "    Non-greedily grab all characters | 
					
						
							|  |  |  |             "    Followed by a valid filename \w\+\.\w\+ (sql.vim) | 
					
						
							|  |  |  |             "    Followed by a newline, but do not include the newline | 
					
						
							|  |  |  |             " | 
					
						
							|  |  |  |             "    Replace it with just the filename (get rid of PATH) | 
					
						
							|  |  |  |             " | 
					
						
							|  |  |  |             "    Recursively, since there are many filenames that contain | 
					
						
							|  |  |  |             "    the word SQL in the indent, syntax and ftplugin directory | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |             let sqls = substitute( sqls, | 
					
						
							|  |  |  |                         \ '[\n]\%(.\{-}\)\(\w\+\.\w\+\)\n\@=', | 
					
						
							|  |  |  |                         \ '\1\n', | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |                         \ 'g' | 
					
						
							|  |  |  |                         \ ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             " Remove duplicates, since sqlanywhere.vim can exist in the | 
					
						
							|  |  |  |             " sytax, indent and ftplugin directory, yet we only want | 
					
						
							|  |  |  |             " to display the option once | 
					
						
							|  |  |  |             let index = match(sqls, '.\{-}\ze\n') | 
					
						
							|  |  |  |             while index > -1 | 
					
						
							|  |  |  |                 " Get the first filename | 
					
						
							|  |  |  |                 let file = matchstr(sqls, '.\{-}\ze\n', index) | 
					
						
							|  |  |  |                 " Recursively replace any *other* occurrence of that | 
					
						
							|  |  |  |                 " filename with nothing (ie remove it) | 
					
						
							|  |  |  |                 let sqls = substitute(sqls, '\%>'.(index+strlen(file)).'c\<'.file.'\>\n', '', 'g') | 
					
						
							|  |  |  |                 " Move on to the next filename | 
					
						
							|  |  |  |                 let index = match(sqls, '.\{-}\ze\n', (index+strlen(file)+1)) | 
					
						
							|  |  |  |             endwhile | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             " Sort the list if using version 7 | 
					
						
							|  |  |  |             if v:version >= 700 | 
					
						
							|  |  |  |                 let mylist = split(sqls, "\n") | 
					
						
							|  |  |  |                 let mylist = sort(mylist) | 
					
						
							|  |  |  |                 let sqls   = join(mylist, "\n") | 
					
						
							|  |  |  |             endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             let s:sql_list = sqls | 
					
						
							|  |  |  |         endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return s:sql_list | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     endfunction | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function SQL_SetType(name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         " User has decided to override default SQL scripts and | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         " specify a vendor specific version | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |         " (ie Oracle, Informix, SQL Anywhere, ...) | 
					
						
							|  |  |  |         " So check for an remove any settings that prevent the | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         " scripts from being executed, and then source the | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |         " appropriate Vim scripts. | 
					
						
							|  |  |  |         if exists("b:did_ftplugin") | 
					
						
							|  |  |  |             unlet b:did_ftplugin | 
					
						
							|  |  |  |         endif | 
					
						
							|  |  |  |         if exists("b:current_syntax") | 
					
						
							|  |  |  |             " echomsg 'SQLSetType - clearing syntax' | 
					
						
							|  |  |  |             syntax clear | 
					
						
							|  |  |  |         endif | 
					
						
							|  |  |  |         if exists("b:did_indent") | 
					
						
							|  |  |  |             " echomsg 'SQLSetType - clearing indent' | 
					
						
							|  |  |  |             unlet b:did_indent | 
					
						
							|  |  |  |             " Set these values to their defaults | 
					
						
							|  |  |  |             setlocal indentkeys& | 
					
						
							|  |  |  |             setlocal indentexpr& | 
					
						
							|  |  |  |         endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         " Ensure the name is in the correct format | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         let new_sql_type = substitute(a:name, | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |                     \ '\s*\([^\.]\+\)\(\.\w\+\)\?', '\L\1', '') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         " Do not specify a buffer local variable if it is | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |         " the default value | 
					
						
							|  |  |  |         if new_sql_type == 'sql' | 
					
						
							|  |  |  |           let new_sql_type = 'sqloracle' | 
					
						
							|  |  |  |         endif | 
					
						
							|  |  |  |         let b:sql_type_override = new_sql_type | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-01 16:13:51 +02:00
										 |  |  |         " Remove any cached SQL since a new sytax will have different | 
					
						
							|  |  |  |         " items and groups | 
					
						
							| 
									
										
										
										
											2013-05-17 18:14:19 +02:00
										 |  |  |         if !exists('g:loaded_sql_completion') || g:loaded_sql_completion >= 100 | 
					
						
							| 
									
										
										
										
											2010-08-01 16:13:51 +02:00
										 |  |  |             call sqlcomplete#ResetCacheSyntax() | 
					
						
							|  |  |  |         endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |         " Vim will automatically source the correct files if we | 
					
						
							|  |  |  |         " change the filetype.  You cannot do this with setfiletype | 
					
						
							|  |  |  |         " since that command will only execute if a filetype has | 
					
						
							|  |  |  |         " not already been set.  In this case we want to override | 
					
						
							|  |  |  |         " the existing filetype. | 
					
						
							|  |  |  |         let &filetype = 'sql' | 
					
						
							| 
									
										
										
										
											2010-08-01 16:13:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if b:sql_compl_savefunc != "" | 
					
						
							|  |  |  |             " We are changing the filetype to SQL from some other filetype | 
					
						
							|  |  |  |             " which had OMNI completion defined.  We need to activate the | 
					
						
							|  |  |  |             " SQL completion plugin in order to cache some of the syntax items | 
					
						
							|  |  |  |             " while the syntax rules for SQL are active. | 
					
						
							|  |  |  |             call sqlcomplete#PreCacheSyntax() | 
					
						
							|  |  |  |         endif | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |     endfunction | 
					
						
							|  |  |  |     command! -nargs=* -complete=custom,SQL_GetList SQLSetType :call SQL_SetType(<q-args>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | " Functions/Commands to allow the user determine current SQL syntax dialect | 
					
						
							|  |  |  | " This works with both Vim 6 and 7. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if !exists("*SQL_GetType") | 
					
						
							|  |  |  |     function SQL_GetType() | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         if exists('b:sql_type_override') | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |             echomsg "Current SQL dialect in use:".b:sql_type_override | 
					
						
							|  |  |  |         else | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |             echomsg "Current SQL dialect in use:".g:sql_type_default | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |         endif | 
					
						
							|  |  |  |     endfunction | 
					
						
							|  |  |  |     command! -nargs=0 SQLGetType :call SQL_GetType() | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | if exists("b:sql_type_override") | 
					
						
							|  |  |  |     " echo 'sourcing buffer ftplugin/'.b:sql_type_override.'.vim' | 
					
						
							|  |  |  |     if globpath(&runtimepath, 'ftplugin/'.b:sql_type_override.'.vim') != '' | 
					
						
							|  |  |  |         exec 'runtime ftplugin/'.b:sql_type_override.'.vim' | 
					
						
							|  |  |  |     " else | 
					
						
							|  |  |  |     "     echomsg 'ftplugin/'.b:sql_type_override.' not exist, using default' | 
					
						
							|  |  |  |     endif | 
					
						
							|  |  |  | elseif exists("g:sql_type_default") | 
					
						
							|  |  |  |     " echo 'sourcing global ftplugin/'.g:sql_type_default.'.vim' | 
					
						
							|  |  |  |     if globpath(&runtimepath, 'ftplugin/'.g:sql_type_default.'.vim') != '' | 
					
						
							|  |  |  |         exec 'runtime ftplugin/'.g:sql_type_default.'.vim' | 
					
						
							|  |  |  |     " else | 
					
						
							|  |  |  |     "     echomsg 'ftplugin/'.g:sql_type_default.'.vim not exist, using default' | 
					
						
							|  |  |  |     endif | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " If the above runtime command succeeded, do not load the default settings | 
					
						
							|  |  |  | if exists("b:did_ftplugin") | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | let b:undo_ftplugin = "setl comments< formatoptions< define< omnifunc<" . | 
					
						
							|  |  |  | 		    \ " | unlet! b:browsefilter b:match_words" | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Don't load another plugin for this buffer | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | let b:did_ftplugin     = 1 | 
					
						
							|  |  |  | let b:current_ftplugin = 'sql' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Win32 can filter files in the browse dialog | 
					
						
							|  |  |  | if has("gui_win32") && !exists("b:browsefilter") | 
					
						
							|  |  |  |     let b:browsefilter = "SQL Files (*.sql)\t*.sql\n" . | 
					
						
							|  |  |  | 	  \ "All Files (*.*)\t*.*\n" | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | " Some standard expressions for use with the matchit strings | 
					
						
							|  |  |  | let s:notend = '\%(\<end\s\+\)\@<!' | 
					
						
							|  |  |  | let s:when_no_matched_or_others = '\%(\<when\>\%(\s\+\%(\%(\<not\>\s\+\)\?<matched\>\)\|\<others\>\)\@!\)' | 
					
						
							|  |  |  | let s:or_replace = '\%(or\s\+replace\s\+\)\?' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Define patterns for the matchit macro | 
					
						
							|  |  |  | if !exists("b:match_words") | 
					
						
							|  |  |  |     " SQL is generally case insensitive | 
					
						
							|  |  |  |     let b:match_ignorecase = 1 | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     " Handle the following: | 
					
						
							|  |  |  |     " 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 | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |     " when | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  |     " when | 
					
						
							|  |  |  |     " default | 
					
						
							|  |  |  |     " end case | 
					
						
							|  |  |  |     " | 
					
						
							|  |  |  |     " merge | 
					
						
							|  |  |  |     " when not matched | 
					
						
							|  |  |  |     " when matched | 
					
						
							|  |  |  |     " | 
					
						
							|  |  |  |     " EXCEPTION | 
					
						
							|  |  |  |     " WHEN column_not_found THEN | 
					
						
							|  |  |  |     " WHEN OTHERS THEN | 
					
						
							|  |  |  |     " | 
					
						
							|  |  |  |     " create[ or replace] procedure|function|event | 
					
						
							| 
									
										
										
										
											2011-04-01 18:03:16 +02:00
										 |  |  |                 " \ '^\s*\<\%(do\|for\|while\|loop\)\>.*:'. | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |     " For ColdFusion support | 
					
						
							|  |  |  |     setlocal matchpairs+=<:> | 
					
						
							|  |  |  |     let b:match_words = &matchpairs . | 
					
						
							|  |  |  | 		\ ',\<begin\>:\<end\>\W*$,'. | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 		\ | 
					
						
							|  |  |  |                 \ s:notend . '\<if\>:'. | 
					
						
							|  |  |  |                 \ '\<elsif\>\|\<elseif\>\|\<else\>:'. | 
					
						
							|  |  |  |                 \ '\<end\s\+if\>,'. | 
					
						
							|  |  |  |                 \ | 
					
						
							| 
									
										
										
										
											2011-04-01 18:03:16 +02:00
										 |  |  |                 \ '\(^\s*\)\@<=\(\<\%(do\|for\|while\|loop\)\>.*\):'. | 
					
						
							|  |  |  |                 \ '\%(\<exit\>\|\<leave\>\|\<break\>\|\<continue\>\):'. | 
					
						
							|  |  |  |                 \ '\%(\<doend\>\|\%(\<end\s\+\%(for\|while\|loop\>\)\)\),'. | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  |                 \ | 
					
						
							|  |  |  |                 \ '\%('. s:notend . '\<case\>\):'. | 
					
						
							|  |  |  |                 \ '\%('.s:when_no_matched_or_others.'\):'. | 
					
						
							|  |  |  |                 \ '\%(\<when\s\+others\>\|\<end\s\+case\>\),' . | 
					
						
							|  |  |  |                 \ | 
					
						
							|  |  |  |                 \ '\<merge\>:' . | 
					
						
							|  |  |  |                 \ '\<when\s\+not\s\+matched\>:' . | 
					
						
							|  |  |  |                 \ '\<when\s\+matched\>,' . | 
					
						
							|  |  |  |                 \ | 
					
						
							|  |  |  |                 \ '\%(\<create\s\+' . s:or_replace . '\)\?'. | 
					
						
							|  |  |  |                 \ '\%(function\|procedure\|event\):'. | 
					
						
							|  |  |  |                 \ '\<returns\?\>' | 
					
						
							|  |  |  |                 " \ '\<begin\>\|\<returns\?\>:'. | 
					
						
							|  |  |  |                 " \ '\<end\>\(;\)\?\s*$' | 
					
						
							|  |  |  |                 " \ '\<exception\>:'.s:when_no_matched_or_others. | 
					
						
							|  |  |  |                 " \ ':\<when\s\+others\>,'. | 
					
						
							|  |  |  | 		" | 
					
						
							|  |  |  |                 " \ '\%(\<exception\>\|\%('. s:notend . '\<case\>\)\):'. | 
					
						
							|  |  |  |                 " \ '\%(\<default\>\|'.s:when_no_matched_or_others.'\):'. | 
					
						
							|  |  |  |                 " \ '\%(\%(\<when\s\+others\>\)\|\<end\s\+case\>\),' . | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | endif | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Define how to find the macro definition of a variable using the various | 
					
						
							|  |  |  | " [d, [D, [_CTRL_D and so on features | 
					
						
							|  |  |  | " Match these values ignoring case | 
					
						
							|  |  |  | " ie  DECLARE varname INTEGER | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | let &l:define = '\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>' | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Mappings to move to the next BEGIN ... END block | 
					
						
							|  |  |  | " \W - no characters or digits | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | 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> | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | " By default only look for CREATE statements, but allow | 
					
						
							|  |  |  | " the user to override | 
					
						
							|  |  |  | if !exists('g:ftplugin_sql_statements') | 
					
						
							|  |  |  |     let g:ftplugin_sql_statements = 'create' | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Predefined SQL objects what are used by the below mappings using | 
					
						
							|  |  |  | " the ]} style maps. | 
					
						
							|  |  |  | " This global variable allows the users to override it's value | 
					
						
							|  |  |  | " from within their vimrc. | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | " Note, you cannot use \?, since these patterns can be used to search | 
					
						
							|  |  |  | " backwards, you must use \{,1} | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | if !exists('g:ftplugin_sql_objects') | 
					
						
							|  |  |  |     let g:ftplugin_sql_objects = 'function,procedure,event,' . | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |                 \ '\(existing\\|global\s\+temporary\s\+\)\{,1}' . | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |                 \ 'table,trigger' . | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  |                 \ ',schema,service,publication,database,datatype,domain' . | 
					
						
							|  |  |  |                 \ ',index,subscription,synchronization,view,variable' | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | " Key to trigger SQL completion | 
					
						
							|  |  |  | if !exists('g:ftplugin_sql_omni_key') | 
					
						
							|  |  |  |     let g:ftplugin_sql_omni_key = '<C-C>' | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " Key to trigger drill into column list | 
					
						
							|  |  |  | if !exists('g:ftplugin_sql_omni_key_right') | 
					
						
							|  |  |  |     let g:ftplugin_sql_omni_key_right = '<Right>' | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " Key to trigger drill out of column list | 
					
						
							|  |  |  | if !exists('g:ftplugin_sql_omni_key_left') | 
					
						
							|  |  |  |     let g:ftplugin_sql_omni_key_left = '<Left>' | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | " Replace all ,'s with bars, except ones with numbers after them. | 
					
						
							|  |  |  | " This will most likely be a \{,1} string. | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | 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') . | 
					
						
							|  |  |  |             \ '\)\>' | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Mappings to move to the next CREATE ... block | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | exec "nnoremap <buffer> <silent> ]} :call search('".s:ftplugin_sql_objects."', 'W')<CR>" | 
					
						
							|  |  |  | exec "nnoremap <buffer> <silent> [{ :call search('".s:ftplugin_sql_objects."', 'bW')<CR>" | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | " Could not figure out how to use a :call search() string in visual mode | 
					
						
							|  |  |  | " without it ending visual mode | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | " Unfortunately, this will add a entry to the search history | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | exec 'xnoremap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>' | 
					
						
							|  |  |  | exec 'xnoremap <buffer> <silent> [{ ?'.s:ftplugin_sql_objects.'<CR>' | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Mappings to move to the next COMMENT | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " Had to double the \ for the \| separator since this has a special | 
					
						
							|  |  |  | " meaning on maps | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | let b:comment_leader = '\(--\\|\/\/\\|\*\\|\/\*\\|\*\/\)' | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | " Find the start of the next comment | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | let b:comment_start  = '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. | 
					
						
							|  |  |  |             \ '\(\s*'.b:comment_leader.'\)' | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | " Find the end of the previous comment | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | let b:comment_end = '\(^\s*'.b:comment_leader.'.*\n\)'. | 
					
						
							|  |  |  |             \ '\(^\s*'.b:comment_leader.'\)\@!' | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | " Skip over the comment | 
					
						
							|  |  |  | let b:comment_jump_over  = "call search('". | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |             \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  |             \ "', 'W')" | 
					
						
							|  |  |  | let b:comment_skip_back  = "call search('". | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |             \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  |             \ "', 'bW')" | 
					
						
							|  |  |  | " Move to the start and end of comments | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  | exec 'nnoremap <silent><buffer> ]" :call search('."'".b:comment_start."'".', "W" )<CR>' | 
					
						
							|  |  |  | exec 'nnoremap <silent><buffer> [" :call search('."'".b:comment_end."'".', "W" )<CR>' | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | 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>' | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Comments can be of the form: | 
					
						
							|  |  |  | "   /* | 
					
						
							|  |  |  | "    * | 
					
						
							|  |  |  | "    */ | 
					
						
							|  |  |  | " or | 
					
						
							|  |  |  | "   -- | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | " or | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  | "   // | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | setlocal comments=s1:/*,mb:*,ex:*/,:--,:// | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | " Set completion with CTRL-X CTRL-O to autoloaded function. | 
					
						
							|  |  |  | if exists('&omnifunc') | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |     " Since the SQL completion plugin can be used in conjunction | 
					
						
							|  |  |  |     " with other completion filetypes it must record the previous | 
					
						
							|  |  |  |     " OMNI function prior to setting up the SQL OMNI function | 
					
						
							|  |  |  |     let b:sql_compl_savefunc = &omnifunc | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 18:14:19 +02:00
										 |  |  |     " Source it to determine it's version | 
					
						
							|  |  |  |     runtime autoload/sqlcomplete.vim | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  |     " This is used by the sqlcomplete.vim plugin | 
					
						
							|  |  |  |     " Source it for it's global functions | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |     runtime autoload/syntaxcomplete.vim | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     setlocal omnifunc=sqlcomplete#Complete | 
					
						
							|  |  |  |     " Prevent the intellisense plugin from loading | 
					
						
							|  |  |  |     let b:sql_vis = 1 | 
					
						
							| 
									
										
										
										
											2006-03-29 21:18:24 +00:00
										 |  |  |     if !exists('g:omni_sql_no_default_maps') | 
					
						
							| 
									
										
										
										
											2013-05-17 18:14:19 +02:00
										 |  |  |         let regex_extra = '' | 
					
						
							|  |  |  |         if exists('g:loaded_syntax_completion') && exists('g:loaded_sql_completion') | 
					
						
							|  |  |  |             if g:loaded_syntax_completion > 120 && g:loaded_sql_completion > 140 | 
					
						
							|  |  |  |                 let regex_extra = '\\w*' | 
					
						
							|  |  |  |             endif | 
					
						
							|  |  |  |         endif | 
					
						
							| 
									
										
										
										
											2006-03-29 21:18:24 +00:00
										 |  |  |         " Static maps which use populate the completion list | 
					
						
							|  |  |  |         " using Vim's syntax highlighting rules | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>' | 
					
						
							| 
									
										
										
										
											2013-05-17 18:14:19 +02:00
										 |  |  |         exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword'.regex_extra.'")<CR><C-X><C-O>' | 
					
						
							|  |  |  |         exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction'.regex_extra.'")<CR><C-X><C-O>' | 
					
						
							|  |  |  |         exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption'.regex_extra.'")<CR><C-X><C-O>' | 
					
						
							|  |  |  |         exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType'.regex_extra.'")<CR><C-X><C-O>' | 
					
						
							|  |  |  |         exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement'.regex_extra.'")<CR><C-X><C-O>' | 
					
						
							| 
									
										
										
										
											2006-03-29 21:18:24 +00:00
										 |  |  |         " Dynamic maps which use populate the completion list | 
					
						
							|  |  |  |         " using the dbext.vim plugin | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         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>' | 
					
						
							| 
									
										
										
										
											2006-03-29 21:18:24 +00:00
										 |  |  |         " 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 | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |         " <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. | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |         " if has('win32') | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         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>' | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |         " endif | 
					
						
							| 
									
										
										
										
											2006-03-29 21:18:24 +00:00
										 |  |  |         " Remove any cached items useful for schema changes | 
					
						
							| 
									
										
										
										
											2012-12-05 19:01:43 +01:00
										 |  |  |         exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>' | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |     endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if b:sql_compl_savefunc != "" | 
					
						
							|  |  |  |         " We are changing the filetype to SQL from some other filetype | 
					
						
							|  |  |  |         " which had OMNI completion defined.  We need to activate the | 
					
						
							|  |  |  |         " SQL completion plugin in order to cache some of the syntax items | 
					
						
							|  |  |  |         " while the syntax rules for SQL are active. | 
					
						
							| 
									
										
										
										
											2010-08-01 16:13:51 +02:00
										 |  |  |         call sqlcomplete#ResetCacheSyntax() | 
					
						
							| 
									
										
										
										
											2006-04-27 00:02:13 +00:00
										 |  |  |         call sqlcomplete#PreCacheSyntax() | 
					
						
							| 
									
										
										
										
											2006-03-29 21:18:24 +00:00
										 |  |  |     endif | 
					
						
							| 
									
										
										
										
											2006-03-09 22:27:48 +00:00
										 |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | let &cpo = s:save_cpo | 
					
						
							| 
									
										
										
										
											2012-03-11 15:57:40 +01:00
										 |  |  | unlet s:save_cpo | 
					
						
							| 
									
										
										
										
											2005-02-22 08:39:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-29 21:18:24 +00:00
										 |  |  | " vim:sw=4: |