Skip to content

Commit

Permalink
feat(biome): add support for json and jsonc (dense-analysis#4805)
Browse files Browse the repository at this point in the history
- adds biome linter for json and jsonc
- enables biome by default for json and jsonc
- suggests biome as a fixer for json and jsonc
  • Loading branch information
redbmk authored Jul 9, 2024
1 parent 3220b94 commit 5c635d5
Show file tree
Hide file tree
Showing 10 changed files with 43 additions and 5 deletions.
10 changes: 10 additions & 0 deletions ale_linters/json/biome.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
" Description: biome for json files

call ale#linter#Define('json', {
\ 'name': 'biome',
\ 'lsp': 'stdio',
\ 'language': function('ale#handlers#biome#GetLanguage'),
\ 'executable': function('ale#handlers#biome#GetExecutable'),
\ 'command': '%e lsp-proxy',
\ 'project_root': function('ale#handlers#biome#GetProjectRoot'),
\})
10 changes: 10 additions & 0 deletions ale_linters/jsonc/biome.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
" Description: biome for jsonc files

call ale#linter#Define('jsonc', {
\ 'name': 'biome',
\ 'lsp': 'stdio',
\ 'language': function('ale#handlers#biome#GetLanguage'),
\ 'executable': function('ale#handlers#biome#GetExecutable'),
\ 'command': '%e lsp-proxy',
\ 'project_root': function('ale#handlers#biome#GetProjectRoot'),
\})
2 changes: 1 addition & 1 deletion autoload/ale/fix/registry.vim
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ let s:default_registry = {
\ },
\ 'biome': {
\ 'function': 'ale#fixers#biome#Fix',
\ 'suggested_filetypes': ['javascript', 'typescript'],
\ 'suggested_filetypes': ['javascript', 'typescript', 'json', 'jsonc'],
\ 'description': 'Fix JavaScript and TypeScript using biome.',
\ },
\ 'black': {
Expand Down
4 changes: 2 additions & 2 deletions autoload/ale/linter.vim
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ let s:default_ale_linters = {
\ 'hack': ['hack'],
\ 'help': [],
\ 'inko': ['inko'],
\ 'json': ['jsonlint', 'spectral', 'vscodejson'],
\ 'json': ['biome', 'jsonlint', 'spectral', 'vscodejson'],
\ 'json5': [],
\ 'jsonc': [],
\ 'jsonc': ['biome'],
\ 'perl': ['perlcritic'],
\ 'perl6': [],
\ 'python': ['flake8', 'mypy', 'pylint', 'pyright', 'ruff'],
Expand Down
6 changes: 6 additions & 0 deletions doc/ale-json.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
ALE JSON Integration *ale-json-options*


===============================================================================
biome *ale-json-biome*

Check the docs over at |ale-typescript-biome|.


===============================================================================
clang-format *ale-json-clangformat*

Expand Down
6 changes: 6 additions & 0 deletions doc/ale-jsonc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
ALE JSONC Integration *ale-jsonc-options*


===============================================================================
biome *ale-jsonc-biome*

Check the docs over at |ale-typescript-biome|.


===============================================================================
eslint *ale-jsonc-eslint*

Expand Down
2 changes: 2 additions & 0 deletions doc/ale-supported-languages-and-tools.txt
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,7 @@ Notes:
* `xo`
* JSON
* `VSCode JSON language server`
* `biome`
* `clang-format`
* `cspell`
* `dprint`
Expand All @@ -326,6 +327,7 @@ Notes:
* JSON5
* `eslint`
* JSONC
* `biome`
* `eslint`
* Jsonnet
* `jsonnet-lint`
Expand Down
2 changes: 2 additions & 0 deletions doc/ale.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3137,6 +3137,7 @@ documented in additional help files.
standard..............................|ale-javascript-standard|
xo....................................|ale-javascript-xo|
json....................................|ale-json-options|
biome.................................|ale-json-biome|
clang-format..........................|ale-json-clangformat|
cspell................................|ale-json-cspell|
dprint................................|ale-json-dprint|
Expand All @@ -3148,6 +3149,7 @@ documented in additional help files.
spectral..............................|ale-json-spectral|
vscodejson............................|ale-json-vscode|
jsonc...................................|ale-jsonc-options|
biome.................................|ale-jsonc-biome|
eslint................................|ale-jsonc-eslint|
jsonnet.................................|ale-jsonnet-options|
jsonnetfmt............................|ale-jsonnet-jsonnetfmt|
Expand Down
2 changes: 2 additions & 0 deletions supported-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,7 @@ formatting.
* [xo](https://github.com/sindresorhus/xo)
* JSON
* [VSCode JSON language server](https://github.com/hrsh7th/vscode-langservers-extracted)
* [biome](https://biomejs.dev/)
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) :warning:
* [dprint](https://dprint.dev)
Expand All @@ -335,6 +336,7 @@ formatting.
* JSON5
* [eslint](http://eslint.org/) :warning:
* JSONC
* [biome](https://biomejs.dev/)
* [eslint](http://eslint.org/) :warning:
* Jsonnet
* [jsonnet-lint](https://jsonnet.org/learning/tools.html)
Expand Down
4 changes: 2 additions & 2 deletions test/test_filetype_linter_defaults.vader
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Execute(The defaults for the inko filetype should be correct):
AssertEqual [], GetLinterNames('inko')

Execute(The defaults for the json filetype should be correct):
AssertEqual ['jsonlint', 'spectral', 'vscodejson'], GetLinterNames('json')
AssertEqual ['biome', 'jsonlint', 'spectral', 'vscodejson'], GetLinterNames('json')

let g:ale_linters_explicit = 1

Expand All @@ -70,7 +70,7 @@ Execute(The defaults for the json5 filetype should be correct):
AssertEqual [], GetLinterNames('json5')

Execute(The defaults for the jsonc filetype should be correct):
AssertEqual [], GetLinterNames('jsonc')
AssertEqual ['biome'], GetLinterNames('jsonc')

Execute(The defaults for the perl filetype should be correct):
AssertEqual ['perlcritic'], GetLinterNames('perl')
Expand Down

0 comments on commit 5c635d5

Please sign in to comment.