mirror of
https://github.com/dense-analysis/ale.git
synced 2026-01-19 17:42:57 +08:00
Add prolog swipl linter (#1979)
* add prolog/swipl linter * use load_files/2 instead of read_term/2 Because it also checks some semantic warnings / errors not only syntactic warnings / errors. e.g.: * singleton warning * discontiguous warning * ... cf. http://www.swi-prolog.org/pldoc/doc_for?object=style_check/1 * support error messages with no line number :- module(module_name, [pred/0]). causes ERROR: Exported procedure module_name:pred/0 is not defined * add test for prolog/swipl handler * cosmetic fixes * detect timeout using SIGALRM * rename g:prolog_swipl_goals to g:prolog_swipl_load * write doc for prolog/swipl linter * update toc and README * fix ignore patterns
This commit is contained in:
56
doc/ale-prolog.txt
Normal file
56
doc/ale-prolog.txt
Normal file
@@ -0,0 +1,56 @@
|
||||
===============================================================================
|
||||
ALE Prolog Integration *ale-prolog-options*
|
||||
|
||||
|
||||
===============================================================================
|
||||
swipl *ale-prolog-swipl*
|
||||
|
||||
g:ale_prolog_swipl_executable *g:ale_prolog_swipl_executable*
|
||||
*b:ale_prolog_swipl_executable*
|
||||
Type: |String|
|
||||
Default: `'swipl'`
|
||||
|
||||
The executable that will be run for the `swipl` linter.
|
||||
|
||||
g:ale_prolog_swipl_load *g:ale_prolog_swipl_load*
|
||||
*b:ale_prolog_swipl_load*
|
||||
Type: |String|
|
||||
Default: `'current_prolog_flag(argv, [File]), load_files(File, [sandboxed(true)]), halt.'`
|
||||
|
||||
The prolog goals that will be passed to |g:ale_prolog_swipl_executable| with `-g` option.
|
||||
|
||||
It does:
|
||||
1. Takes the first command argument (current file path)
|
||||
2. Checks (syntactic / semantic) problems and output to stderr
|
||||
|
||||
NOTE: `sandboxed(true)` prohibits executing some directives such as 'initialization main'.
|
||||
|
||||
g:ale_prolog_swipl_timeout *g:ale_prolog_swipl_timeout*
|
||||
*b:ale_prolog_swipl_timeout*
|
||||
Type: |Number|
|
||||
Default: `3`
|
||||
|
||||
Timeout seconds to detect long-running linter.
|
||||
It is done by setting SIGALRM.
|
||||
See |g:ale_prolog_swipl_alarm| and |g:ale_prolog_swipl_alarm_handler|.
|
||||
|
||||
g:ale_prolog_swipl_alarm *g:ale_prolog_swipl_alarm*
|
||||
*b:ale_prolog_swipl_alarm*
|
||||
Type: |String|
|
||||
Default: `'alarm(%t, (%h), _, [])'`
|
||||
|
||||
The prolog goals to be expected to set SIGALRM.
|
||||
`%t` is replaced by |g:ale_prolog_swipl_timeout|.
|
||||
`%h` is replaced by |g:ale_prolog_swipl_alarm_handler|.
|
||||
|
||||
g:ale_prolog_swipl_alarm_handler *g:ale_prolog_swipl_alarm_handler*
|
||||
*b:ale_prolog_swipl_alarm_handler*
|
||||
Type: |String|
|
||||
Default: `'writeln(user_error, "ERROR: Exceeded %t seconds, Please change g:prolog_swipl_timeout to modify the limit."), halt(1)'`
|
||||
|
||||
The prolog goals to be expected that will be run on SIGALRM.
|
||||
`%t` is replaced by |g:ale_prolog_swipl_timeout|.
|
||||
|
||||
|
||||
===============================================================================
|
||||
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||
@@ -226,6 +226,8 @@ CONTENTS *ale-contents*
|
||||
write-good..........................|ale-pod-write-good|
|
||||
pony..................................|ale-pony-options|
|
||||
ponyc...............................|ale-pony-ponyc|
|
||||
prolog................................|ale-prolog-options|
|
||||
swipl...............................|ale-prolog-swipl|
|
||||
proto.................................|ale-proto-options|
|
||||
protoc-gen-lint.....................|ale-proto-protoc-gen-lint|
|
||||
pug...................................|ale-pug-options|
|
||||
@@ -453,6 +455,7 @@ Notes:
|
||||
* PO: `alex`!!, `msgfmt`, `proselint`, `write-good`
|
||||
* Pod: `alex`!!, `proselint`, `write-good`
|
||||
* Pony: `ponyc`
|
||||
* Prolog: `swipl`
|
||||
* proto: `protoc-gen-lint`
|
||||
* Pug: `pug-lint`
|
||||
* Puppet: `languageserver`, `puppet`, `puppet-lint`
|
||||
|
||||
Reference in New Issue
Block a user