summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Henrie <n8henrie@users.noreply.github.com>2023-02-07 01:24:52 -0700
committerGitHub <noreply@github.com>2023-02-07 17:24:52 +0900
commite1ae009bac98d4c2a80ed8f70f68b75dab3bc478 (patch)
tree01f25b7745064f3042e6db9b1412ac4e1d0423d6
parent45a3e3f574172028338de70ce8f8f606dec0a1b0 (diff)
downloadale-e1ae009bac98d4c2a80ed8f70f68b75dab3bc478.zip
Add alejandra for nix (#4435)
- Fixes https://github.com/dense-analysis/ale/issues/4434
-rw-r--r--autoload/ale/fix/registry.vim5
-rw-r--r--autoload/ale/fixers/alejandra.vim13
-rw-r--r--doc/ale-nix.txt18
-rw-r--r--doc/ale-supported-languages-and-tools.txt1
-rw-r--r--doc/ale.txt1
-rw-r--r--supported-tools.md1
-rw-r--r--test/fixers/test_alejandra_fixer_callback.vader24
7 files changed, 63 insertions, 0 deletions
diff --git a/autoload/ale/fix/registry.vim b/autoload/ale/fix/registry.vim
index 7040c4cc..b3275a32 100644
--- a/autoload/ale/fix/registry.vim
+++ b/autoload/ale/fix/registry.vim
@@ -7,6 +7,11 @@ let s:default_registry = {
\ 'suggested_filetypes': ['python'],
\ 'description': 'Add blank lines before control statements.',
\ },
+\ 'alejandra': {
+\ 'function': 'ale#fixers#alejandra#Fix',
+\ 'suggested_filetypes': ['nix'],
+\ 'description': 'The Uncompromising Nix Code Formatter',
+\ },
\ 'align_help_tags': {
\ 'function': 'ale#fixers#help#AlignTags',
\ 'suggested_filetypes': ['help'],
diff --git a/autoload/ale/fixers/alejandra.vim b/autoload/ale/fixers/alejandra.vim
new file mode 100644
index 00000000..3844e8c0
--- /dev/null
+++ b/autoload/ale/fixers/alejandra.vim
@@ -0,0 +1,13 @@
+call ale#Set('nix_alejandra_executable', 'alejandra')
+call ale#Set('nix_alejandra_options', '')
+
+function! ale#fixers#alejandra#Fix(buffer) abort
+ let l:executable = ale#Var(a:buffer, 'nix_alejandra_executable')
+ let l:options = ale#Var(a:buffer, 'nix_alejandra_options')
+
+ return {
+ \ 'command': ale#Escape(l:executable)
+ \ . (empty(l:options) ? '' : ' ' . l:options)
+ \ . ' -- -'
+ \}
+endfunction
diff --git a/doc/ale-nix.txt b/doc/ale-nix.txt
index 1df7caff..8600c281 100644
--- a/doc/ale-nix.txt
+++ b/doc/ale-nix.txt
@@ -3,6 +3,24 @@ ALE Nix Integration *ale-nix-options*
===============================================================================
+alejandra *ale-nix-alejandra*
+
+g:ale_nix_alejandra_executable *g:ale_nix_alejandra_executable*
+ *b:ale_nix_alejandra_executable*
+ Type: |String|
+ Default: `'alejandra'`
+
+ This variable sets the executable used for alejandra.
+
+g:ale_nix_alejandra_options *g:ale_nix_alejandra_options*
+ *b:ale_nix_alejandra_options*
+ Type: |String|
+ Default: `''`
+
+ This variable can be set to pass additional options to the alejandra fixer.
+
+
+===============================================================================
nixfmt *ale-nix-nixfmt*
g:ale_nix_nixfmt_executable *g:ale_nix_nixfmt_executable*
diff --git a/doc/ale-supported-languages-and-tools.txt b/doc/ale-supported-languages-and-tools.txt
index fea2fd85..705eef41 100644
--- a/doc/ale-supported-languages-and-tools.txt
+++ b/doc/ale-supported-languages-and-tools.txt
@@ -378,6 +378,7 @@ Notes:
* `nimlsp`
* `nimpretty`
* nix
+ * `alejandra`
* `nix-instantiate`
* `nixfmt`
* `nixpkgs-fmt`
diff --git a/doc/ale.txt b/doc/ale.txt
index 38432a60..ae783761 100644
--- a/doc/ale.txt
+++ b/doc/ale.txt
@@ -3094,6 +3094,7 @@ documented in additional help files.
nimlsp................................|ale-nim-nimlsp|
nimpretty.............................|ale-nim-nimpretty|
nix.....................................|ale-nix-options|
+ alejandra.............................|ale-nix-alejandra|
nixfmt................................|ale-nix-nixfmt|
nixpkgs-fmt...........................|ale-nix-nixpkgs-fmt|
statix................................|ale-nix-statix|
diff --git a/supported-tools.md b/supported-tools.md
index 45280e56..a3008b5c 100644
--- a/supported-tools.md
+++ b/supported-tools.md
@@ -387,6 +387,7 @@ formatting.
* [nimlsp](https://github.com/PMunch/nimlsp)
* nimpretty
* nix
+ * [alejandra](https://github.com/kamadorueda/alejandra)
* [nix-instantiate](http://nixos.org/nix/manual/#sec-nix-instantiate)
* [nixfmt](https://github.com/serokell/nixfmt)
* [nixpkgs-fmt](https://github.com/nix-community/nixpkgs-fmt)
diff --git a/test/fixers/test_alejandra_fixer_callback.vader b/test/fixers/test_alejandra_fixer_callback.vader
new file mode 100644
index 00000000..ecbab6ff
--- /dev/null
+++ b/test/fixers/test_alejandra_fixer_callback.vader
@@ -0,0 +1,24 @@
+Before:
+ Save g:ale_nix_alejandra_executable
+ Save g:ale_nix_alejandra_options
+
+After:
+ Restore
+
+Execute(The alejandra callback should return the correct default values):
+ AssertEqual
+ \ {
+ \ 'command': ale#Escape('alejandra') . ' -- -'
+ \ },
+ \ ale#fixers#alejandra#Fix(bufnr(''))
+
+Execute(The alejandra executable and options should be configurable):
+ let g:ale_nix_alejandra_executable = '/path/to/alejandra'
+ let g:ale_nix_alejandra_options = '-q'
+
+ AssertEqual
+ \ {
+ \ 'command': ale#Escape('/path/to/alejandra')
+ \ . ' -q -- -',
+ \ },
+ \ ale#fixers#alejandra#Fix(bufnr(''))