Padawan.php smart php intelligent code completion for php projects
Looking for maintainers! Please join gitter channel for discussion
Padawan.php is an http server that parses your project and gives you completions. Padawan.php looks recursively for all php files of a composer project, parses doc-comments and function declarations of each class and creates an index from them. After that it autoupdates the index and gives you completion as you type.
Padawan.php can be extended by various plugins, which will bring some extra completion, framework integrations or so. See this paragraph to learn more
It tries to be a Jedi, but currently it's only a padawan :)
Plugins for editors
If you wish to write your own plugin, vim plugin example may serve as a source of inspiration. Look at wiki page for some documentation. You are welcome to open an issue if you have any questions.
How to use
- Install padawan.php through
$ composer global require mkusher/padawan
- Install plugin for your editor.
- Run index generation command in your php composer project folder:
- Start padawan's server
- Enjoy smart completion
Check out how to do this in the plugin documentation for specific editor above.
Plugins(extensions) for padawan.php
Padawan.php can be extended by plugins, there are:
- Symfony2 plugin
- PHP-DI plugin
Look at full plugins list
Why not the original plugin
This project was inspired by phpcomplete-extended by M2mdas and started as a fork with a completely rewritten index generation part. But as of now it is a completely new project with different design principles
M2mdas's plugin is pretty good, but has some core bugs due to self-written parser:
- It does not support files with 2 or more classes in it
- It fails on parsing RabbitMQ classes and many others
- So it has some design faults and needs a global plugin redesign
- It is ill-suited for adding assignment parsing
- It is vim-only and is written in VimScript
So, I decided to create my own project.
igbinary PHP extension to get optimized index file size and load speed.
Now in progress:
go to definition,
go to assingment,
- Add plugins for editors(emacs, atom and etc.)
- Extend type guessing(process classes' contructors, class doc-comment, foreach loops)
- Implement index updating