Padawan.vim is a vim plugin for padawan.php server , a smart PHP code completion server for Composer projects.
This plugin includes:
- Omnifunc
- Commands for index generation and index saving
- Commands for starting, stopping and restarting the server
Currently Padawan.vim offers basic completion for methods and classes based on doc comments and method signatures.
Click the image below to watch a short video on what Padawan.vim can already do.
Padawan.vim requires:
- PHP 5.4+
- Composer
- Vim with +python
Install Padawan.vim using any of the popular plugin managers like Pathogen, Vundle, Neobundle or Plug.
To install Padawan.vim with Pathogen do the following steps:
$ cd TO YOUR PLUGINS FOLDER
$ git clone https://github.com/mkusher/padawan.vim.git
$ cd padawan.vim
$ git submodule update --init --recursive
$ sh install.sh
Add this to your vimrc
Plug 'mkusher/padawan.vim', { 'do': './install.sh' }
- In your php composer project folder, run the following vim command to generate an index:
:PadawanGenerateIndex
- Start Padawan.php server with:
:PadawanStartServer
- Enjoy smart completion
Index generation can take a while, but needs to be performed only once per project.
You should set semantic triggers like
let g:ycm_semantic_triggers = {}
let g:ycm_semantic_triggers.php =
\ ['->', '::', '(', 'use ', 'namespace ', '\']
You should set omni input patterns like
let g:neocomplete#force_omni_input_patterns = {}
let g:neocomplete#force_omni_input_patterns.php =
\ '\h\w*\|[^- \t]->\w*'
You can extend Padawan.php by installing different plugins. See Plugins List for more info.
To install a plugin, run :PadawanAddPlugin PLUGIN_NAME
, for example:
:PadawanAddPlugin mkusher/padawan-symfony
To remove a plugin, run :PadawanRemovePlugin PLUGIN_NAME
, for example:
:PadawanRemovePlugin mkusher/padawan-symfony
You may want to change Composer to the one already installed on your system. You can do so by with the following line:
let g:padawan#composer_command = 'php /usr/bin/composer.phar'
Another configurable option is http request timeout. The following example sets it to 100 ms:
let g:padawan#timeout = 0.1
For quick access to the functions below, map them to keys of your choice.
Use padawan#GenerateIndex()
function:
:call padawan#GenerateIndex()
Use padawan#SaveIndex()
function:
:call padawan#SaveIndex()
Use padawan#StartServer()
function:
:call padawan#StartServer()
Use padawan#StopServer()
function:
:call padawan#StopServer()
Use padawan#RestartServer()
function:
:call padawan#RestartServer()