summaryrefslogtreecommitdiff
path: root/runtime/autoload
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2006-04-22 22:33:57 +0000
committerBram Moolenaar <Bram@vim.org>2006-04-22 22:33:57 +0000
commiteb3593b38b7b6b658e93ad05d6caf76d58cc0c35 (patch)
tree39210f19a86e4db2914523b0fde4a5ff9d345c16 /runtime/autoload
parent57657d85c6c3d812e99b5e5d5161c07c66ac7dc7 (diff)
downloadvim-eb3593b38b7b6b658e93ad05d6caf76d58cc0c35.zip
updated for version 7.0e06
Diffstat (limited to 'runtime/autoload')
-rw-r--r--runtime/autoload/rubycomplete.vim71
-rw-r--r--runtime/autoload/sqlcomplete.vim72
2 files changed, 114 insertions, 29 deletions
diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim
index 0a745b98c..d1c8a2653 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 b0415bc15..ec158f683 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