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
!)
- Livewire tag completion | DEMO
- Livewire action completion | DEMO
- Livewire event completion | DEMO
- Livewire property completion | DEMO
- Livewire directive completion | DEMO
- 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
- 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
- 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.
- 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.
- 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
and app/Livewire
.
- View reference | DEMO
- [PHP -> Blade] Reference to a PHP file that uses the same template in the view function.
- Hovers
- ComponentTag Hover | DEMO
- Diagnostics
- Missing component validation | DEMO
- Method directive parameter validation | DEMO
- [TODO]
- Diagnostic features will be added as we come up with useful ones, based on projects already analyzed.
- CodeActions
- Create blade component | DEMO
- Fix method directive parameter | DEMO
- [TODO]
- CodeAction features will be added as we come up with useful ones, based on projects already analyzed.
- 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
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 the laravel.stubs.download
command. If not set, the stubsVersion
defined in package.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.json
laravel.completion.configEnable
: Enable config completion, default: true
laravel.completion.envEnable
: Enable env completion, default: true
laravel.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 to wire:xxxx
, default: ["click", "click.prefetch"]
laravel.livewire.wireModelAttributes
: List of model related action to be added to wire:xxxx
, default: ["model", "model.debounce.100ms", "model.lazy", "model.defer"]
laravel.livewire.wireEventAttributes
: List of browser events to be added to wire:xxxx
. No need for wire:model
or wire:click
. default: Omitted due to the large number of settings, See configuration in package.json
laravel.definition.enable
: Enable definition, default true
laravel.reference.enable
: Enable reference, default true
laravel.hover.enable
: Enable hover, default true
laravel.diagnostic.enable
: Enable diagnostic, default: true
laravel.codeAction.enable
: Enable code action, default: true
laravel.artisan.withoutArgumentsCommandList
: List of commands to quickly execute laravel.artisan.run
or laravel.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 restart
laravel.project.stats
: (Develop) Show project stats
laravel.project.finder
: (Develop) Run project finder
laravel.stubs.download
: Download stubs
laravel.stubs.version
: Show the version of stubs
laravel.artisan.run
: Run artisan command
laravel.sailArtisan.run
: Run sail artisan command
laravel.view.findAllReferences
: Find view file references
laravel.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
Thanks
License
MIT
This extension is built with create-coc-extension