Improved PHP omni-completion. Based on the default phpcomplete.vim.
::
and only standard with ->
)self::
and $this->
with the aforementioned context restrictiondefine(VARIABLE, 1)
but const VARIABLE = 1
)/* @var $yourvar YourClass */
type mark comments$instance = new Class;
class instantiations$instance = Class::getInstance();
singleton instances$date = DateTime::createFromFormat(...)
built-in class return types@param
lines in function docblocks$object = SomeClass::staticCall(...)
return types from docblocks$foo[42]->
or for variables created in foreach
Clone the repository under your ~/.vim/bundle/
directory:
cd ~/.vim/bundle
git clone git://github.com/shawncplus/phpcomplete.vim.git
Add the following line to your .vimrc
:
Plugin 'shawncplus/phpcomplete.vim'
.vimrc
with :so %
or otherwise reload your vim:PluginInstall
commandIf you're new to auto-completion in Vim, we recommend reading our "Beginner's Guide".
In order to support some php features introduced in PHP 5.3 you will have to use a ctags binary that can generate the appropriate tags files. Most unix like systems have a ctags version built in that's really outdated. Please read the "getting better tags" wiki page for more information.
let g:phpcomplete_relax_static_constraint = 1/0 [default 0]
Enables completion for non-static methods when completing for static context (::
).
This generates E_STRICT
level warning, but php calls these methods nonetheless.
let g:phpcomplete_complete_for_unknown_classes = 1/0 [default 0]
Enables completion of variables and functions in "everything under the sun" fashion
when completing for an instance or static class context but the code can't tell the class
or locate the file that it lives in.
The completion list generated this way is only filtered by the completion base
and generally not much more accurate then simple keyword completion.
let g:phpcomplete_search_tags_for_variables = 1/0 [default 0]
Enables use of tags when the plugin tries to find variables.
When enabled the plugin will search for the variables in the tag files with kind 'v',
lines like $some_var = new Foo;
but these usually yield highly inaccurate results and
can be fairly slow.
let g:phpcomplete_min_num_of_chars_for_namespace_completion = n [default 1] Requires patched ctags
This option controls the number of characters the user needs to type before
the tags will be searched for namespaces and classes in typed out namespaces in
"use ..." context. Setting this to 0 is not recommended because that means the code
have to scan every tag, and vim's taglist() function runs extremely slow with a
"match everything" pattern.
let g:phpcomplete_parse_docblock_comments = 1/0 [default 0]
When enabled the preview window's content will include information
extracted from docblock comments of the completions.
Enabling this option will add return types to the completion menu for functions too.
let g:phpcomplete_cache_taglists = 1/0 [default 1]
When enabled the taglist() lookups will be cached and subsequent searches
for the same pattern will not check the tagfiles any more, thus making the
lookups faster. Cache expiration is based on the mtimes of the tag files.
let g:phpcomplete_enhance_jump_to_definition = 1/0 [default 1]
When enabled the <C-]>
will be mapped to phpcomplete#JumpToDefinition()
which will try to make a more educated guess of the current
symbol's location than simple tag search. If the symbol's location
cannot be found the original <C-]>
functionality will be invoked
let g:phpcomplete_mappings = {..}
Defines the mappings for the enhanced jump-to-definition.
Recognized keys:
You change any of them like this in your vimrc
:
let g:phpcomplete_mappings = {
\ 'jump_to_def': ',g',
\ 'jump_to_def_tabnew': ',t',
\ }
The keys you don't specify will be mapped to the defaults:
let g:phpcomplete_mappings = {
\ 'jump_to_def': '<C-]>',
\ 'jump_to_def_split': '<C-W><C-]>',
\ 'jump_to_def_vsplit': '<C-W><C-\>',
\ 'jump_to_def_tabnew': '<C-W><C-[>',
\}
let g:phpcomplete_add_function_extensions = [...]
let g:phpcomplete_add_class_extensions = [...]
let g:phpcomplete_add_interface_extensions = [...]
let g:phpcomplete_add_constant_extensions = [...]
let g:phpcomplete_remove_function_extensions = [...]
let g:phpcomplete_remove_class_extensions = [...]
let g:phpcomplete_remove_interface_extensions = [...]
let g:phpcomplete_remove_constant_extensions = [...]
Built-in functions, classes, interfaces and constatns are grouped together by the extension.
Only the enabled extensions will be loaded for the plugin, the defaultly enabled ones can be
found in.
g:phpcomplete_active_function_extensions
g:phpcomplete_active_class_extensions
g:phpcomplete_active_interface_extensions
g:phpcomplete_active_constant_extensions
If you want to enable an extension that is disabled you can add it to the enabled lists
in your vimrc. Let's say you want to have the mongo extension's classes and functions
to be completed by the plugin, you can add it like this (in your .vimrc
):
let g:phpcomplete_add_class_extensions = ['mongo']
let g:phpcomplete_add_function_extensions = ['mongo']
If you want to disable an otherwise enabled one, use the ...remove... version of these options:
let g:phpcomplete_remove_function_extensions = ['xslt_php_4']
let g:phpcomplete_remove_constant_extensions = ['xslt_php_4']
For the available extension files, check the misc/available_extensions
. file