diff options
author | Yining <zhang.yining@gmail.com> | 2023-12-08 01:55:14 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-07 14:55:14 +0000 |
commit | 32ee7039d0ee7afcc134756cfac78678cffc7017 (patch) | |
tree | 76dafc61a9a52788d056d4ea0e14e295bef7fb87 | |
parent | fc45a935bf25f7daa1965e3afcc8d9c6e525b078 (diff) | |
download | ale-32ee7039d0ee7afcc134756cfac78678cffc7017.zip |
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.
-rw-r--r-- | autoload/ale/fix/registry.vim | 7 | ||||
-rw-r--r-- | autoload/ale/fixers/nickel_format.vim | 16 | ||||
-rw-r--r-- | doc/ale-nickel.txt | 25 | ||||
-rw-r--r-- | doc/ale-supported-languages-and-tools.txt | 2 | ||||
-rw-r--r-- | doc/ale.txt | 2 | ||||
-rw-r--r-- | supported-tools.md | 2 | ||||
-rw-r--r-- | test/fixers/test_nickel_format_fixer_callback.vader | 27 |
7 files changed, 80 insertions, 1 deletions
diff --git a/autoload/ale/fix/registry.vim b/autoload/ale/fix/registry.vim index 97346fb9..050cc6c7 100644 --- a/autoload/ale/fix/registry.vim +++ b/autoload/ale/fix/registry.vim @@ -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. diff --git a/autoload/ale/fixers/nickel_format.vim b/autoload/ale/fixers/nickel_format.vim new file mode 100644 index 00000000..07eed8f9 --- /dev/null +++ b/autoload/ale/fixers/nickel_format.vim @@ -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 + diff --git a/doc/ale-nickel.txt b/doc/ale-nickel.txt new file mode 100644 index 00000000..a8dd6af8 --- /dev/null +++ b/doc/ale-nickel.txt @@ -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: diff --git a/doc/ale-supported-languages-and-tools.txt b/doc/ale-supported-languages-and-tools.txt index bfe34afc..acfdb8d4 100644 --- a/doc/ale-supported-languages-and-tools.txt +++ b/doc/ale-supported-languages-and-tools.txt @@ -382,6 +382,8 @@ Notes: * `mmc`!! * NASM * `nasm`!! +* Nickel + * `nickel_format` * Nim * `nim check`!! * `nimlsp` diff --git a/doc/ale.txt b/doc/ale.txt index d11114e5..b577324e 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -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| diff --git a/supported-tools.md b/supported-tools.md index cb9bec16..275d9ed6 100644 --- a/supported-tools.md +++ b/supported-tools.md @@ -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) diff --git a/test/fixers/test_nickel_format_fixer_callback.vader b/test/fixers/test_nickel_format_fixer_callback.vader new file mode 100644 index 00000000..af3e0c26 --- /dev/null +++ b/test/fixers/test_nickel_format_fixer_callback.vader @@ -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('')) |