add: support for `nickel format` as `Nickel` fixer (#4665)

Nickel(https://nickel-lang.org/) is a configuration language, like
Jsonnet, Cue, Dhall.

`nickel`(https://github.com/tweag/nickel) is the main command to run,
export and also format Nickel code.

this commit adds `nickel format` as a Nickel fixer, together with some
tests and documentation.
This commit is contained in:
Yining 2023-12-08 01:55:14 +11:00 committed by GitHub
parent fc45a935bf
commit 32ee7039d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 80 additions and 1 deletions

View File

@ -635,7 +635,12 @@ let s:default_registry = {
\ 'function': 'ale#fixers#erbformatter#Fix',
\ 'suggested_filetypes': ['eruby'],
\ 'description': 'Apply erb-formatter -w to eruby/erb files.',
\ }
\ },
\ 'nickel_format': {
\ 'function': 'ale#fixers#nickel_format#Fix',
\ 'suggested_filetypes': ['nickel'],
\ 'description': 'Fix nickel files with nickel format',
\ },
\}
" Reset the function registry to the default entries.

View File

@ -0,0 +1,16 @@
" Author: Yining <zhang.yining@gmail.com>
" Description: nickel format as ALE fixer for Nickel files
call ale#Set('nickel_nickel_format_executable', 'nickel')
call ale#Set('nickel_nickel_format_options', '')
function! ale#fixers#nickel_format#Fix(buffer) abort
let l:executable = ale#Var(a:buffer, 'nickel_nickel_format_executable')
let l:options = ale#Var(a:buffer, 'nickel_nickel_format_options')
return {
\ 'command': ale#Escape(l:executable) . ' format'
\ . (empty(l:options) ? '' : ' ' . l:options)
\}
endfunction

25
doc/ale-nickel.txt Normal file
View File

@ -0,0 +1,25 @@
===============================================================================
ALE Nickel Integration *ale-nickel-options*
===============================================================================
nickel_format *ale-nickel-nickel-format*
g:ale_nickel_nickel_format_executable *g:ale_nickel_nickel_format_executable*
*b:ale_nickel_nickel_format_executable*
Type: |String|
Default: `'nickel'`
This option can be changed to change the path for `nickel`.
g:ale_nickel_nickel_format_options *g:ale_nickel_nickel_format_options*
*b:ale_nickel_nickel_format_options*
Type: |String|
Default: `''`
This option can be changed to pass extra options to `'nickel format'`
===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@ -382,6 +382,8 @@ Notes:
* `mmc`!!
* NASM
* `nasm`!!
* Nickel
* `nickel_format`
* Nim
* `nim check`!!
* `nimlsp`

View File

@ -3188,6 +3188,8 @@ documented in additional help files.
mmc...................................|ale-mercury-mmc|
nasm....................................|ale-nasm-options|
nasm..................................|ale-nasm-nasm|
nickel..................................|ale-nickel-options|
nickel_format.........................|ale-nickel-nickel-format|
nim.....................................|ale-nim-options|
nimcheck..............................|ale-nim-nimcheck|
nimlsp................................|ale-nim-nimlsp|

View File

@ -391,6 +391,8 @@ formatting.
* [mmc](http://mercurylang.org) :floppy_disk:
* NASM
* [nasm](https://www.nasm.us/) :floppy_disk:
* Nickel
* [nickel_format](https://github.com/tweag/nickel#formatting)
* Nim
* [nim check](https://nim-lang.org/docs/nimc.html) :floppy_disk:
* [nimlsp](https://github.com/PMunch/nimlsp)

View File

@ -0,0 +1,27 @@
Before:
Save g:ale_nickel_nickel_format_executable
Save g:ale_nickel_nickel_format_options
Save &l:expandtab
Save &l:shiftwidth
Save &l:tabstop
After:
Restore
Execute(The nickel_format callback should return 'nickel format' as default command):
setlocal noexpandtab
Assert
\ ale#fixers#nickel_format#Fix(bufnr('')).command =~# '^' . ale#Escape('nickel') . ' format',
\ "Default command name is expected to be 'nickel format'"
Execute(The nickel executable and options should be configurable):
let g:ale_nickel_nickel_format_executable = 'foobar'
let g:ale_nickel_nickel_format_options = '--some-option'
AssertEqual
\ {
\ 'command': ale#Escape('foobar')
\ . ' format'
\ . ' --some-option',
\ },
\ ale#fixers#nickel_format#Fix(bufnr(''))