Skip to content

Commit

Permalink
add: support for nickel format as Nickel fixer
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
yining committed Nov 28, 2023
1 parent 1ccd99e commit 8c5d002
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 1 deletion.
7 changes: 6 additions & 1 deletion autoload/ale/fix/registry.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
16 changes: 16 additions & 0 deletions autoload/ale/fixers/nickel_format.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
" Author: Yining <[email protected]>
" 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 changes: 25 additions & 0 deletions doc/ale-nickel.txt
Original file line number Diff line number Diff line change
@@ -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:
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 @@ -381,6 +381,8 @@ Notes:
* `mmc`!!
* NASM
* `nasm`!!
* Nickel
* `nickel_format`
* Nim
* `nim check`!!
* `nimlsp`
Expand Down
2 changes: 2 additions & 0 deletions doc/ale.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3187,6 +3187,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|
Expand Down
2 changes: 2 additions & 0 deletions supported-tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,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)
Expand Down
27 changes: 27 additions & 0 deletions test/fixers/test_nickel_format_fixer_callback.vader
Original file line number Diff line number Diff line change
@@ -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(''))

0 comments on commit 8c5d002

Please sign in to comment.