diff --git a/autoload/ale/fix/registry.vim b/autoload/ale/fix/registry.vim index d82e2778..7ef502c8 100644 --- a/autoload/ale/fix/registry.vim +++ b/autoload/ale/fix/registry.vim @@ -430,6 +430,11 @@ let s:default_registry = { \ 'function': 'ale#fixers#ormolu#Fix', \ 'suggested_filetypes': ['haskell'], \ 'description': 'A formatter for Haskell source code.', +\ }, +\ 'ptop': { +\ 'function': 'ale#fixers#ptop#Fix', +\ 'suggested_filetypes': ['pascal'], +\ 'description': 'Fix Pascal files with ptop.', \ } \} diff --git a/autoload/ale/fixers/ptop.vim b/autoload/ale/fixers/ptop.vim new file mode 100644 index 00000000..98345226 --- /dev/null +++ b/autoload/ale/fixers/ptop.vim @@ -0,0 +1,17 @@ +" Author: BarrOff https://github.com/BarrOff +" Description: Integration of ptop with ALE. + +call ale#Set('pascal_ptop_executable', 'ptop') +call ale#Set('pascal_ptop_options', '') + +function! ale#fixers#ptop#Fix(buffer) abort + let l:executable = ale#Var(a:buffer, 'pascal_ptop_executable') + let l:options = ale#Var(a:buffer, 'pascal_ptop_options') + + return { + \ 'command': ale#Escape(l:executable) + \ . (empty(l:options) ? '' : ' ' . l:options) + \ . ' %s %t', + \ 'read_temporary_file': 1, + \} +endfunction diff --git a/doc/ale-pascal.txt b/doc/ale-pascal.txt new file mode 100644 index 00000000..03d9a004 --- /dev/null +++ b/doc/ale-pascal.txt @@ -0,0 +1,24 @@ +=============================================================================== +ALE Pascal Integration *ale-pascal-options* + +=============================================================================== +ptop *ale-pascal-ptop* + +g:ale_pascal_ptop_executable *g:ale_pascal_ptop_executable* + *b:ale_pascal_ptop_executable* + Type: |String| + Default: `'ptop'` + + This variable can be changed to specify the ptop executable. + + +g:ale_pascal_ptop_options *g:ale_pascal_ptop_options* + *b:ale_pascal_ptop_options* + Type: |String| + Default: `''` + +This variable can be set to pass additional options to the ptop fixer. + + +=============================================================================== +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 a2d14ef2..211b3729 100644 --- a/doc/ale-supported-languages-and-tools.txt +++ b/doc/ale-supported-languages-and-tools.txt @@ -344,6 +344,8 @@ Notes: * `ibm_validator` * `prettier` * `yamllint` +* Pascal + * `ptop` * Pawn * `uncrustify` * Perl diff --git a/doc/ale.txt b/doc/ale.txt index 796dd428..95365d33 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -2881,6 +2881,8 @@ documented in additional help files. ibm_validator.........................|ale-openapi-ibm-validator| prettier..............................|ale-openapi-prettier| yamllint..............................|ale-openapi-yamllint| + pascal..................................|ale-pascal-options| + ptop..................................|ale-pascal-ptop| pawn....................................|ale-pawn-options| uncrustify............................|ale-pawn-uncrustify| perl....................................|ale-perl-options| diff --git a/supported-tools.md b/supported-tools.md index aee50936..a43a583c 100644 --- a/supported-tools.md +++ b/supported-tools.md @@ -353,6 +353,8 @@ formatting. * [ibm_validator](https://github.com/IBM/openapi-validator) * [prettier](https://github.com/prettier/prettier) * [yamllint](https://yamllint.readthedocs.io/) +* Pascal + * [ptop](https://www.freepascal.org/tools/ptop.var) * Pawn * [uncrustify](https://github.com/uncrustify/uncrustify) * Perl diff --git a/test/fixers/test_ptop_fixer_callback.vader b/test/fixers/test_ptop_fixer_callback.vader new file mode 100644 index 00000000..7cf632e3 --- /dev/null +++ b/test/fixers/test_ptop_fixer_callback.vader @@ -0,0 +1,38 @@ +Before: + Save g:ale_pascal_ptop_executable + Save g:ale_pascal_ptop_options + + " Use an invalid global executable, so we don't match it. + let g:ale_pascal_ptop_executable = 'xxxinvalid' + let g:ale_pascal_ptop_options = '' + + call ale#test#SetDirectory('/testplugin/test/fixers') + +After: + Restore + + call ale#test#RestoreDirectory() + +Execute(The ptop callback should return the correct default values): + call ale#test#SetFilename('../test-files/pascal/test.pas') + + AssertEqual + \ { + \ 'read_temporary_file': 1, + \ 'command': ale#Escape('xxxinvalid') + \ . ' %s %t', + \ }, + \ ale#fixers#ptop#Fix(bufnr('')) + +Execute(The ptop callback should include custom ptop options): + let g:ale_pascal_ptop_options = "-i 2" + call ale#test#SetFilename('../test-files/pascal/test.pas') + + AssertEqual + \ { + \ 'read_temporary_file': 1, + \ 'command': ale#Escape('xxxinvalid') + \ . ' ' . g:ale_pascal_ptop_options + \ . ' %s %t', + \ }, + \ ale#fixers#ptop#Fix(bufnr('')) diff --git a/test/test-files/pascal/test.pas b/test/test-files/pascal/test.pas new file mode 100644 index 00000000..e69de29b