diff options
author | Bram Moolenaar <Bram@vim.org> | 2006-04-22 22:33:57 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2006-04-22 22:33:57 +0000 |
commit | eb3593b38b7b6b658e93ad05d6caf76d58cc0c35 (patch) | |
tree | 39210f19a86e4db2914523b0fde4a5ff9d345c16 /runtime/autoload | |
parent | 57657d85c6c3d812e99b5e5d5161c07c66ac7dc7 (diff) |
updated for version 7.0e06v7.0e06
Diffstat (limited to 'runtime/autoload')
-rw-r--r-- | runtime/autoload/rubycomplete.vim | 71 | ||||
-rw-r--r-- | runtime/autoload/sqlcomplete.vim | 72 |
2 files changed, 114 insertions, 29 deletions
diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim index 0a745b98c9..d1c8a26538 100644 --- a/runtime/autoload/rubycomplete.vim +++ b/runtime/autoload/rubycomplete.vim @@ -10,6 +10,7 @@ " Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com) " ---------------------------------------------------------------------------- +" {{{ requirement checks if !has('ruby') echohl ErrorMsg echo "Error: Required vim compiled with +ruby" @@ -23,8 +24,17 @@ if version < 700 echohl None finish endif +" }}} requirement checks +if !exists("g:rubycomplete_rails") + let g:rubycomplete_rails = 0 +endif + +if !exists("g:rubycomplete_classes_in_global") + let g:rubycomplete_classes_in_global = 0 +endif +" {{{ vim-side support functions function! GetBufferRubyModule(name) let [snum,enum] = GetBufferRubyEntity(a:name, "module") return snum . '..' . enum @@ -103,6 +113,8 @@ function! GetRubyVarType(v) return '' endfunction +"}}} vim-side support functions + function! rubycomplete#Complete(findstart, base) "findstart = 1 when we need to get the text length if a:findstart @@ -133,6 +145,7 @@ endfunction function! s:DefRuby() ruby << RUBYEOF +# {{{ ruby completion RailsWords = [ "has_many", "has_one", "belongs_to", @@ -164,11 +177,11 @@ Operators = [ "%", "&", "*", "**", "+", "-", "/", def load_requires - @buf = VIM::Buffer.current - enum = @buf.line_number + buf = VIM::Buffer.current + enum = buf.line_number nums = Range.new( 1, enum ) nums.each do |x| - ln = @buf[x] + ln = buf[x] begin eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln ) rescue Exception @@ -198,7 +211,7 @@ def load_buffer_module(name) end def get_buffer_entity(name, vimfun) - @buf = VIM::Buffer.current + buf = VIM::Buffer.current nums = eval( VIM::evaluate( vimfun % name ) ) return nil if nums == nil return nil if nums.min == nums.max && nums.min == 0 @@ -207,7 +220,7 @@ def get_buffer_entity(name, vimfun) classdef = "" nums.each do |x| if x != cur_line - ln = @buf[x] + ln = buf[x] classdef += "%s\n" % ln end end @@ -215,6 +228,25 @@ def get_buffer_entity(name, vimfun) return classdef end +def get_buffer_classes() + # this will be a little expensive. + allow_aggressive_load = VIM::evaluate('g:rubycomplete_classes_in_global') + return [] if allow_aggressive_load != '1' + + buf = VIM::Buffer.current + eob = buf.length + ret = [] + rg = 1..eob + + rg.each do |x| + if /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*/.match( buf[x] ) + ret.push $1 + end + end + + return ret +end + def load_rails() allow_rails = VIM::evaluate('g:rubycomplete_rails') return if allow_rails != '1' @@ -233,13 +265,19 @@ def load_rails() break end end + + return if pok == nil bootfile = pok + "/boot.rb" - require bootfile if pok != nil && File.exists?( bootfile ) + if File.exists?( bootfile ) + require bootfile + VIM::evaluate('let g:rubycomplete_rails_loaded = 1') + end end def get_rails_helpers allow_rails = VIM::evaluate('g:rubycomplete_rails') - return [] if allow_rails != '1' + rails_loaded = VIM::evaluate('g:rubycomplete_rails_loaded') + return [] if allow_rails != '1' || rails_loaded != '1' return RailsWords end @@ -404,14 +442,21 @@ def get_completions(base) receiver = $1 message = input load_buffer_class( receiver ) - candidates = eval( "#{receiver}.instance_methods" ) - candidates += get_rails_helpers - select_message(receiver, message, candidates) + begin + candidates = eval( "#{receiver}.instance_methods" ) + candidates += get_rails_helpers + select_message(receiver, message, candidates) + rescue Exception + found = nil + end end end if inclass == nil || found == nil candidates = eval("self.class.constants") + candidates += get_buffer_classes + candidates.uniq! + candidates.sort! (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/) end end @@ -459,10 +504,12 @@ def select_message(receiver, message, candidates) candidates.uniq! candidates.sort! end + +# }}} ruby completion RUBYEOF endfunction +let g:rubycomplete_rails_loaded = 0 -let g:rubycomplete_rails = 0 call s:DefRuby() -" vim: set et ts=4: +" vim:tw=78:sw=4:ts=8:ft=vim:norl: diff --git a/runtime/autoload/sqlcomplete.vim b/runtime/autoload/sqlcomplete.vim index b0415bc152..ec158f6832 100644 --- a/runtime/autoload/sqlcomplete.vim +++ b/runtime/autoload/sqlcomplete.vim @@ -1,8 +1,8 @@ " Vim completion script " Language: SQL " Maintainer: David Fishburn <fishburn@ianywhere.com> -" Version: 2.0 -" Last Change: Mon Apr 03 2006 10:21:36 PM +" Version: 3.0 +" Last Change: Thu Apr 20 2006 8:47:12 PM " Set completion with CTRL-X CTRL-O to autoloaded function. " This check is in place in case this script is @@ -18,7 +18,7 @@ endif if exists('g:loaded_sql_completion') finish endif -let g:loaded_sql_completion = 1 +let g:loaded_sql_completion = 30 " Maintains filename of dictionary let s:sql_file_table = "" @@ -60,6 +60,24 @@ if !exists('g:omni_sql_precache_syntax_groups') \ 'sqlStatement' \ ] endif +" Set ignorecase to the ftplugin standard +if !exists('g:omni_sql_ignorecase') + let g:omni_sql_ignorecase = &ignorecase +endif +" During table completion, should the table list also +" include the owner name +if !exists('g:omni_sql_include_owner') + let g:omni_sql_include_owner = 0 + if exists('g:loaded_dbext') + if g:loaded_dbext >= 300 + " New to dbext 3.00, by default the table lists include the owner + " name of the table. This is used when determining how much of + " whatever has been typed should be replaced as part of the + " code replacement. + let g:omni_sql_include_owner = 1 + endif + endif +endif " This function is used for the 'omnifunc' option. function! sqlcomplete#Complete(findstart, base) @@ -81,14 +99,26 @@ function! sqlcomplete#Complete(findstart, base) while start > 0 if line[start - 1] =~ '\w' let start -= 1 - elseif line[start - 1] =~ '\.' && compl_type =~ 'column' - " If the completion type is column then assume we are looking - " for column completion column_type can be either - " 'column' or 'column_csv' - if lastword == -1 && compl_type == 'column' - " Do not replace the table name prefix or alias - " if completing only a single column name + elseif line[start - 1] =~ '\.' && + \ compl_type =~ 'column\|table\|view\|procedure' + " If lastword has already been set for column completion + " break from the loop, since we do not also want to pickup + " a table name if it was also supplied. + if lastword != -1 && compl_type =~ 'column' + break + endif + " Assume we are looking for column completion + " column_type can be either 'column' or 'column_csv' + if lastword == -1 && compl_type =~ 'column' + let lastword = start + endif + " If omni_sql_include_owner = 0, do not include the table + " name as part of the substitution, so break here + if lastword == -1 && + \ compl_type =~ 'table\|view\|procedure' && + \ g:omni_sql_include_owner == 0 let lastword = start + break endif let start -= 1 else @@ -144,6 +174,14 @@ function! sqlcomplete#Complete(findstart, base) if s:sql_file_{compl_type} != "" if filereadable(s:sql_file_{compl_type}) let compl_list = readfile(s:sql_file_{compl_type}) + " let dic_list = readfile(s:sql_file_{compl_type}) + " if !empty(dic_list) + " for elem in dic_list + " let kind = (compl_type=='table'?'m':(compl_type=='procedure'?'f':'v')) + " let item = {'word':elem, 'menu':elem, 'kind':kind, 'info':compl_type} + " let compl_list += [item] + " endfor + " endif endif endif elseif compl_type == 'column' @@ -203,8 +241,8 @@ function! sqlcomplete#Complete(findstart, base) if base != '' " Filter the list based on the first few characters the user " entered - let expr = 'v:val =~ "^'.base.'"' - let compl_list = filter(copy(compl_list), expr) + let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "^'.base.'"' + let compl_list = filter(deepcopy(compl_list), expr) endif if exists('b:sql_compl_savefunc') && b:sql_compl_savefunc != "" @@ -297,8 +335,8 @@ function! s:SQLCCheck4dbext() " Leave time for the user to read the error message :sleep 2 return -1 - elseif g:loaded_dbext < 210 - let msg = "The dbext plugin must be at least version 2.10 " . + elseif g:loaded_dbext < 300 + let msg = "The dbext plugin must be at least version 3.00 " . \ " for dynamic SQL completion" call s:SQLCErrorMsg(msg) " Leave time for the user to read the error message @@ -363,7 +401,7 @@ function! s:SQLCGetColumns(table_name, list_type) let table_alias = '' let move_to_top = 1 - if g:loaded_dbext >= 210 + if g:loaded_dbext >= 300 let saveSettingAlias = DB_listOption('use_tbl_alias') exec 'DBSetOption use_tbl_alias=n' endif @@ -479,7 +517,7 @@ function! s:SQLCGetColumns(table_name, list_type) call cursor(curline, curcol) if found == 0 - if g:loaded_dbext > 201 + if g:loaded_dbext > 300 exec 'DBSetOption use_tbl_alias='.saveSettingAlias endif @@ -502,7 +540,7 @@ function! s:SQLCGetColumns(table_name, list_type) endif - if g:loaded_dbext > 201 + if g:loaded_dbext > 300 exec 'DBSetOption use_tbl_alias='.saveSettingAlias endif |