vol0da / phpcomplete.vim

Improved PHP omnicompletion

Home Page:http://www.vim.org/scripts/script.php?script_id=3171

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

About

Improved PHP omni-completion. Based on the default phpcomplete.vim.

Features

  • Correct restriction of static or standard methods based on context ( show only static methods with :: and only standard with ->)
  • Real support for self:: and $this-> with the aforementioned context restriction
  • Constant variable completion (not just define(VARIABLE, 1) but const VARIABLE = 1)
  • Better class detection:
    • Recognize /* @var $yourvar YourClass */ type mark comments
    • Recognize $instance = new Class; class instantiations
    • Recognize $instance = Class::getInstance(); singleton instances
    • Recognize $date = DateTime::createFromFormat(...) built-in class return types
    • Recognize type hinting in function prototypes
    • Recognize types in @param lines in function docblocks
    • Recognize $object = SomeClass::staticCall(...) return types from docblocks
  • Displays docblock info in the preview for methods and properties
  • Updated built-in class support with constants, methods and properties
  • Updated list of PHP constants
  • Updated list of built-in PHP functions
  • Namespace support ( Requires patched ctags )

Install

Pathogen

  1. Install the pathogen.vim plugin, follow the instructions here

  2. Clone the repository under your ~/.vim/bundle/ directory:

     cd ~/.vim/bundle
     git clone git://github.com/shawncplus/phpcomplete.vim.git
    

Vundle

  1. Install and configure the Vundle plugin manager, follow the instructions here

  2. Add the following line to your .vimrc:

     Bundle 'shawncplus/phpcomplete.vim'
    
  3. Source your .vimrc with :so % or otherwise reload your vim

  4. Run the :BundleInstall commmand

ctags

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. At this moment there's no offical build of ctags that would do the job, so you will have to build one for yourself.
Check out the wiki page about the patched ctags for more information.

Options

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 nontheless.

let g:phpcomplete_complete_for_unknown_classes = 1/0 [default 1]
Enables completion of variables and functions in "everything under the sun" fassion 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_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 extremly 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 0]
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 (no cache expiration implemented as of now).

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 directories under misc/

About

Improved PHP omnicompletion

http://www.vim.org/scripts/script.php?script_id=3171


Languages

Language:Vim Script 96.8%Language:PHP 3.2%Language:Shell 0.0%