The compile function expects a list of paths in the LibDirs parameter,
however when calling erlang_check_file.erl with an additional path (for
example when using the "g:syntastic_erlc_include_path" option), a
string would be passed instead. Because strings in Erlang are lists,
each character of the string would have been interpreted as a lib path.
The new function ensures line numbers in loclists are not beyond end of
buffer. The implementation is very inefficient, because it loads all
buffers in memory.
`eslint` and `lessc` checkers need this function.
This is especially important when testing/using variables that do not
exist, because then a new shell is spawned by Vim.
But since they should be available already in Vim from the (shell) env
there is no point in doing so.
See also: http://www.reddit.com/r/vim/comments/2el2zo
Previously, non-core users could not use ocamlc as their syntax checker because this check would reset the wrong variable.
Setting g:syntastic_ocaml_use_ocamlc without core now works as intended.
This executes the code your files. This is probably fine if you wrote
the files yourself, but it can be a problem if you're trying to check
third party files. If you are 100% willing to let Vim run the code in
your files, set g:syntastic_enable_elixir_checker to 1 in your vimrc.
References:
https://groups.google.com/d/msg/elixir-lang-talk/B29noPHvQ-8/9JvSGPop7n0J
On Windows R is run with CWD set to the directory used at install time,
rather than the current directory. The official workaround for this is
to add links to R from the home directories of each of your projects.
We can't do that in Vim, but we can call `setwd()` to Vim's idea of
current directory. This mimics the behaviour of R on UNIX.
The syntax checker uses the `cabal check` command to check Haskell
Cabal package descriptions for syntax errors and other potential
problems. Currently, the `cabal check` command does not take a file
argument, so the current working directory must be changed to that
of the package description's before `cabal` can be executed.
Additionally, `cabal check` only issues line numbers for parse errors,
so warnings are arbitrarily assigned to line 1.
On terms that support smm / rmm (f.i. xterm), initializing readline
prints the smm sequence, regardless of whether stdout is a terminal or
not, which in turn can make checkers' output unparseable.
Workaround: set TERM to dumb before calling the checkers.
Error sorting can't be done as a postprocess function called from
SyntasticMake(), since the final values of some relevant fields (f.i.
type) might not be known yet at that point. Solution: move sorting to
getLocListRaw(), after per-checker quiet_messages. New checker methods
getWantSort() / setWantSort() are needed.
Second problem: some checkers return screen columns mixed with byte
indices. Solution: compute screen columns as needed. Sadly, everything
about working with screen columns is fragile.
Especially for 'hdevtools' this results into a more robust behaviour,
because 'hdevtools' starts a background process and changing the
current directory doesn't affect the current directory of the background
process.
Optimisation: merge handling of global and per-checker filters.
Feature: allow [] and '' values for quiet_messages filter elements.
Feature: allow overrides for quiet_messages filters.
Feature: buffer-local auto_jump and quiet_messages.
Safety: add magic specifiers to catch regexps.
Cleanup: minor restructuring for the forthcoming foreign checkers
feature.