Awesome
coc-laravel
Laravel extension for coc.nvim.
Install
CocInstall:
:CocInstall @yaegassy/coc-laravel
scoped packages
vim-plug:
Plug 'yaegassy/coc-laravel', {'do': 'yarn install --frozen-lockfile'}
Features
Note:
This coc-extension executes artisan
commands in the background for some features. Therefore, you must be able to run PHP
in your environment.
This coc-extension will provide various completion features and more features for Laravel projects.
- Completions
- Component completion | DEMO
- Livewire completion (Also compatible with Livewire
v3
!) - PHP completion in PHP-related region of Blade file
- [NOTE]: To use this feature, please execute the
laravel.stubs.download
command. - PHP Function completion | DEMO
- PHP Class completion | DEMO
- PHP Static Class completion (Static class members and constants, e.g.
DateTime::|
) | DEMO - PHP Object Member completion (e.g.
$obj->|
) | DEMO - PHP Variable completion | DEMO
- PHP Constant completion | DESCRIPTION
- PHP Keyword completion | DESCRIPTION
- [NOTE]: To use this feature, please execute the
- Directive completion | DEMO
- Config completion | DEMO
- Env completion | DEMO
- Validation completion | DEMO
- Route completion | DEMO
- View completion | DEMO
- Middleware completion | DEMO
- Guard completion | DEMO
- Translation completion | DEMO
- Method directive parameter completion | DEMO
- View reference variable completion | DEMO
- Eloquent model field completion | DEMO
- Completion feature using
_ide_helper_models.php
file generated by laravel-ide-helper
- Completion feature using
- Misc
- Definitions
- View definition | DEMO
- [PHP -> Blade] Definition jump to the Blade template specified by the view() function.
- Blade View definition | DEMO
- [Blade -> Blade] Jump to the Blade template specified by the
@extends
and@include
directives.
- [Blade -> Blade] Jump to the Blade template specified by the
- Component definition | DEMO
- [Blade -> PHP or Blade] Jump to the component file. Both class components and anonymous components are supported.
- Livewire tag definition | DEMO
- [Blade -> PHP or Blade] Jump to the livewire file. Both livewire class and blade template are supported.
- Livewire directive definition | DEMO
- [Blade -> PHP or Blade] Jump to the livewire file. Both livewire class and blade template are supported.
- View definition | DEMO
- References
laravel.view.findAllReferences
command | DEMO- [Blade -> PHP] Show references to PHP files that use the current blade
file. Referenced directories are
routes
,app/Http/Controllers
,app/View/Components
,app/Http/Livewire
andapp/Livewire
.
- [Blade -> PHP] Show references to PHP files that use the current blade
file. Referenced directories are
- View reference | DEMO
- [PHP -> Blade] Reference to a PHP file that uses the same template in the view function.
- Hovers
- ComponentTag Hover | DEMO
- Diagnostics
- CodeActions
- Artisan and Sail commands integration
laravel.artisan.run
command feature.laravel.sailArtisan.run
command feature.
[RECOMMENDED] Additional installation of "watchman"
coc-laravel
uses the workspace/didChangeWatchedFiles
notification to monitor files in the project.
In coc.nvim, it is recommended to install watchman in order to utilize this feature.
If you have difficulty installing watchman
, you can use coc-laravel
without watchman
, but you may not be able to immediately use IntelliSense with the newly added files.
In this case, please manually enter the following command.
:CocCommand laravel.project.restart
or
:CocRestart
workspaceFolders
Depending on the project like mono repo or how Vim/Neovim is started, workspaceFolders
may not be recognized correctly.
To make coc.nvim recognize workspaceFolders
correctly, you can set b:coc_root_patterns
in .vimrc/init.vim
Example:
au FileType php,blade let b:coc_root_patterns = ['.git', '.env', 'composer.json', 'artisan']
For more information, check this coc.nvim's wiki.
Configuration options
laravel.enable
: Enable coc-laravel extension, default:true
laravel.environment.phpPath
: Path to PHP, you can use a custom version of PHP. If there is no setting,php
of the execution environment will be used, default:""
laravel.project.excludeVendors
: List of target vendor directories to exclude during project analysis, e.g.["fakerphp", "phpunit"]
, default:[]
laravel.project.startupMessageEnable
: Enable project startup messages, default:true
laravel.stubs.customVersion
: Specify the version of stubs to download with thelaravel.stubs.download
command. If not set, thestubsVersion
defined inpackage.json
will be used, default:""
laravel.stubs.useStubs
: List of stubs to be used, default:["Core", "date", "standard"]
laravel.completion.enable
: Enable all completion feature, default:true
laravel.completion.directiveEnable
: Enable directive completion, default:true
laravel.completion.directiveList
: List of directive used in directive completion, default: Omitted due to the large number of settings, See configuration in package.jsonlaravel.completion.configEnable
: Enable config completion, default:true
laravel.completion.envEnable
: Enable env completion, default: truelaravel.completion.validationEnable
: Enable validation completion.laravel.completion.routeEnable
: Enable route completion, default:true
laravel.completion.viewEnable
: Enable view completion, default:true
laravel.completion.middlewareEnable
: Enable middleware completion, default:true
laravel.completion.guardEnable
: Enable guard completion, default:true
laravel.completion.translationEnable
: Enable translation completion, default:true
laravel.completion.componentEnable
: Enable component completion, default:true
laravel.completion.phpFunctionEnable
: Enable php function completion, default:true
laravel.completion.phpFunction.stubsEnable
: Enable stubs in phpFunction completion, default:true
laravel.completion.phpFunction.vendorEnable
: Enable vendor in phpFunction completion, default:true
laravel.completion.phpClassEnable
: Enable php class completion, default:true
laravel.completion.phpClass.stubsEnable
: Enable stubs in phpClass completion, default:true
laravel.completion.phpClass.vendorEnable
: Enable vendor in phpClass completion, default:true
laravel.completion.phpConstantEnable
: Enable php constant completion, default:true
laravel.completion.phpConstant.stubsEnable
: Enable stubs in phpConstant completion, default:true
laravel.completion.phpConstant.vendorEnable
: Enable vendor in phpConstant completion, default:true
laravel.completion.phpStaticClassEnable
: Enable php static class completion, default:true
laravel.completion.phpObjectMemberEnable
: Enable php object member completion, default:true
laravel.completion.phpVariableEnable
: Enable php variable completion, default:true
laravel.completion.phpKeywordEnable
: Enable php keyword completion, default:true
laravel.completion.eloquentModelFieldEnable
: Enable eloquent model field completion, default:true
laravel.completion.viewReferenceVariableEnable
: Enable view reference variable completion, default:true
laravel.completion.methodParameterEnable
: Enable method parameter completion, default:true
laravel.completion.livewireEnable
: Enable livewire completion, default:true
laravel.livewire.wireClickAttributes
: List of click related action to be added towire:xxxx
, default:["click", "click.prefetch"]
laravel.livewire.wireModelAttributes
: List of model related action to be added towire:xxxx
, default:["model", "model.debounce.100ms", "model.lazy", "model.defer"]
laravel.livewire.wireEventAttributes
: List of browser events to be added towire:xxxx
. No need forwire:model
orwire:click
. default: Omitted due to the large number of settings, See configuration in package.jsonlaravel.definition.enable
: Enable definition, defaulttrue
laravel.reference.enable
: Enable reference, defaulttrue
laravel.hover.enable
: Enable hover, defaulttrue
laravel.diagnostic.enable
: Enable diagnostic, default:true
laravel.codeAction.enable
: Enable code action, default:true
laravel.artisan.withoutArgumentsCommandList
: List of commands to quickly executelaravel.artisan.run
orlaravel.sailArtisan.run
without prompting for arguments or options, e.g.["route:list", "clear-compiled"]
, default:[]
laravel.artisan.enableSplitRight
: Use vertical belowright for artisan terminal window, default:false
Commands
laravel.project.restart
: Run project restartlaravel.project.stats
: (Develop) Show project statslaravel.project.finder
: (Develop) Run project finderlaravel.stubs.download
: Download stubslaravel.stubs.version
: Show the version of stubslaravel.artisan.run
: Run artisan commandlaravel.sailArtisan.run
: Run sail artisan commandlaravel.view.findAllReferences
: Find view file referenceslaravel.showOutput
: Show laravel output channel
CodeActions
Example key mapping (Code Action related):
nmap <silent> ga <Plug>(coc-codeaction-line)
nmap <silent> <leader>ac <Plug>(coc-codeaction-cursor)
Actions:
Create blade component
Fix method directive parameter
Recommended coc-extensions for php
Inspired Projects
- amir9480/vscode-laravel-extra-intellisense | (VSCode extension)
- Laravel Idea | (PhpStorm plugin)
- haringsrob/laravel-dev-tools
- and More...
Thanks
- glayzzle/php-parser
- Stillat/blade-parser-typescript
- JetBrains/phpstorm-stubs
- microsoft/vscode-html-languageservice
License
MIT
This extension is built with create-coc-extension