shawncplus / phpcomplete.vim

Improved PHP omnicompletion
http://www.vim.org/scripts/script.php?script_id=3171
594 stars 111 forks source link

E132: Function call depth is higher than 'maxfuncdepth' #63

Closed jrean closed 9 years ago

jrean commented 9 years ago

Hi,

My vim version:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 28 2015 20:30:27)
MacOS X (unix) version
Included patches: 1-622
Compiled by Homebrew
Huge version with MacVim GUI.  Features included (+) or not (-):
+acl             +cmdline_compl   +diff            +find_in_path    +jumplist        +mksession       +mouse_urxvt     +postscript      +signs           +tcl             +visual          +xim
+arabic          +cmdline_hist    +digraphs        +float           +keymap          +modify_fname    +mouse_xterm     +printer         +smartindent     +terminfo        +visualextra     -xsmp
+autocmd         +cmdline_info    +dnd             +folding         +langmap         +mouse           +multi_byte      +profile         -sniff           +termresponse    +viminfo         -xterm_clipboard
+balloon_eval    +comments        -ebcdic          -footer          +libcall         +mouseshape      +multi_lang      +python          +startuptime     +textobjects     +vreplace        -xterm_save
+browse          +conceal         +emacs_tags      +fork()          +linebreak       +mouse_dec       -mzscheme        -python3         +statusline      +title           +wildignore      -xpm
++builtin_terms  +cryptv          +eval            +fullscreen      +lispindent      -mouse_gpm       +netbeans_intg   +quickfix        -sun_workshop    +toolbar         +wildmenu
+byte_offset     +cscope          +ex_extra        -gettext         +listcmds        -mouse_jsbterm   +odbeditor       +reltime         +syntax          +transparency    +windows
+cindent         +cursorbind      +extra_search    -hangul_input    +localmap        +mouse_netterm   +path_extra      +rightleft       +tag_binary      +user_commands   +writebackup
+clientserver    +cursorshape     +farsi           +iconv           +lua             +mouse_sgr       +perl            +ruby            +tag_old_static  +vertsplit       -X11
+clipboard       +dialog_con_gui  +file_in_path    +insert_expand   +menu            -mouse_sysmouse  +persistent_undo +scrollbind      -tag_any_white   +virtualedit     -xfontset
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
Compilation: clang -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe  -DMACOS_X_UNIX  -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/System
/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall
-Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1     -I/System/Library/Frameworks/Tcl.framework/H
eaders  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_DARWIN_C_SOURCE=1
Linking: clang   -L. -L/usr/local/lib -L. -L/usr/local/lib -L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config -framework CoreFoundation -lpython2.7 -L/usr/local/lib -o Vim -fr
amework Cocoa -framework Carbon       -lm  -lncurses -liconv -framework Cocoa  -pagezero_size 10000 -image_base 100000000 -L/usr/local/lib -lluajit-5.1 -fstack-protector  -L/System/Library/Perl/5.18/darwi
n-thread-multi-2level/CORE -lperl -framework Python  -F/System/Library/Frameworks -framework Tcl -framework CoreFoundation -framework Ruby
" Phpcomplete ----------------------------------------------------------------v
" Improved PHP omnicompletion.
" https://github.com/shawncplus/phpcomplete.vim

autocmd FileType php setlocal omnifunc=phpcomplete#CompletePHP

" Include information extracted from docblock comments in preview window. 
let g:phpcomplete_parse_docblock_comments = 1

" Default mappings.
let g:phpcomplete_mappings = {
   \ 'jump_to_def': '<C-]>',
   \ 'jump_to_def_split': '<C-W><C-]>',
   \ 'jump_to_def_vsplit': '<C-W><C-\>',
   \}

" /Phpcomplete ---------------------------------------------------------------^

I'm working on a basic php project (Laravel 5) with SuperTab plugin activated. For instance, if I edit a model class class User extends Model implements AuthenticatableContract, CanResetPasswordContract {

My tags file is up to date (6.1M) (generated with the Patched ctags your recommend).

When I type $this->get and I hit "TAB" it freeze a couple of seconds and outputs the following trace: (It should (also) offer me completion of the parent class methods right?).

Error detected while processing function phpcomplete#CompletePHP..phpcomplete#GetClassContents..phpcomplete#GetCachedClassContents..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStruc
ture..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..php
complete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#
GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassC
ontentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsSt
ructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..
phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomple
te#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetCla
ssContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContent
sStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructur
e..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcom
plete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#Get
ClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassCont
entsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStruc
ture..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..php
complete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#
GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassC
ontentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsSt
ructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassContentsStructure..phpcomplete#GetClassLocation..phpcomple
te#GetCurrentNameSpace:
line   82:
E132: Function call depth is higher than 'maxfuncdepth'

Did I miss something?

Can you help me please?

Thank you for your hard work.

complex857 commented 9 years ago

This is a genuine bug, thank you very much for reporting it! The plugin ended up in an infinite loop here. As far as i can tell, you are doing everything right.

I've pushed a patch that should fix the looping forever issue, along with some other issues that would made the resulting suggestions lack a bunch of valid options: The style namespaces declared in Laravel was not recognized by the plugin and trait support was lacking in ExpandClassName().

With these three commits you should get a proper method list now, one fair warning however: I'm afraid it will be dreadfully slow with the g:phpcomplete_parse_docblock_comments option enabled (like 10 times slower).

jrean commented 9 years ago

Thank you very much for the hot patch @complex857! It works like a charm now (I'm so happy). I followed your advise and disabled the g:phpcomplete_parse_docblock_comments. :)