summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/fix/registry.vim5
-rw-r--r--autoload/ale/fixers/ptop.vim17
-rw-r--r--doc/ale-pascal.txt24
-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_ptop_fixer_callback.vader38
-rw-r--r--test/test-files/pascal/test.pas0
8 files changed, 90 insertions, 0 deletions
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
--- /dev/null
+++ b/test/test-files/pascal/test.pas