diff --git a/autoload/ale/fix/registry.vim b/autoload/ale/fix/registry.vim index c657bebd..3d6bd923 100644 --- a/autoload/ale/fix/registry.vim +++ b/autoload/ale/fix/registry.vim @@ -697,6 +697,11 @@ let s:default_registry = { \ 'suggested_filetypes': ['ruby'], \ 'description': 'A formatter for Ruby source code', \ }, +\ 'scadformat': { +\ 'function': 'ale#fixers#scadformat#Fix', +\ 'suggested_filetypes': ['openscad'], +\ 'description': 'Formatter for scad files', +\ }, \ 'cljfmt': { \ 'function': 'ale#fixers#cljfmt#Fix', \ 'suggested_filetypes': ['clojure'], diff --git a/autoload/ale/fixers/scadformat.vim b/autoload/ale/fixers/scadformat.vim new file mode 100644 index 00000000..f95f2963 --- /dev/null +++ b/autoload/ale/fixers/scadformat.vim @@ -0,0 +1,15 @@ +" Author: tony o'dell +" Description: Fix scad files with scadformat + +call ale#Set('openscad_scadformat_executable', 'scadformat') +call ale#Set('openscad_scadformat_options', '') + +function! ale#fixers#scadformat#Fix(buffer) abort + let l:executable = ale#Var(a:buffer, 'openscad_scadformat_executable') + let l:options = ale#Var(a:buffer, 'openscad_scadformat_options') + + return { + \ 'command': ale#Escape(l:executable) + \ . (empty(l:options) ? '' : ' ' . l:options), + \} +endfunction diff --git a/doc/ale-openscad.txt b/doc/ale-openscad.txt index ac416bc3..7e580bd4 100644 --- a/doc/ale-openscad.txt +++ b/doc/ale-openscad.txt @@ -21,5 +21,23 @@ g:ale_openscad_sca2d_options *g:ale_openscad_sca2d_options* This variable can be set to pass options to sca2d. +=============================================================================== +scadformat *ale-openscad-scadformat* + +g:ale_openscad_scadformat_executable *g:ale_openscad_scadformat_executable* + *b:ale_openscad_scadformat_executable* + Type: |String| + Default: `'scadformat'` + + See |ale-integrations-local-executables| + + +g:ale_openscad_scadformat_options *g:ale_openscad_scadformat_options* + *b:ale_openscad_scadformat_options* + Type: |String| + Default: `''` + + This variable can be set to pass options to scadformat. + =============================================================================== 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 826bc412..071e3f7a 100644 --- a/doc/ale-supported-languages-and-tools.txt +++ b/doc/ale-supported-languages-and-tools.txt @@ -446,6 +446,7 @@ Notes: * `yamllint` * OpenSCAD * `SCA2D` + * `scadformat` * Packer * `packer-fmt-fixer` * Pascal diff --git a/doc/ale.txt b/doc/ale.txt index 18a07777..22d8693e 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -3256,6 +3256,7 @@ documented in additional help files. yamllint..............................|ale-openapi-yamllint| openscad................................|ale-openscad-options| sca2d.................................|ale-openscad-sca2d| + scadformat............................|ale-openscad-scadformat| packer..................................|ale-packer-options| packer-fmt-fixer......................|ale-packer-fmt-fixer| pascal..................................|ale-pascal-options| diff --git a/supported-tools.md b/supported-tools.md index d9b3ad8e..0749fa73 100644 --- a/supported-tools.md +++ b/supported-tools.md @@ -455,6 +455,7 @@ formatting. * [yamllint](https://yamllint.readthedocs.io/) * OpenSCAD * [SCA2D](https://gitlab.com/bath_open_instrumentation_group/sca2d) :floppy_disk: + * [scadformat](https://github.com/hugheaves/scadformat) * Packer (HCL) * [packer-fmt-fixer](https://github.com/hashicorp/packer) * Pascal diff --git a/test/fixers/test_scadformat_fixer.vader b/test/fixers/test_scadformat_fixer.vader new file mode 100644 index 00000000..5461dc4b --- /dev/null +++ b/test/fixers/test_scadformat_fixer.vader @@ -0,0 +1,22 @@ +Before: + Save g:ale_openscad_scadformat_executable + Save g:ale_openscad_scadformat_options + + let g:ale_openscad_scadformat_executable = 'xxx' + let g:ale_openscad_scadformat_options = '' + + call ale#test#SetDirectory('/testplugin/test/fixers') + +After: + Restore + + call ale#test#RestoreDirectory() + +Execute(scadformat - defaults OK): + call ale#test#SetFilename('../test-files/openscad/dummy.scad') + + AssertEqual + \ { + \ 'command': ale#Escape('xxx') + \ }, + \ ale#fixers#scadformat#Fix(bufnr('')) diff --git a/test/test-files/openscad/dummy.scad b/test/test-files/openscad/dummy.scad new file mode 100644 index 00000000..e69de29b