Skip to content

yaegassy/coc-laravel

Repository files navigation

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

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