Skip to content

padawan-php/padawan.vim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Padawan.vim

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

Demo video

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

Requirements

Padawan.vim requires:

  1. PHP 5.5+
  2. Composer
  3. Vim with +python

Installation

You can install Padawan.vim using any of the popular plugin managers like Pathogen, Vundle, Neobundle or Plug.

  • Make sure you have installed padawan.php package:
$ composer global require mkusher/padawan
  • Configure $PATH variable. You may add $PATH to your vimrc:
let $PATH=$PATH . ':' . expand('~/.composer/vendor/bin')
  • Configure composer command:
let g:padawan#composer_command = "php /path/to/composer.phar"

Pathogen

To install Padawan.vim with Pathogen do the following steps:

$ cd ~/.vim/bundle
$ git clone https://github.com/mkusher/padawan.vim.git

Plug

Add this to your vimrc

Plug 'mkusher/padawan.vim'

Vundle

Add this to your vimrc

Plugin 'mkusher/padawan.vim'

NeoBundle

Add this to your vimrc

NeoBundle 'mkusher/padawan.vim'

How to use

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

Autocomplete engines

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*'

Plugins(Extensions)

You can extend Padawan.php by installing different plugins. See Plugins List for more info.

Installing

To install a plugin, run :PadawanAddPlugin PLUGIN_NAME, for example:

:PadawanAddPlugin mkusher/padawan-symfony

Removing

To remove a plugin, run :PadawanRemovePlugin PLUGIN_NAME, for example:

:PadawanRemovePlugin mkusher/padawan-symfony

Configuring

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

If you don't want to use composer global for installing padawan, then you should configure commands for running padawan:

let g:padawan#cli = '/path/to/padawan.php/bin/padawan'
let g:padawan#server_command = '/path/to/padawan.php/bin/padawan-server'

Vim functions

For quick access to the functions below, map them to keys of your choice.

Index generation

Use padawan#GenerateIndex() function:

:call padawan#GenerateIndex()

Index saving

Use padawan#SaveIndex() function:

:call padawan#SaveIndex()

Starting server

Use padawan#StartServer() function:

:call padawan#StartServer()

Stopping server

Use padawan#StopServer() function:

:call padawan#StopServer()

Restarting server

Use padawan#RestartServer() function:

:call padawan#RestartServer()