summaryrefslogtreecommitdiffstats
path: root/runtime/autoload/phpcomplete.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-04-13 14:22:40 +0200
committerBram Moolenaar <Bram@vim.org>2015-04-13 14:22:40 +0200
commit83d1b19015219c7799af0a0d539ae86a41057240 (patch)
tree504320447920795d391781638863cd6f40dddd9f /runtime/autoload/phpcomplete.vim
parent29d54df5cdd0ef4caa9c050854ddffdabece7a61 (diff)
More updated runtime files.
Diffstat (limited to 'runtime/autoload/phpcomplete.vim')
-rw-r--r--runtime/autoload/phpcomplete.vim141
1 files changed, 74 insertions, 67 deletions
diff --git a/runtime/autoload/phpcomplete.vim b/runtime/autoload/phpcomplete.vim
index dbc40fdf36..6dcddfd43e 100644
--- a/runtime/autoload/phpcomplete.vim
+++ b/runtime/autoload/phpcomplete.vim
@@ -3,7 +3,7 @@
" Maintainer: Dávid Szabó ( complex857 AT gmail DOT com )
" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" URL: https://github.com/shawncplus/phpcomplete.vim
-" Last Change: 2015 Feb 28
+" Last Change: 2015 Apr 02
"
" OPTIONS:
"
@@ -141,71 +141,80 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{
if a:base != ""
let context = substitute(context, '\s*[$a-zA-Z_0-9\x7f-\xff]*$', '', '')
end
+ else
+ let context = ''
end
- let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.')))
+ try
+ let winheight = winheight(0)
+ let winnr = winnr()
- if context =~? '^use\s' || context ==? 'use'
- return phpcomplete#CompleteUse(a:base)
- endif
+ let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.')))
- if context =~ '\(->\|::\)$'
- " {{{
- " Get name of the class
- let classname = phpcomplete#GetClassName(line('.'), context, current_namespace, imports)
-
- " Get location of class definition, we have to iterate through all
- if classname != ''
- if classname =~ '\'
- " split the last \ segment as a classname, everything else is the namespace
- let classname_parts = split(classname, '\')
- let namespace = join(classname_parts[0:-2], '\')
- let classname = classname_parts[-1]
- else
- let namespace = '\'
- endif
- let classlocation = phpcomplete#GetClassLocation(classname, namespace)
- else
- let classlocation = ''
+ if context =~? '^use\s' || context ==? 'use'
+ return phpcomplete#CompleteUse(a:base)
endif
- if classlocation != ''
- if classlocation == 'VIMPHP_BUILTINOBJECT' && has_key(g:php_builtin_classes, tolower(classname))
- return phpcomplete#CompleteBuiltInClass(context, classname, a:base)
+ if context =~ '\(->\|::\)$'
+ " {{{
+ " Get name of the class
+ let classname = phpcomplete#GetClassName(line('.'), context, current_namespace, imports)
+
+ " Get location of class definition, we have to iterate through all
+ if classname != ''
+ if classname =~ '\'
+ " split the last \ segment as a classname, everything else is the namespace
+ let classname_parts = split(classname, '\')
+ let namespace = join(classname_parts[0:-2], '\')
+ let classname = classname_parts[-1]
+ else
+ let namespace = '\'
+ endif
+ let classlocation = phpcomplete#GetClassLocation(classname, namespace)
+ else
+ let classlocation = ''
endif
- if filereadable(classlocation)
- let classfile = readfile(classlocation)
- let classcontent = ''
- let classcontent .= "\n".phpcomplete#GetClassContents(classlocation, classname)
- let sccontent = split(classcontent, "\n")
- let visibility = expand('%:p') == fnamemodify(classlocation, ':p') ? 'private' : 'public'
+ if classlocation != ''
+ if classlocation == 'VIMPHP_BUILTINOBJECT' && has_key(g:php_builtin_classes, tolower(classname))
+ return phpcomplete#CompleteBuiltInClass(context, classname, a:base)
+ endif
- return phpcomplete#CompleteUserClass(context, a:base, sccontent, visibility)
- endif
- endif
+ if filereadable(classlocation)
+ let classfile = readfile(classlocation)
+ let classcontent = ''
+ let classcontent .= "\n".phpcomplete#GetClassContents(classlocation, classname)
+ let sccontent = split(classcontent, "\n")
+ let visibility = expand('%:p') == fnamemodify(classlocation, ':p') ? 'private' : 'public'
- return phpcomplete#CompleteUnknownClass(a:base, context)
- " }}}
- elseif context =~? 'implements'
- return phpcomplete#CompleteClassName(a:base, ['i'], current_namespace, imports)
- elseif context =~? 'extends\s\+.\+$' && a:base == ''
- return ['implements']
- elseif context =~? 'extends'
- let kinds = context =~? 'class\s' ? ['c'] : ['i']
- return phpcomplete#CompleteClassName(a:base, kinds, current_namespace, imports)
- elseif context =~? 'class [a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*'
- " special case when you've typed the class keyword and the name too, only extends and implements allowed there
- return filter(['extends', 'implements'], 'stridx(v:val, a:base) == 0')
- elseif context =~? 'new'
- return phpcomplete#CompleteClassName(a:base, ['c'], current_namespace, imports)
- endif
+ return phpcomplete#CompleteUserClass(context, a:base, sccontent, visibility)
+ endif
+ endif
- if a:base =~ '^\$'
- return phpcomplete#CompleteVariable(a:base)
- else
- return phpcomplete#CompleteGeneral(a:base, current_namespace, imports)
- endif
+ return phpcomplete#CompleteUnknownClass(a:base, context)
+ " }}}
+ elseif context =~? 'implements'
+ return phpcomplete#CompleteClassName(a:base, ['i'], current_namespace, imports)
+ elseif context =~? 'extends\s\+.\+$' && a:base == ''
+ return ['implements']
+ elseif context =~? 'extends'
+ let kinds = context =~? 'class\s' ? ['c'] : ['i']
+ return phpcomplete#CompleteClassName(a:base, kinds, current_namespace, imports)
+ elseif context =~? 'class [a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*'
+ " special case when you've typed the class keyword and the name too, only extends and implements allowed there
+ return filter(['extends', 'implements'], 'stridx(v:val, a:base) == 0')
+ elseif context =~? 'new'
+ return phpcomplete#CompleteClassName(a:base, ['c'], current_namespace, imports)
+ endif
+
+ if a:base =~ '^\$'
+ return phpcomplete#CompleteVariable(a:base)
+ else
+ return phpcomplete#CompleteGeneral(a:base, current_namespace, imports)
+ endif
+ finally
+ silent! exec winnr.'resize '.winheight
+ endtry
endfunction
" }}}
@@ -1523,21 +1532,19 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
return ''
endif
- if line =~? '\v^\s*(abstract\s+|final\s+)*\s*class'
- let class_name = matchstr(line, '\c\s*class\s*\zs'.class_name_pattern.'\ze')
+ if line =~? '\v^\s*(abstract\s+|final\s+)*\s*class\s'
+ let class_name = matchstr(line, '\cclass\s\+\zs'.class_name_pattern.'\ze')
let extended_class = matchstr(line, '\cclass\s\+'.class_name_pattern.'\s\+extends\s\+\zs'.class_name_pattern.'\ze')
let classname_candidate = a:context =~? 'parent::' ? extended_class : class_name
- else
- let i += 1
- continue
+ if classname_candidate != ''
+ let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, class_candidate_imports, methodstack)
+ " return absolute classname, without leading \
+ return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate
+ endif
endif
- if classname_candidate != ''
- let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, class_candidate_imports, methodstack)
- " return absolute classname, without leading \
- return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate
- endif
+ let i += 1
endwhile
elseif a:context =~? '(\s*new\s\+'.class_name_pattern.'\s*)->'
let classname_candidate = matchstr(a:context, '\cnew\s\+\zs'.class_name_pattern.'\ze')
@@ -2031,7 +2038,7 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam
" remember the window we started at
let phpcomplete_original_window = winnr()
- silent! tab 1new
+ silent! below 1new
silent! 0put =cfile
call search('\c\(class\|interface\|trait\)\_s\+'.a:class_name.'\(\>\|$\)')
let cfline = line('.')
@@ -2370,7 +2377,7 @@ endfunction!
function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{
let original_window = winnr()
- silent! tab 1new
+ silent! below 1new
silent! 0put =a:file_lines
normal! G