summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYining <zhang.yining@gmail.com>2023-12-08 01:55:14 +1100
committerGitHub <noreply@github.com>2023-12-07 14:55:14 +0000
commit32ee7039d0ee7afcc134756cfac78678cffc7017 (patch)
tree76dafc61a9a52788d056d4ea0e14e295bef7fb87
parentfc45a935bf25f7daa1965e3afcc8d9c6e525b078 (diff)
downloadale-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.vim7
-rw-r--r--autoload/ale/fixers/nickel_format.vim16
-rw-r--r--doc/ale-nickel.txt25
-rw-r--r--doc/ale-supported-languages-and-tools.txt2
-rw-r--r--doc/ale.txt2
-rw-r--r--supported-tools.md2
-rw-r--r--test/fixers/test_nickel_format_fixer_callback.vader27
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(''))