Detect and use CM files for smlnj (#884)

* Detect and use CM files for smlnj

* Split into two checkers

- one for CM projects
- one for single SML files

* Fix some typos

* Fix error caught by writing tests

We want to actually use `glob` to search in paths upwards from us.
(Previously we were just searching in the current directory every time!)

* Fix errors from former test run

* Write tests for GetCmFile and GetExecutableSmlnj

* Typo in 'smlnj/' fixture filenames
This commit is contained in:
Jake Zimmerman
2017-09-03 11:56:14 -07:00
committed by w0rp
parent c7fbcb3c02
commit 63e8946fc8
11 changed files with 205 additions and 49 deletions

36
doc/ale-sml.txt Normal file
View File

@@ -0,0 +1,36 @@
===============================================================================
ALE SML Integration *ale-sml-options*
===============================================================================
smlnj *ale-sml-smlnj*
*ale-sml-smlnj-cm*
There are two SML/NJ powered checkers:
- one using Compilation Manager that works on whole projects, but requires you
to save before errors show up
- one using the SML/NJ REPL that works as you change the text, but might fail
if your project can only be built with CM.
We dynamically select which one to use based whether we find a `*.cm` file at
or above the directory of the file being checked. Only one checker (`smlnj`,
`smlnj-cm`) will be enabled at a time.
-------------------------------------------------------------------------------
g:ale_sml_smlnj_cm_file *g:ale_sml_smlnj_cm_file*
*b:ale_sml_smlnj_cm_file*
Type: |String|
Default: `'*.cm'`
By default, ALE will look for a `*.cm` file in your current directory,
searching upwards. It stops when it finds at least one `*.cm` file (taking
the first file if there are more than one).
Change this option (in the buffer or global scope) to control how ALE finds
CM files. For example, to always search for a CM file named `sandbox.cm`:
>
let g:ale_sml_smlnj_cm_file = 'sandbox.cm'
===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -119,6 +119,8 @@ CONTENTS *ale-contents*
sh....................................|ale-sh-options|
shell...............................|ale-sh-shell|
shellcheck..........................|ale-sh-shellcheck|
sml...................................|ale-sml-options|
smlnj...............................|ale-sml-smlnj|
spec..................................|ale-spec-options|
rpmlint.............................|ale-spec-rpmlint|
stylus................................|ale-stylus-options|