Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yaegassy/coc-blade
Laravel Blade Templates extension for coc.nvim. Provides "formatter", "linter", "completion" and more...
https://github.com/yaegassy/coc-blade
blade coc coc-extensions coc-nvim completion formatter laravel linter neovim php vim
Last synced: 19 days ago
JSON representation
Laravel Blade Templates extension for coc.nvim. Provides "formatter", "linter", "completion" and more...
- Host: GitHub
- URL: https://github.com/yaegassy/coc-blade
- Owner: yaegassy
- License: mit
- Created: 2021-10-04T06:24:31.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-06-21T00:17:56.000Z (5 months ago)
- Last Synced: 2024-10-12T18:22:10.093Z (29 days ago)
- Topics: blade, coc, coc-extensions, coc-nvim, completion, formatter, laravel, linter, neovim, php, vim
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/coc-blade
- Size: 900 KB
- Stars: 51
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# coc-blade
Laravel Blade Templates extension for [coc.nvim](https://github.com/neoclide/coc.nvim). Provides "formatter", "linter", "completion" and more...
## Features
- Format
- by [blade-formatter](https://github.com/shufo/blade-formatter)
- Lint
- using [Stillat/blade-parser-typescript](https://github.com/Stillat/blade-parser-typescript)
- Completion
- Blade Snippets Completion
- Blade Directive Completion
- Definition
- Jump to template file specified by `@extends`, `@include` directive, etc.
- Jump to "Blade Components" file.
- **[Warning]** Class-based Components are not supported.
- Jump to "Jetstream Components" file.
- Code Action
- Add a blade comment to disable the formatting.
- Hover## Install
**CocInstall**:
```vim
:CocInstall coc-blade
```**vim-plug**:
```vim
Plug 'yaegassy/coc-blade', {'do': 'yarn install --frozen-lockfile'}
```**Recommended coc extension**:
## (Optional) Additional installation of laravel blade related coc-extension
- [@yaegassy/coc-laravel](https://github.com/yaegassy/coc-laravel)
- Various completions, definitions, references, hovers, diagnostics, codeActions, artisan and sail commands integration and more features for Laravel projects.
- [@yaegassy/coc-intelephense](https://github.com/yaegassy/coc-intelephense)
- intelephense (PHP language server) extension for coc.nvim. intelephense's various LSP features and this extension's additional features are available.
- [coc-html](https://github.com/neoclide/coc-html)
- html-related support will be added in blade## Note
### Filetype related
The "filetype" must be `blade` for this extension to work.
Install "blade" related plugin (e.g. [jwalton512/vim-blade](https://github.com/jwalton512/vim-blade) or [sheerun/vim-polyglot](https://github.com/sheerun/vim-polyglot) or [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) with [tree-sitter-blade](https://github.com/EmranMR/tree-sitter-blade)).
For more information on setup `tree-sitter-blade` in `nvim-treesitter`, please click here.
-
## Usage Topics
### formatter (blade-formatter)
**Run**:
- `:call CocAction('format')`
- `:CocCommand bladeFormatter.run`> If there is a "syntax error" in the blade template, the formatting will fail.
**Configuration file: .bladeformatterrc.json or .bladeformatterrc**:
To configure settings per project, put `.bladeformatterrc.json` or `.bladeformatterrc` to your project root will blade-formatter treat it as setting files.
Configuration file will like below:
```json
{
"indentSize": 4,
"wrapAttributes": "auto",
"wrapLineLength": 120,
"endWithNewLine": true,
"useTabs": false,
"sortTailwindcssClasses": true
}
```**Ignoring Files: .bladeignore**:
To ignore specific file, put `.bladeignore` to your repository root will `blade-formatter` treat it as ignored files.
```gitignore
resources/views/users/index.blade.php
resources/views/products/*
resources/views/books/**/*
```**Disabling format in file**:
- See:
> In coc-blade, there is a code action feature to add a blade comment to disable the formatting.
### linter (using Stillat/blade-parser-typescript)
This feature is enabled by default. If you do not need the linter feature, set `blade.bladeParserLint.enable` to `false`
- [DEMO](https://github.com/yaegassy/coc-blade/pull/13)
### snippets completion (laravel-blade-snippets-vscode)
You can auto-complete by typing `b:`, `lv:`, `Blade::`, `livewire::`.
It uses snippet files from [onecentlin/laravel-blade-snippets-vscode](https://github.com/onecentlin/laravel-blade-snippets-vscode) to provide completion.
### directive completion
You can auto-complete by typing `@`.
- [DEMO](https://github.com/yaegassy/coc-blade/pull/10)
## Configuration options
- `blade.enable`: Enable coc-blade extension, default: `true`
- `blade.completion.enable`: Enable completion feature, default: `true`
- `blade.completion.enableDirective`: Enable directive completion, default: `true`
- `blade.completion.enableSnippets`: Enable snippets completion, default: `true`
- `blade.completion.excludeSnippets`: Exclude specific prefix in snippet completion, e.g. `["b:extends", "lv:url", "Blade::component"]`, default: `[]`
- `blade.bladeFormatter.enable`: Enable/Disable the formatting feature by `blade-formatter`, default: `true`
- `blade.bladeFormatter.optIndentSize`: Indent size, valid type `integer` or `null`, default: `null`,
- `blade.bladeFormatter.optWrapLineLength`: The length of line wrap size, valid type `integer` or `null`, default: `null`
- `blade.bladeFormatter.optWrapAttributes`: The way to wrap attributes, valid options `["auto", "force", "force-aligned", "force-expand-multiline", "aligned-multiple", "preserve", "preserve-aligned"]`, valid type `string` or `null`, default: `null`
- `blade.bladeFormatter.optEndWithNewLine`: End output with newline, default: `true`
- `blade.bladeFormatter.optEndOfLine`: End of line character(s), valid options `["LF", "CRLF"]`, valid type `string` or `null`, default: `null`
- `blade.bladeFormatter.optUseTabs`: Use tab as indentation character, default: `false`
- `blade.bladeFormatter.optSortTailwindcssClasses`: Sort Tailwindcss classes automatically. This option respects `tailwind.config.js` and sort classes according to settings, valid type `boolean` or `null`, default: `null`
- `blade.bladeFormatter.optSortHtmlAttributes`: Sort HTML Attributes in the specified order, valid option `["none", "alphabetical", "code-guide", "idiomatic", "vuejs", "custom"]`, default: `"none"`
- `blade.bladeFormatter.optCustomHtmlAttributesOrder`: Comma separated custom HTML attributes order. To enable this you must specify sort html attributes option as `custom`. You can use regex for attribute names, valid type `string`, `string[]` or `null` default: `null`
- `blade.bladeFormatter.optNoMultipleEmptyLines`: Collapses multiple blank lines into a single blank line, default: `false`
- `blade.bladeFormatter.optNoPhpSyntaxCheck`: Disable PHP syntax check. Enabling this will suppress PHP syntax error reporting, default: `false`
- `blade.bladeFormatter.optNoSingleQuote`: Use double quotes instead of single quotes for php expression, default: `false`
- `blade.bladeFormatter.optWrapAttributesMinAttrs`: Minimum number of html tag attributes for force wrap attribute options. Wrap the first attribute only if 'force-expand-multiline' is specified in wrap attributes, valid type `integer` or `null`, default: `null`
- `blade.bladeFormatter.optIndentInnerHtml`: Indent `` and `` tag sections in html, default: `false`
- `blade.bladeFormatter.optNoTrailingCommaPhp`: If set to true, no trailing commas are printed for php expression, default: `false`
- `blade.bladeFormatter.optExtraLiners`: Comma separated list of tags that should have an extra newline before them, default: `[]`
- `blade.bladeParserLint.enable`: Enable/Disable the linting feature using `stillat-blade-parser`, default: `true`
- `blade.bladeParserLint.debug`: Output the results of the parsing of stillat-blade-parser to the channel log, default: `false`
- `blade.bladeParserLint.optCustomIfs`: A list of custom if directives, default: `[]`
- `blade.bladeParserLint.optDirectives`: A list of directives that can be parsed, default: `[]`
- `blade.bladeParserLint.optIgnoreDirectives`: A list of directive names that should be ignored, default: `[]`## Commands
- `blade.showOutput`: Show blade output channel
- `blade.bladeFormatter.run`: Run blade-formatter
- `blade.showReferences`: Show BladeDirective (`@...`) or BladeEcho (`{{ ... }}`, `{!! ... !!}`) location information for the current file## Code Actions
**Example key mapping (Code Action related)**:
```vim
nmap ga (coc-codeaction-line)
nmap gA (coc-codeaction)
```**Actions**:
- `Add "blade-formatter-disable-next-line" for this line`
- `Add "blade-formatter-disable" for this line`
- `Add "blade-formatter-enable" for this line`
- `Add "blade-formatter-disable" for whole file`## Thanks
- [shufo/blade-formatter](https://github.com/shufo/blade-formatter)
- [shufo/vscode-blade-formatter](https://github.com/shufo/vscode-blade-formatter)
- [Stillat/blade-parser-typescript](https://github.com/Stillat/blade-parser-typescript)
- [onecentlin/laravel-blade-snippets-vscode](https://github.com/onecentlin/laravel-blade-snippets-vscode)## License
MIT
---
> This extension is built with [create-coc-extension](https://github.com/fannheyward/create-coc-extension)