Created
February 17, 2015 08:02
-
-
Save complex857/a996fe343ec389c54076 to your computer and use it in GitHub Desktop.
Patch tryin' to fix phpcomplete while "set noequalalways"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
commit 101e3f4f349c8fe08c45bba1c00fa60bc50b1520 | |
Author: dudu <[email protected]> | |
Date: Tue Feb 17 08:54:30 2015 +0100 | |
Add equalalways manipulation to fix running out of space issues | |
diff --git a/autoload/phpcomplete.vim b/autoload/phpcomplete.vim | |
index 2a1329a..8a72a7d 100644 | |
--- a/autoload/phpcomplete.vim | |
+++ b/autoload/phpcomplete.vim | |
@@ -217,6 +217,9 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{ | |
call phpcomplete#LoadData() | |
endif | |
+ let b:saved_equalalways = &equalalways | |
+ set equalalways | |
+ | |
" a:base is very short - we need context | |
if exists("b:compl_context") | |
let context = b:compl_context | |
@@ -229,67 +232,84 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{ | |
let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.'))) | |
- if context =~? '^use\s' || context ==? 'use' | |
- return phpcomplete#CompleteUse(a:base) | |
- endif | |
+ let completion_results = [] | |
+ while 1 | |
+ if context =~? '^use\s' || context ==? 'use' | |
+ let completion_results = phpcomplete#CompleteUse(a:base) | |
+ break | |
+ endif | |
- if context =~ '\(->\|::\)$' | |
- " {{{ | |
- " Get name of the class | |
- let classname = phpcomplete#GetClassName(line('.'), context, current_namespace, imports) | |
+ 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] | |
+ " 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 namespace = '\' | |
+ let classlocation = '' | |
endif | |
- let classlocation = phpcomplete#GetClassLocation(classname, namespace) | |
- else | |
- let classlocation = '' | |
- endif | |
- if classlocation != '' | |
- if classlocation == 'VIMPHP_BUILTINOBJECT' && has_key(g:php_builtin_classes, tolower(classname)) | |
- return phpcomplete#CompleteBuiltInClass(context, classname, a:base) | |
- endif | |
+ if classlocation != '' | |
+ if classlocation == 'VIMPHP_BUILTINOBJECT' && has_key(g:php_builtin_classes, tolower(classname)) | |
+ return phpcomplete#CompleteBuiltInClass(context, classname, a:base) | |
+ 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 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#CompleteUserClass(context, a:base, sccontent, visibility) | |
+ let completion_results = phpcomplete#CompleteUserClass(context, a:base, sccontent, visibility) | |
+ break | |
+ endif | |
endif | |
+ | |
+ let completion_results = phpcomplete#CompleteUnknownClass(a:base, context) | |
+ break | |
+ " }}} | |
+ elseif context =~? 'implements' | |
+ let completion_results = phpcomplete#CompleteClassName(a:base, ['i'], current_namespace, imports) | |
+ elseif context =~? 'extends\s\+.\+$' && a:base == '' | |
+ let completion_results = ['implements'] | |
+ elseif context =~? 'extends' | |
+ let kinds = context =~? 'class\s' ? ['c'] : ['i'] | |
+ let completion_results = 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' | |
+ let completion_results = phpcomplete#CompleteClassName(a:base, ['c'], current_namespace, imports) | |
+ endif | |
+ | |
+ if a:base =~ '^\$' | |
+ let completion_results = phpcomplete#CompleteVariable(a:base) | |
+ else | |
+ let completion_results = 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 | |
+ break | |
+ endwhile | |
- if a:base =~ '^\$' | |
- return phpcomplete#CompleteVariable(a:base) | |
- else | |
- return phpcomplete#CompleteGeneral(a:base, current_namespace, imports) | |
+ if exists('b:saved_equalalways') | |
+ if b:saved_equalalways == 0 | |
+ set noequalalways | |
+ endif | |
+ unlet! b:saved_equalalways | |
endif | |
+ | |
+ return completion_results | |
endfunction | |
" }}} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment