Compare commits

...

816 Commits

Author SHA1 Message Date
w0rp
b2702c6829 Bump the ALE version to v3.1.0 2021-02-11 19:47:40 +00:00
w0rp
388cf33743 Fix #3579 - Escape cppcheck arguments for Windows 2021-02-06 20:13:28 +00:00
Hugo Gualandi
77c034884b Bugfix: ParseCFlagsFromMakeOutput was never being called (#3574)
Previously, the make output was never being parsed, even when the
`c_parse_makefile` option was set.
2021-02-06 19:06:01 +00:00
w0rp
8beb67b4d1 Fix tests for LSP suggestions 2021-02-06 18:55:21 +00:00
w0rp
99eb68e6ca #3362 Disable LSP/tsserver hints/suggestions by default 2021-02-06 18:49:42 +00:00
Horacio Sanson
f9f2ad2765 Merge pull request #3571 from rfwatson/gopls-add-init-options
gopls: add go_gopls_init_options
2021-02-06 21:34:19 +09:00
Horacio Sanson
b88d3c4e4b Merge pull request #3575 from hugomg/gnumakefile
Have c_parse_makefile look for GNUmakefile as well
2021-02-06 21:31:16 +09:00
Horacio Sanson
cf53eb3667 Merge pull request #3568 from jD91mZM2/jq
Add jq linter for JSON diagnostics
2021-02-06 21:29:51 +09:00
jD91mZM2
27130efc65 Reuse ale#fixers#jq#GetExecutable for jq 2021-02-06 11:12:04 +01:00
Hugo Musso Gualandi
ae916d49fd Add test case for gnumakefile detection 2021-02-05 20:48:52 -03:00
Horacio Sanson
787ab2a366 Merge pull request #3529 from krsch/master
phan: add filename to output
2021-02-05 23:02:47 +09:00
Horacio Sanson
f612805801 Merge pull request #3576 from cyyever/fish_indent
Fish indent
2021-02-05 22:58:43 +09:00
Hugo Musso Gualandi
4c7e843fd0 Have c_parse_makefile look for GNUmakefile as well
Makefiles using GNU-make features might be called "GNUmakefile" instead
of "Makefile". This commit teaches the `c_parse_makefile` feature to
look for a GNUmakefile file if a Makefile is not present.
2021-02-03 19:15:03 -03:00
Rob Watson
26b92f73b5 gopls: add go_gopls_init_options 2021-02-03 14:49:27 +01:00
Alexey Kreshchuk
cc67bc0541 add filename to output 2021-02-02 17:34:59 +03:00
jD91mZM2
98caa19cc7 Add command callback test 2021-02-02 13:15:46 +01:00
Horacio Sanson
9b5c090473 Merge pull request #3472 from m-ildefons/hadolint
hadolint: Recognize message type
2021-02-02 13:08:18 +09:00
w0rp
c747c277c2 #2547 Add a cfn-lint alias for cloudformation 2021-01-31 17:06:56 +00:00
w0rp
1457e54528 #3527 - Clarify that popup menus should only be used in GUI Vim 2021-01-31 16:29:22 +00:00
Jerko Steiner
e8080be08b Allow duplicate LSP completions for autoimport (#3473)
Similarly to TS completions, this allows the user to pick the package to autoimport when both the package and method name are the same.
2021-01-31 16:21:31 +00:00
jD91mZM2
4894c760c2 Add jq linter for JSON diagnostics 2021-01-31 13:01:03 +01:00
Horacio Sanson
7572ec3489 Merge pull request #3474 from yen3/haskell-hls
Add linter for haskell-language-server
2021-01-31 20:19:00 +09:00
yen3
e5e851fadc Add linter for haskell-language-server
The patch adds a new linter for haskell-language-server (hls). hls is
the integration point of haskell-ide-engine (hie) and ghcide.
2021-01-31 11:43:45 +01:00
Horacio Sanson
2d07fa0cc2 Merge pull request #3566 from hsanson/2726-fix-terraform-linter
Fix 2726 - fix terraform linter.
2021-01-30 18:20:49 +09:00
Horacio Sanson
dd1c665db2 Fix tests on windows 2021-01-30 18:17:28 +09:00
Horacio Sanson
d511d5af11 Fix 2726 - fix terraform linter.
Instead of using `terraform fmt` for linting use `terraform validate`
with json output.
2021-01-30 17:20:44 +09:00
Horacio Sanson
7c44f4e403 Merge pull request #3565 from hsanson/3371-add-terraform-ls-support
Fix 3371 - Add terraform-ls support
2021-01-30 16:19:40 +09:00
Horacio Sanson
64d430438e Fix 3371 - Add terraform-ls support 2021-01-30 16:09:39 +09:00
w0rp
82c8e3a3a3 Remove last traces of Travis CI
* The build status badge is now for GitHub Actions.
* The documentation now mentions GitHub instead.
* Warnings in the YAML file have been fixed or ignored.
2021-01-27 20:11:46 +00:00
Horacio Sanson
bafe1c0fd6 3560 add vim 8.2 and nvim 0.4 to ci tests (#3561)
* Add vim82 and neovim04 to CI tests.

* Fix test_sign_column_hightlighting test.

In vim82 with verbose=1 the output of highlight command changes breaking
the ale#sign#SetUpDefaultColumnWithoutErrorsHighlight(). This commit
forces verbose=0 when the method starts and restores the previous value
before exiting.

* No return values in vim82 returns a numeric value instead of a empty string.

* Fix test_reek_handler test

The FuzzyJSONDecode() method catches E474 when it fails to parse the
input as JSON but Vim8.2 throws E491 instead. This commit modifies the
function to catch both E474 or E491.

* Fix perl6 handler test.

Perl6 handler catches json parse errors using the E474 error but in
Vim82 it changed to E491. This commit modifies the handler so both
errors are considered.

* Fix list opening tests.

In Vim 8.2 the call `range(1, bufnr('$'))` always returns quickfix
buffers no matter if they are closed or not. Using `ls` does not show
them but the above range will always include them.

This new behavior breaks the ale#list#IsQuickfixOpen() method that in
turn breaks many other things. This commit fixes this by using the
getqflist() and getloclist() methods instead.

* Fix test updates loclist test.

For some reason in Vim 8.2 the sign offset seems to not reset between
tests causing the sign_id to not match in the Assert. When the test is
run individually it passes but when run as part of the whole suite the
sign_id is off by one.

Forcing the offset in the test setup seems to fix the issue.

* Fix omnifunc completion test.

For unknown reasons the SetCompletionResponse tests fail in Neovim 0.2
and 0.4. Unfortunatelly the only solution I found is to disable them
for neovim.

* Fix linter warnings

* Fix smoker test.

Add vim 8.2 to the list of versions that need some retires due to
randomly failing tests.

* Add docker image build job.

Trying some clever trick to build the docker image if not available
locally or in Docker hub. It uses the Dockerfile md5 checksum as tag so
only when changes on that file occur will the image be downloaded or
build.

* Add labels to Docker image

* Remove tests for middle versions 8.1 and 0.3.5

* Use same vader commit as appveyor

* Implement image push to Docker Hub

Co-authored-by: Horacio Sanson <horacio@allm.inc>
2021-01-27 19:52:24 +00:00
Horacio Sanson
c9f4005820 Merge pull request #3425 from pinicarus/custom-dialyzer-options
Custom erlang/dialyzer options
2021-01-27 20:24:26 +09:00
Kevin Svetlitski
cab4280d02 Feature: Add support for named-pipe sockets for LSPs (#3509)
* Add support for using named pipes for lsp 'socket' servers; documentation updated accordingly
* Add tests for connecting to named pipe sockets
2021-01-26 20:43:17 +00:00
Horacio Sanson
3a1728297a Merge pull request #3227 from Ma27/nixunstable-error-fmt
Update error-parser for `nix-instantiate` on Nix 2.4+
2021-01-25 13:53:09 +09:00
Maximilian Bosch
72dbd7f648 Update error-parser for nix-instantiate on Nix 2.4+
In the (unreleased) Nix 2.4 the error-messages have been reformatted[1].
This patch aims to retain proper `.nix`-support in `ale`, for both
stable Nix (2.3 and older) and unstable Nix (2.4 and newer).

[1] https://github.com/NixOS/nix/pull/3590
2021-01-24 22:54:02 +01:00
Horacio Sanson
471e20ed2b Merge pull request #3559 from nibocn/master
fix(eclipselsp): org.eclipse.equinox.launcher_xxxx.jar file matching
2021-01-24 16:36:34 +09:00
NiBo
65bfb07e43 fix(eclipselsp): org.eclipse.equinox.launcher_xxxx.jar file matching failed 2021-01-24 14:48:54 +08:00
Horacio Sanson
18eb6a0758 Merge pull request #3557 from benknoble/dafny-filename-again
dafny: update filename handling
2021-01-24 14:07:12 +09:00
Horacio Sanson
580271b510 Merge pull request #3377 from benknoble/fix-swipl
prolog/swipl: update error format for new version
2021-01-24 10:40:11 +09:00
Pierre-Nicolas Clauss
105bc55695 refactor(erlang/dialyzer): remove file placeholder from options
Signed-off-by: Pierre-Nicolas Clauss <pinicarus@protonmail.com>
2021-01-23 19:07:26 +01:00
Pierre-Nicolas Clauss
0ac7595fe9 Merge remote-tracking branch 'upstream/master'
Signed-off-by: Pierre-Nicolas Clauss <pinicarus@protonmail.com>
2021-01-23 19:06:59 +01:00
D. Ben Knoble
bacb8bb902 dafny: update filename handling
cf. #3475, #3390
2021-01-23 12:34:36 -05:00
D. Ben Knoble
2c1c5b06d9 Merge branch 'master' into fix-swipl
* master: (133 commits)
  Add rnix-lsp for Nix diagnostics and completion
  add spectral support for json
  add spectral handler
  add spectral linter for yaml
  doc: Fix linter issues
  doc: Add documentation for Deno
  feat: Add Deno lsp support
  feat: Add Deno fmt fixer
  Add document for apkbuild filetype
  Add tests for atools handler, basic and dealing with Error and Warning
  Test default linters for apkbuild
  Document new default linters for apkbuild
  Make apkbuild_lint and secfixes_check default for apkbuild filetype
  document support for apkbuild-lint and secfixes-check for apkbuild
  Add linters for apkbuild-lint and secfixes-check from atools
  Add handler for the output of atools
  Fix typos
  Add command callback tests
  Add support for standalone files
  Fix linting errors
  ...
2021-01-23 12:29:05 -05:00
D. Ben Knoble
10d2b8797c swipl: style fix 2021-01-23 12:27:55 -05:00
Horacio Sanson
9fd9435cd5 Merge pull request #3556 from jD91mZM2/rnix
Add rnix-lsp for Nix diagnostics and completion
2021-01-23 21:50:36 +09:00
Horacio Sanson
1101346657 Merge pull request #3547 from hsanson/3546-fix-E928-when-using-javac-linter-on-non-maven-projects
Fix 3546 - check empty executable string.
2021-01-23 21:26:39 +09:00
jD91mZM2
c1b6628425 Add rnix-lsp for Nix diagnostics and completion 2021-01-23 13:23:14 +01:00
Horacio Sanson
3e94c42ec0 Merge pull request #3521 from hsanson/3498-change-standardrb-fixer-to-use-stdin
3498 change standardrb fixer to use stdin
2021-01-23 19:28:41 +09:00
Horacio Sanson
a6dfc611f6 Merge pull request #3424 from maxice8/atools
Add support for Alpine Linux APKBUILD
2021-01-23 16:05:26 +09:00
Horacio Sanson
3c3dcd4041 Merge pull request #3489 from t2h5/yaml-spectral-linter
Add Stoplight Spectral linter for yaml
2021-01-23 16:00:45 +09:00
tatsuya
66b3e768db add spectral support for json 2021-01-23 11:56:10 +09:00
tatsuya
997dd7f8fe add spectral handler 2021-01-23 11:56:10 +09:00
tatsuya
5a47d878fb add spectral linter for yaml
ci
2021-01-23 11:56:10 +09:00
Horacio Sanson
c374736301 Merge pull request #3533 from motato1/master
Deno support for LSP and fixer
2021-01-23 11:04:52 +09:00
Horacio Sanson
5200e6c734 Merge pull request #2825 from thindil/master
Added support for Ada Language Server
2021-01-23 09:41:02 +09:00
Mohammed Chelouti
fe666a7a6c doc: Fix linter issues 2021-01-23 00:43:33 +01:00
Mohammed Chelouti
e16c3b09f7 doc: Add documentation for Deno 2021-01-22 19:06:53 +01:00
Mohammed Chelouti
9b362634f7 feat: Add Deno lsp support 2021-01-22 19:06:53 +01:00
Mohammed Chelouti
4f2666265a feat: Add Deno fmt fixer 2021-01-22 19:06:52 +01:00
Leo
d7ed80346c Add document for apkbuild filetype 2021-01-22 14:04:26 -03:00
Leo
56951932e0 Add tests for atools handler, basic and dealing with Error and Warning 2021-01-22 14:04:26 -03:00
Leo
4999ae2e85 Test default linters for apkbuild 2021-01-22 14:04:26 -03:00
Leo
4f8f2a4a0c Document new default linters for apkbuild 2021-01-22 14:04:26 -03:00
Leo
542ba5a04a Make apkbuild_lint and secfixes_check default for apkbuild filetype 2021-01-22 14:04:26 -03:00
Leo
df91bc9046 document support for apkbuild-lint and secfixes-check for apkbuild 2021-01-22 14:04:26 -03:00
Leo
32c0eb7c42 Add linters for apkbuild-lint and secfixes-check from atools 2021-01-22 14:04:26 -03:00
Leo
99a809c814 Add handler for the output of atools
atools is a collection of tools written in ash shell and Lua that
provide linting for Alpine Linux's APKBUILD.

APKBUILDs are build recipes used by Alpine Linux's build system, abuild,
an equivalent would be Arch Linux's PKGBUILD and Gentoo's ebuild.
2021-01-22 14:04:26 -03:00
Horacio Sanson
33f2f8ddcd Merge pull request #3551 from fenuks/bugfix-3506
Fix clang-tidy ignoring compile-commands.json
2021-01-23 01:55:40 +09:00
Bartek thindil Jasicki
1ca780a08a Merge remote-tracking branch 'upstream/master' 2021-01-22 17:52:01 +01:00
Horacio Sanson
1b010bbabb Merge pull request #3069 from nelsyeung/feature/dart-analysis-server
Add dart analysis server to linter
2021-01-23 01:47:38 +09:00
Nelson Yeung
985a5295a9 Fix typos 2021-01-22 16:37:38 +00:00
Nelson Yeung
efe65f3477 Add command callback tests 2021-01-22 16:37:38 +00:00
Nelson Yeung
a8acac1f4a Add support for standalone files 2021-01-22 16:37:38 +00:00
Nelson Yeung
850c41b2a9 Fix linting errors 2021-01-22 16:37:38 +00:00
Nelson Yeung
847f729cd4 Add dart analysis_server doc 2021-01-22 16:37:38 +00:00
Nelson Yeung
075c3e0ad0 Add dart analysis_server to supported tools 2021-01-22 16:37:38 +00:00
Nelson Yeung
35b8bb8a55 Add dart analysis server linter 2021-01-22 16:37:38 +00:00
Horacio Sanson
53ff5f2d88 Fix 3546 - check empty executable string.
At some point VIM/NVIM started throwing errors if the input string is
empty for some functions such as execute() and fnamemodify(). This
commit checks if the executable string is empty before passing it to the
executable() function.

Resources:
  - https://github.com/vim/vim/issues/7465
  - https://github.com/vim/vim/releases/tag/v8.2.2117
2021-01-23 01:34:13 +09:00
Horacio Sanson
9a1e91e075 Merge pull request #3519 from atsuya/feature/support-vala-lint
Add support for Vala-Lint
2021-01-23 01:24:24 +09:00
Horacio Sanson
64550062dc Merge pull request #3148 from charlesbjohnson/charlesbjohnson/xo
fixers/xo: enhance `xo` fixer
2021-01-23 01:23:22 +09:00
Charles B Johnson
451e99341e xo: refactor to function 2021-01-22 09:23:54 -06:00
Charles B Johnson
03bd494fd4 linters/xo: prefer function shorthand 2021-01-22 09:23:54 -06:00
Charles B Johnson
5fd5fa5305 linters/xo: fix tests 2021-01-22 09:23:54 -06:00
Charles B Johnson
4edfac4db6 xo: inline filetype handling 2021-01-22 09:23:54 -06:00
Charles B Johnson
23ff19a162 fixers/xo: remove unnecessary directory crawl 2021-01-22 09:23:54 -06:00
Charles B Johnson
1991313ee7 xo: update docs 2021-01-22 09:23:54 -06:00
Charles B Johnson
f17beadb49 fixers/xo: support monorepos 2021-01-22 09:23:54 -06:00
Charles B Johnson
8ffde14039 fixers/xo: support stdin relative to the fixed file 2021-01-22 09:23:53 -06:00
Charles B Johnson
e75ac9f497 fixers/xo: support typescript options 2021-01-22 09:23:53 -06:00
Charles B Johnson
289f808ccd fixers/xo: refactor to handlers 2021-01-22 09:23:53 -06:00
Charles B Johnson
4a6136c27e fixers/xo: add tests 2021-01-22 09:23:53 -06:00
Charles B Johnson
6bfcb9cdff linters/xo: consolidate xo linters 2021-01-22 09:23:53 -06:00
Atsuya Takagi
6b0b8cec79 update doc with snake cased linter name 2021-01-23 00:20:36 +09:00
Atsuya Takagi
897f6b2b23 use snake case for linter name 2021-01-23 00:20:11 +09:00
Horacio Sanson
db816b5c3f Merge pull request #2782 from hsanson/2777-add-ibm-openapi-validator
Fix 2777 - Add IBM openapi validator
2021-01-23 00:13:40 +09:00
Atsuya Takagi
33485ffb92 document the variables can be set for the linter 2021-01-23 00:08:01 +09:00
Atsuya Takagi
8d5b3e827d decide whether or not to run with config file based on the presence of config filename value 2021-01-23 00:08:01 +09:00
Atsuya Takagi
e3e1ddce95 allow setting vala-lint executable 2021-01-23 00:08:01 +09:00
Atsuya Takagi
4328fe7dca add a blank line before if statement 2021-01-23 00:08:01 +09:00
Atsuya Takagi
04550717bf add Vala-Lint as supported linter 2021-01-23 00:08:01 +09:00
Atsuya Takagi
2dbf4ee271 add test to check if it properly ignores outputs with unknown error types 2021-01-23 00:08:01 +09:00
Atsuya Takagi
67c3fa9001 add documentation for vala-lint 2021-01-23 00:08:01 +09:00
Atsuya Takagi
ed2afafd62 use ale#Set for setting default config variable values 2021-01-23 00:08:01 +09:00
Atsuya Takagi
823b094f56 support flags for enable/disable config 2021-01-23 00:08:01 +09:00
Atsuya Takagi
89403b4a06 expect warn or error 2021-01-23 00:08:01 +09:00
Atsuya Takagi
280d2dedae find and use vala-lint config if exists 2021-01-23 00:08:01 +09:00
Atsuya Takagi
c15d9538cd use the correct regex to match the escape sequences... 2021-01-23 00:08:01 +09:00
Atsuya Takagi
b3010ad793 fix the wrong variable name 2021-01-23 00:08:01 +09:00
Atsuya Takagi
9eb6dace88 escape color sequences 2021-01-23 00:08:01 +09:00
Atsuya Takagi
e94d23b1d9 test my hypotethis 2021-01-23 00:08:01 +09:00
Atsuya Takagi
7f1dd5f66a specify a filename of the current buffer 2021-01-23 00:08:01 +09:00
Atsuya Takagi
3e820207e7 be precise about output_stream 2021-01-23 00:08:01 +09:00
Atsuya Takagi
4ed520a219 add initial files 2021-01-23 00:08:01 +09:00
Horacio Sanson
9bc4b468c2 Fix linter error 2021-01-22 23:51:29 +09:00
fenuks
65824feef3 Fix clang-tidy ignoring compile_commands.json 2021-01-22 15:19:38 +01:00
Horacio Sanson
4aa11cbc05 Improve documentation 2021-01-22 23:17:38 +09:00
Horacio Sanson
014b00d4d7 Add yamllint and prettier to openapi.
This commit enables yamllint and prettier on openapi files.
2021-01-22 23:17:38 +09:00
Horacio Sanson
03eae9e085 Fix 2777 - Add IBM openapi validator 2021-01-22 23:17:38 +09:00
Horacio Sanson
27a22e7161 Update tests 2021-01-22 23:17:01 +09:00
Horacio Sanson
7fe61cdf0e Fix 3498 - Change standardrb fixer to read from stdin.
Seems standardrb fails to properly use the --config option when using
temporary files but works fine when reading from stdin. This commit
changes the fixer so it uses stdin instead of temporary files.
2021-01-22 23:17:01 +09:00
Horacio Sanson
a1e6df987c Fix 354 - Migrate CI from travis to Github Actions (#3549)
* Fix 354 - Migrate CI from travis to Github Actions
* Use matrix strategy for parallel tests
* Don't build image on each run
* Add push trigger on tags

Co-authored-by: Horacio Sanson <horacio@allm.inc>
2021-01-22 09:27:36 +00:00
Bartek thindil Jasicki
42bf5ca911 Merge remote-tracking branch 'upstream/master' 2021-01-22 09:45:52 +01:00
Horacio Sanson
80a0108fcf prolog/swipl: cover new format with complex tests
https://github.com/dense-analysis/ale/pull/3377#issuecomment-763628447
2021-01-20 12:08:05 -05:00
Horacio Sanson
6a3d215571 prolog/swipl: simplify with @hsanson's suggestions
https://github.com/dense-analysis/ale/pull/3377#issuecomment-763628447
2021-01-20 12:07:26 -05:00
Horacio Sanson
7e3d2930d8 Merge pull request #3261 from toastal/dhall
Enhanced Dhall fixer support
2021-01-20 21:06:03 +09:00
Horacio Sanson
7b42dd7387 Merge pull request #3475 from benknoble/dafny-include-timeouts
dafny: add a timeLimit option and message-parsing
2021-01-20 20:48:53 +09:00
Horacio Sanson
16c45b8213 Merge pull request #3453 from blinsay/blinsay/rust-analyzer-lsp
pass lsp intialization_options to rust-analyzer
2021-01-20 20:45:17 +09:00
Horacio Sanson
8de0e7b9ba Merge pull request #3430 from mbrunnen/mbn/fix-macros-include-c-flag
Add -imacros to C flags
2021-01-20 20:42:18 +09:00
Horacio Sanson
783cf4ab82 Merge pull request #3362 from daliusd/tsserver_hints
Show tsserver hints/suggestions in Ale.
2021-01-20 20:40:44 +09:00
Horacio Sanson
bfc412a77b Merge pull request #3455 from Thau/feat/credo_config_file
feat: Adds variable to use custom config file with Elixir Credo
2021-01-20 08:42:45 +09:00
Horacio Sanson
9387ccfbc5 Merge pull request #3485 from andreaconti/master
Fix Julia Language Server Support
2021-01-16 15:58:21 +09:00
Horacio Sanson
bbac230008 Merge pull request #3234 from hsanson/3233-enable-ktlint-fixer-for-kotlin-files
Enable ktlint fixer for kotlin files.
2021-01-15 22:26:56 +09:00
Bartek thindil Jasicki
45a28383a2 Merge remote-tracking branch 'upstream/master' 2021-01-15 09:42:14 +01:00
w0rp
6fbdec8587 Merge pull request #3535 from dense-analysis/revert-3358-master
Revert "Improves fixer performance for large buffers"
2021-01-14 20:41:55 +00:00
w0rp
8dce126a6c Update the Docker image; fix an error 2021-01-14 20:24:19 +00:00
w0rp
f398faa8d3 Merge pull request #3471 from kevinclark/3448-fix-unittests
Make test/scripts/custom-checks portable
2021-01-14 18:08:44 +00:00
Kevin Clark
39f393ef07 Add nvim floating window support (replaces #3314) (#3470)
* Add nvim floating window hover support
* Add configuration for float to replace preview
* preview#ShowFloating: qualify local variables
* Configure floating preview usecases individually

Also:
  * Extract floating preview to its own file.
  * Ignore 'stay_here' option. Moving into the floating preview window
    seems confusing at best.
  * Re-use existing floating preview window if it's still up.
  * Flush out floating preview documentation.

* Watch cursor position changes per window

Floating previews open a new window, so when that window is written to,
it moves briefly there at a different position than the original window.
This makes repeated positions detected when positions are tracked at a
s: level. Instead, we change the variable to window scoped, which only
fires a message if the cursor has changed from the last position in
*that window*.

* g:ale_floating_preview cleanup
* floating_preview: add ALEDetail tests
* Fix fecs test missing runtime call
* Add ALEHover floating preview tests

Co-authored-by: Jan-Grimo Sobez <jan-grimo.sobez@phys.chem.ethz.ch>
2021-01-14 18:06:20 +00:00
Horacio Sanson
97ce2423b0 Merge pull request #3494 from YorickPeterse/master
Add linter for Inko
2021-01-13 23:54:06 +09:00
Horacio Sanson
7b187af10a Merge pull request #3482 from liskin/lsp-popup-menu-fix
codefix: Fix LSP MenuCallback invocation (E119, not enough args)
2021-01-13 23:41:34 +09:00
Horacio Sanson
aabca5b0ac Merge pull request #3398 from ecly/update-python-find-root
Update `ale#python#FindProjectRootIni` with poetry.lock and pyproject.toml
2021-01-13 22:07:02 +09:00
Horacio Sanson
012348582c Merge pull request #3531 from pinicarus/custom-erlc-executable
Custom erlc executable
2021-01-13 14:04:58 +09:00
Horacio Sanson
12d28ca34f Merge pull request #3399 from StephenWithPH/suggest-scalafmt-for-sbt
suggest scalafmt for sbt
2021-01-13 14:00:10 +09:00
Horacio Sanson
49f8aa4703 Revert "Improves fixer performance for large buffers" 2021-01-12 17:49:30 +09:00
Bartek thindil Jasicki
7b1ed2733e Merge remote-tracking branch 'upstream/master' 2021-01-08 09:43:19 +01:00
Horacio Sanson
54dd731cf1 Merge pull request #3386 from ivorpeles/master
Make isort fixer recognize auto_pipenv flag
2021-01-08 10:43:34 +09:00
Horacio Sanson
4c454c96a9 Merge pull request #3390 from benknoble/fix-dafny-filename
dafny: include correct filename in lint results
2021-01-06 11:19:29 +09:00
Horacio Sanson
7e4c125d38 Merge pull request #3491 from Poulpatine/salt-lint
Add salt-lint support
2021-01-05 12:45:36 +09:00
Horacio Sanson
8c34c738ab Merge pull request #3517 from ttys3/master
fix: proper initialization options call in php intelephense
2021-01-05 10:53:34 +09:00
ttys3
b4d889b682 fix: proper initialization options call in php intelephense 2021-01-04 23:10:39 +08:00
toastal
3229d5aba4 Merge branch 'master' of https://github.com/dense-analysis/ale into dhall 2021-01-04 20:25:48 +07:00
Kevin Clark
6b97af680d Exclude grandfathered-in non-snakecased lints
Prior to #3448, several linters should have been failing the
custom-checks that look for non-snake-cased lint names. They weren't,
but now the bug that hid those is fixed. So to avoid breaking users, we
just exclude those from the check. Linters excluded:

  * clojure/clj_kondo.vim
  * elixir/elixir_ls.vim
  * go/golangci_lint.vim
  * swift/swiftformat.vim
2021-01-01 14:48:10 -08:00
Bartek thindil Jasicki
3fca5e73b6 Merge remote-tracking branch 'upstream/master' 2021-01-01 09:24:50 +01:00
Horacio Sanson
7fca451cf9 Merge pull request #3467 from fwy/bugfix-checkstyleRegexpNvimWin32
Fix checkstyle regexp pattern to work correctly in NVim on Windows
2020-12-28 15:22:25 +09:00
Yorick Peterse
8375ee2766 Add linter for Inko
This adds a linter for Inko (https://inko-lang.org/). The linter makes
use of Inko's own compiler, and a newly introduced --check flag to only
check for errors; instead of also compiling source code.
2020-12-23 16:50:45 +01:00
Manoel Brunnen
02255dd967 Add tests for -imacros C flag 2020-12-21 15:07:11 +01:00
toastal
9c7e1fe4dd merging master 2020-12-21 10:26:09 +07:00
Bartek thindil Jasicki
8af805cefe Merge remote-tracking branch 'upstream/master' 2020-12-18 10:04:19 +01:00
Benjamin Binier
e358afdd9b Add salt-lint support 2020-12-17 09:19:19 +01:00
Horacio Sanson
f996ede599 Merge pull request #3403 from will/sorbetwatchman
Add Ruby sorbet option to enable watchman
2020-12-16 09:48:35 +09:00
Andrea Conti
6043eeb25a Fix test space bug 2020-12-12 00:41:05 +01:00
Andrea Conti
1f0cbc7dbd Fix space error in string concat 2020-12-12 00:37:14 +01:00
Andrea Conti
fa2186d95e Update Julia language server run command 2020-12-12 00:16:09 +01:00
Tomas Janousek
6d7cff9c00 codefix: Fix LSP MenuCallback invocation (E119, not enough args) 2020-12-05 15:29:25 +00:00
Bartek thindil Jasicki
b85207d524 Merge remote-tracking branch 'upstream/master' 2020-12-04 09:45:06 +01:00
D. Ben Knoble
730222bcd8 fix blank line issue (???) 2020-11-30 13:51:15 -05:00
D. Ben Knoble
7e12be0c64 Merge remote-tracking branch 'origin/master' into fix-swipl
* origin/master: (40 commits)
  fix: correct suggested filetype for yamlfix
  feat: add yamlfix fixer
  Use _config for LSP config options
  Add support for R languageserver (#3370)
  Fix 3103 - add shellcheck shell directive detection. (#3216)
  Added the Vundle command in installation instructions (#3400)
  Adds support for Tlint - A Tighten Opinionated PHP Linter (#3291)
  Add php phpcbf options (#3383)
  Use has('gui_running') instead of has('gui')
  Close #2727 - Add a hover-only setting for balloons
  Fix #3332 - Modify everything for rename/actions
  Add a missing blank line in documentation
  Add luafmt fixer (#3289)
  #3442 Fix code fix clangd issue
  Close #1466 - Add GVIM refactor menu support
  Look for node packages in .yarn/sdks as well
  Update documentation for code actions and rename
  cmp forwards, and reverse the code actions
  Support for LSP/tsserver Code Actions (#3437)
  Move the test for buffer-local variables
  ...
2020-11-30 13:42:21 -05:00
D. Ben Knoble
303b89a6b4 add tests 2020-11-30 13:40:57 -05:00
D. Ben Knoble
3f01cc247c dafny: add a timeLimit option and message-parsing 2020-11-30 13:28:04 -05:00
Moritz Röhrich
d9b74caf43 hadolint: Recognize message type
Hadolint is in the process of adding the severity of a lint rule to the
commandline output: https://github.com/hadolint/hadolint/pull/501

This change utilizes that to show the severity in vim.
2020-11-29 15:09:47 +01:00
Horacio Sanson
03b6978a27 Merge pull request #3381 from andreypopp/gofmt-stding-stdout
Use stdin/stdout to communicate with gofmt
2020-11-29 18:59:48 +09:00
Kevin Clark
84c95aff9b Restore ls -v flag to check-toc 2020-11-28 09:44:19 -08:00
Kevin Clark
65b09cfa9d Restore use of grep in check-toc 2020-11-28 09:20:50 -08:00
Kevin Clark
6b0250a843 Use akevinclark/ale for the updated docker image 2020-11-28 09:05:06 -08:00
Kevin Clark
d52dce2e6f Use docker image for custom-check scripts
NOTE: The custom-linting-rules test fails due to the following (legit)
warnings:

  ale_linters/clojure/clj_kondo.vim:29 Use snake_case names for linters
  ale_linters/elixir/elixir_ls.vim:15 Use snake_case names for linters
  ale_linters/go/golangci_lint.vim:54 Use snake_case names for linters
  ale_linters/swift/swiftformat.vim:56 Use snake_case names for linters

The message wasn't getting printed because docker was explicitly only
being asked to connect stdout (ignoring stderr). Unclear yet why the
error code wasn't getting bubbled up.
2020-11-28 08:26:13 -08:00
Kevin Clark
e300a48e13 Fix test/script/check-supported-tools-tables 2020-11-28 08:23:06 -08:00
Kevin Clark
469af2a734 Fix TOC tests
Sort order is slightly different than the headings
2020-11-28 07:55:35 -08:00
Kevin Clark
99f1874e86 Add non-busybox grep/sed to Dockerfile
Tests need extended regexes from sed and --exclude from grep.
2020-11-28 07:51:02 -08:00
Kevin Clark
f72e60c12a Fix check-supported-tools-tables check
sed wasn't using -E, so '|' wasn't being handled properly. Seems likely
that's sed-implementation specific, so now it runs through docker's sed
to support portability.
2020-11-27 20:32:51 -08:00
Bartek thindil Jasicki
09b8cc97de Merge remote-tracking branch 'upstream/master' 2020-11-27 13:38:24 +01:00
Horacio Sanson
1365dce921 Merge pull request #3461 from lyz-code/feat/add-yamlfixer
feat: add yamlfix fixer
2020-11-27 16:02:33 +09:00
fwy
0a2ad516d4 Fix regexp pattern to work correctly in nvim and vim on windows and linux 2020-11-26 15:29:23 -06:00
Lyz
12eb8d1523 fix: correct suggested filetype for yamlfix 2020-11-26 12:42:50 +01:00
Ivor Peles
ce3d891bed Use better string comparison operators in isort fixer 2020-11-25 17:57:40 -05:00
Ivor Peles
713e53e3f6 Ensure isort / pipenv test conforms to ALE coding standards 2020-11-25 17:51:27 -05:00
Ivor Peles
340e966055 Fix comparison operator 2020-11-25 17:34:03 -05:00
Lyz
c69d696e1b feat: add yamlfix fixer 2020-11-25 01:21:53 +01:00
Gonzalo Quero
7e9d4fbfc8 refactor: Move test to the right file 2020-11-23 10:21:09 +00:00
Gonzalo Quero
491ceacb64 fix: Use proper CdPath function in test 2020-11-23 10:08:00 +00:00
Gonzalo Quero
05d5cc4988 chore: Document config_file variable 2020-11-23 10:08:00 +00:00
Gonzalo Quero
7d8275daf5 chore: Add Elixir Credo tests 2020-11-23 10:08:00 +00:00
Gonzalo Quero
433b23be17 feat: Add optional configuration file for Credo 2020-11-23 10:08:00 +00:00
Ivor Peles
d27a3f453c Ignore executable check when executable is pipenv 2020-11-21 19:24:20 -05:00
Ivor Peles
6efca486e8 Add test for isort with auto_pipenv flag(s) 2020-11-21 19:24:20 -05:00
Ivor Peles
ae86d10e48 Set default value for python_isort_auto_pipenv 2020-11-21 19:24:20 -05:00
Ivor Peles
64471e6ea8 Document ale_python_isort_auto_pipenv option 2020-11-21 19:24:19 -05:00
Ivor Peles
373ffa0f31 Use pipenv isort executable when python_auto_pipenv = 1 2020-11-21 19:24:19 -05:00
w0rp
681a6e371d Use _config for LSP config options 2020-11-21 20:58:34 +00:00
Eric Zhao
9692c0c64c Add support for R languageserver (#3370) 2020-11-21 20:56:38 +00:00
Horacio Sanson
5458a1b291 Fix 3103 - add shellcheck shell directive detection. (#3216)
* Fix 3103 - add shellcheck shell directive detection.

Searches for shellcheck shell directive to detect dialects for scripts
that do not have shebang.

* Change order of detection of shellcheck dialect

In a situation where the filetype can be wrong (example: something.sh
which is written in bash dialect) and has no hash-bang (since it is
meant to be sourced) then the override specified within the script will
be ignored.

It probably is the most right thing to do if the script author has added
a specific directive; it should trump everything else.

Co-authored-by: Horacio Sanson <horacio@allm.inc>
Co-authored-by: Dino Korah <dino.korah@redmatter.com>
2020-11-21 20:49:31 +00:00
w0rp
b4550f361b Merge pull request #3409 from lyz-code/feat/add-autoimport-support
feat: add autoimport fixer
2020-11-21 20:45:51 +00:00
Gabriel Petrovay
b09ccc12c3 Added the Vundle command in installation instructions (#3400) 2020-11-21 20:32:58 +00:00
Jose Soto
e1184e31f6 Adds support for Tlint - A Tighten Opinionated PHP Linter (#3291)
Co-authored-by: w0rp <w0rp@users.noreply.github.com>
2020-11-21 20:29:33 +00:00
w0rp
96428425fe Merge pull request #2903 from davidtwco/ormolu-fixer
Add ormolu fixer.
2020-11-21 20:25:13 +00:00
Dale Jung
2873be2d6a Add php phpcbf options (#3383)
* Taken from phpcs. add add_php_phpcbf_options #3382
* Updated docs for php_phpcbf_options #3382
* Added tests #3382
2020-11-21 20:19:02 +00:00
w0rp
d1246ea8d5 Merge pull request #3380 from rgossiaux/patch-1
Fix typo in ale-python.txt
2020-11-21 20:17:35 +00:00
w0rp
2e91f0e689 Use has('gui_running') instead of has('gui') 2020-11-21 20:16:32 +00:00
w0rp
a139599d39 Close #2727 - Add a hover-only setting for balloons 2020-11-21 20:12:09 +00:00
w0rp
06e7f2195e Fix #3332 - Modify everything for rename/actions
ALE now just modifies every open buffer for rename and actions, and sets
up a one-time use BufEnter event to reload buffers that are changed so
you don't have to think about what to do with changed buffers.
2020-11-21 19:00:53 +00:00
w0rp
b8aaff2cf7 Merge pull request #3358 from lukaswozniak/master
Improves fixer performance for large buffers
2020-11-21 16:40:29 +00:00
w0rp
342e5af4e3 Add a missing blank line in documentation 2020-11-21 16:20:02 +00:00
w0rp
e4bfcb44b3 Merge pull request #3357 from creativenull/feat-php-intelephense
feat: add intelephense support for php
2020-11-21 16:18:20 +00:00
w0rp
edd96f4414 Merge pull request #3354 from rphln/collapse-whitespaces
Collapse spaces and lines in the completion menu.
2020-11-21 16:16:08 +00:00
w0rp
d23c9125c5 Merge pull request #3352 from arthrarnld/patch-1
Fix wording in Rust doc
2020-11-21 16:13:24 +00:00
w0rp
c10e807492 Fix handling of ranges at file end. (#3344) 2020-11-21 16:03:39 +00:00
zandr
e5d16caebe Add luafmt fixer (#3289) 2020-11-21 15:59:50 +00:00
w0rp
8e28de142a Merge pull request #3292 from dmitrivereshchagin/add-elvis-handler-for-erlang
Add Elvis handler for Erlang
2020-11-21 15:56:50 +00:00
w0rp
df3163223f Merge pull request #3282 from zanona/master
fix(ale_linters/phpcs): add support for multiline error messages
2020-11-21 15:36:22 +00:00
w0rp
9f2215d69b Merge pull request #3435 from myobie/yarn-berry
For linters/tserver and handlers/eslint: look for node packages in .yarn/sdks as well
2020-11-21 15:33:55 +00:00
Dalius Dobravolskas
81d16823a7 Settings to control suggestions. 2020-11-21 15:49:42 +02:00
Dalius Dobravolskas
17c0c3c731 Test fix. 2020-11-21 15:49:42 +02:00
Dalius Dobravolskas
c098a07d67 Tests added. 2020-11-21 15:49:41 +02:00
Dalius Dobravolskas
2ab46d4b8e Show tsserver hints/suggestions in Ale. 2020-11-21 15:49:41 +02:00
Dalius Dobravolskas
d0b5909fd8 #3442 Fix code fix clangd issue 2020-11-21 01:27:27 +00:00
w0rp
7c04ee5c20 Close #1466 - Add GVIM refactor menu support
Code actions and ALERename now appear in the right click context menu
for GVim by default.
2020-11-21 01:18:27 +00:00
Bartek thindil Jasicki
f156548c16 Merge remote-tracking branch 'upstream/master' 2020-11-20 10:11:02 +01:00
Ben Linsay
ddfc43e774 pass lsp intialization_options to rust-analyzer
fixes #3350
2020-11-18 22:22:16 -05:00
Nathan Herald
b74827de99 Look for node packages in .yarn/sdks as well 2020-11-17 17:12:04 +01:00
w0rp
48fe0dd4f6 Update documentation for code actions and rename 2020-11-14 10:41:51 +00:00
w0rp
e9140c740b cmp forwards, and reverse the code actions 2020-11-14 10:17:02 +00:00
Dalius Dobravolskas
01800a23ad Support for LSP/tsserver Code Actions (#3437)
* Added tsserver and LSP code action support.
* tsserver refactors support added.
* Handling special case when new text is added after new line symbol.
* ale#code_action#ApplyChanges simplified.
* Initial attempt on LSP Code Actions.
* workspace/executeCommand added.
* Some null checks added.
* Add last column to LSP Code Action message.
* Pass diagnostics to LSP code action.

Previously ApplyChanges code was applied from top-to-bottom that required 
extra parameters to track progress and there was bug. I have changed code
to bottom-to-top approach as that does not require those extra parameters
and solved the bug.

Tested with typescript-language-server and it is working.
2020-11-14 10:15:17 +00:00
toastal
42e4b14861 Merge branch 'master' of github.com:dense-analysis/ale into dhall 2020-11-14 15:03:26 +07:00
Bartek thindil Jasicki
01b661ea25 Merge remote-tracking branch 'upstream/master' 2020-11-06 13:31:59 +01:00
Horacio Sanson
1ec573bf0d Merge pull request #3427 from lifecrisis/sh-buffer-vars
Check for Vim's shell type buffer variables before falling back to the file type
2020-11-05 08:37:15 +09:00
Manoel Brunnen
96d8415946 Add -imacros to C flags 2020-11-03 23:10:15 +01:00
Jason Franklin
31b7a2de41 Move the test for buffer-local variables
The "ale#handlers#sh#GetShellType()" function currently falls back
to the file type without checking for buffer-local variables first.
This causes the function to return "sh" even when a script is known
by Vim to be a script of a more specific type (e.g., "bash").

The "ale#handlers#shellcheck#GetDialectArgument()" function then
erroneously uses this type even though a more fitting type should be
used instead.  Files without a "#!" line will be of type "sh" even
though they may have a ".bash" suffix.

This commit fixes the problem by checking for buffer-local shell
type variables (set by Vim) before falling back to the file type.
2020-11-02 10:59:16 -05:00
Jason Franklin
73632312c2 Use the proper term for the "#!" line 2020-11-02 10:46:56 -05:00
Jason Franklin
6c22936303 Remove a noise comment 2020-11-02 10:46:28 -05:00
pinicarus
db96b00720 Merge branch 'custom-erlc-executable' 2020-11-01 11:45:36 +01:00
cyy
a49f664aea chang fishindent to fish_indent 2020-10-31 14:01:08 +08:00
cyy
194660660d update url 2020-10-31 14:01:08 +08:00
cyy
9d1a71a5cb add doc and test 2020-10-31 14:01:08 +08:00
cyy
983c7e8805 add fish_indent fixer 2020-10-31 14:01:08 +08:00
pinicarus
62f2c6d326 test(erlang/erlc): simplify matches 2020-10-28 12:58:15 +01:00
pinicarus
7d69cdf4ad test(erlang/erlc): make quotes optional in matches 2020-10-28 12:51:38 +01:00
pinicarus
15f44933c2 feat(erlang/erlc): add option for custom executable 2020-10-28 12:38:28 +01:00
Lyz
513e6ee972 feat: add autoimport fixer 2020-10-23 18:53:38 +02:00
David Wood
b496c4b164 Add ormolu fixer.
This commit adds a fixer for the Haskell language, ormolu
(https://github.com/tweag/ormolu).

Signed-off-by: David Wood <david@davidtw.co>
2020-10-23 11:48:21 +01:00
Will Leinweber
cafe8621e2 Add Ruby sorbet option to enable watchman 2020-10-20 23:13:53 -07:00
StephenWithPH
af5a8e1abf add sbt as a suggested filetype for scalafmt fixer 2020-10-19 09:47:54 -07:00
Bartek thindil Jasicki
b84d41f9ea Merge remote-tracking branch 'upstream/master' 2020-10-16 17:51:08 +02:00
w0rp
557a1ed5da Make the two nearly identical Swift tools easier to distinguish 2020-10-15 22:02:27 +01:00
w0rp
477eb89793 #3332 Implement :ALERename! for ignoring errors
:ALERename! now ignores errors for files that cannot be modified, and
modifies all other files.
2020-10-15 21:56:21 +01:00
w0rp
f384d61c3d Fix sorting of supported tools 2020-10-15 21:24:27 +01:00
ecly
f125c11faa Update FindProjectRootIni with poetry.lock and pyproject.toml 2020-10-15 13:35:47 +02:00
Bartek thindil Jasicki
c4eb41f091 Merge remote-tracking branch 'upstream/master' 2020-10-09 12:54:48 +02:00
D. Ben Knoble
160af49450 update tests 2020-10-08 12:02:30 -04:00
D. Ben Knoble
47da7483d8 Merge remote-tracking branch 'origin/master' into fix-swipl
* origin/master:
  Add tests for maven.vim file
  Fix grammatical error in doc
  Add maven helper file; use maven wrapper if available instead of global 'mvn' executable
  fix lint, fix variable semantics and update tests
  bibclean: update matchlist reges for bibclean > v2.11.4
  Update rubocop_auto_correct_all tag
2020-10-08 11:55:39 -04:00
D. Ben Knoble
c37cc1c8a3 dafny: include correct filename in lint results
Results can come from included files, not just the current buffer.
2020-10-08 11:54:56 -04:00
Andrey Popp
96ec33e6d6 Use stdin/stdout to communicate with gofmt 2020-10-03 18:44:19 +03:00
pinicarus
d7557ef9be refactor(erlang/dialyzer): simplify option handling 2020-10-03 10:16:04 +02:00
rgossiaux
9a8ab764d5 Fix typo in ale-python.txt 2020-10-02 22:51:54 -04:00
Horacio Sanson
b91c6c2edd Merge pull request #3374 from fenuks/maven_helper
Use maven wrapper if available
2020-10-02 20:07:28 +09:00
fenuks
4466c47990 Add tests for maven.vim file 2020-10-02 10:03:14 +02:00
Bartek thindil Jasicki
bd1b671e82 Merge remote-tracking branch 'upstream/master' 2020-10-02 09:36:32 +02:00
pinicarus
ef145bda1c docs(erlang/dialyzer): change wording a bit 2020-10-01 19:20:31 +02:00
D. Ben Knoble
3410c1b1e2 prolog/swipl: add blank line after call
Though I do not see this specified or followed anywhere else
2020-10-01 13:18:34 -04:00
D. Ben Knoble
81b92bcbfa prolog/swipl: add test for new format 2020-10-01 13:12:43 -04:00
D. Ben Knoble
e32d5fc03d prolog/swipl: address linter feedback
This actually caught a bug where I forgot to rename the function
2020-10-01 13:12:18 -04:00
D. Ben Knoble
abe1440268 prolog/swipl: update error format for new version
A recent(?) update to swipl changed the error format from

  Warning: some.pl:2:
              Singleton variables: [Y]

to

  Warning: some.pl:2:
  Warning:    Singleton variables: [Y]

The old error handler doesn't report the correct line numbers and
messages on the old format.

I've chosen to add a function that covers the second case and detect it,
rather than rewrite the current function. This way, both versions should
be able to live together.

---

Example file that demonstrates the issue (some.pl above):
```
% vim: ft=prolog
ii(X, Y) :- X.
```

---
2020-10-01 12:49:53 -04:00
Horacio Sanson
2d3ed956b9 Merge pull request #3375 from isaif/fix-doc
Fix grammatical error in doc
2020-10-01 20:44:35 +09:00
isaif
7857098cb0 Fix grammatical error in doc 2020-10-01 16:23:49 +05:30
pinicarus
ac3c0c093a feat(erlang/dialyzer): add custom options passing 2020-09-30 23:16:50 +02:00
fenuks
7186b0437f Add maven helper file; use maven wrapper if available instead of global 'mvn' executable 2020-09-30 00:11:57 +02:00
Horacio Sanson
96dcbd1f20 Merge pull request #3367 from bratekarate/update-bibclean
bibclean: update matchlist reges for bibclean > v2.11.4
2020-09-28 10:53:19 +09:00
bratekarate
56242cb874 fix lint, fix variable semantics and update tests 2020-09-26 17:09:54 +02:00
Horacio Sanson
94927195ee Merge pull request #3284 from resong/bug/duplicateTag
Update ale_ruby_rubocop_auto_correct_all tag
2020-09-26 14:50:36 +09:00
bratekarate
5f2aeba8cc bibclean: update matchlist reges for bibclean > v2.11.4 2020-09-26 03:21:26 +02:00
Marcus Zanona
e089969404 fix(ale_linters/phpcs): add support for multiline error messages 2020-09-25 11:25:24 +02:00
toastal
48cbf1cb36 dhall alias 2020-09-25 08:26:17 +07:00
Łukasz Woźniak
6bebdcfa30 Improves fixer performance for large buffers 2020-09-18 12:59:27 +02:00
Arnold Chand
f8351c1b22 fix: test: mkdir should create if it doesn't exist 2020-09-17 09:58:45 -04:00
Arnold Chand
8a855e3e64 fix: tests 2020-09-17 09:35:06 -04:00
Arnold Chand
fec6b63494 feat: add intelephense support for php 2020-09-17 08:06:11 -04:00
Raphael Nepomuceno
9769565f88 Collapse spaces and lines in the completion menu. 2020-09-14 12:11:16 -03:00
Arthur Arnold
63a528eac2 Fix wording in Rust doc 2020-09-14 07:57:22 -03:00
toastal
ed47008710 addressing missing docs + cleaning up older Dhall files 2020-09-14 10:13:11 +07:00
toastal
b32954a46c Merge branch 'master' into dhall 2020-09-14 08:54:07 +07:00
Bartek thindil Jasicki
1781b1eab0 Merge remote-tracking branch 'upstream/master' 2020-09-11 10:38:36 +02:00
w0rp
08295ce174 Bump the ALE version to 3.0.0 2020-09-09 22:06:38 +01:00
w0rp
4ddf742643 Close #2522 - Check pylint on the fly
Newer versions of pylint will now check your code as you type. Older
versions will still only check the file on disk.

Co-authored-by: Oliver Wiegers <oliver.wiegers@gmail.com>
2020-09-09 21:45:15 +01:00
w0rp
78fa93bd55 Add tests for covering the coming Vint version 2020-09-09 20:34:27 +01:00
w0rp
62fd83f1dd Merge pull request #3108 from timbedard/vint-add-stdin
Add stdin option for supported vint versions
2020-09-09 20:15:54 +01:00
Christian Keil
d1f48e5ede Remove unnecessary length check. 2020-09-09 17:49:21 +02:00
Christian Keil
d3932c0242 Fix format linting error. 2020-09-09 17:44:09 +02:00
Christian Keil
20f6bebdf2 Fix handling of ranges at file end. 2020-09-09 17:30:41 +02:00
w0rp
6a367e44aa Close #3003 - Show ignored linters in :ALEInfo 2020-09-08 22:19:13 +01:00
w0rp
7d90ff56d9 Close #3333 - Add an ALECompletePost event
Add an `ALECompletePost` event along with everything needed to make it
useful for its primary purpose: fixing code after inserting completions.

* `ALEFix` can now be called with a bang (`!`) to suppress errors.
* A new `ALELintStop` command lets you stop linting, and start it later.
2020-09-08 21:40:10 +01:00
toastal
f07ecbc579 merge master -- apparently someone else added dhall? 2020-09-08 10:08:00 +07:00
w0rp
b4b75126f9 Fix a completion error 2020-09-07 10:01:18 +01:00
Horacio Sanson
fc2a34e9d8 Merge pull request #3337 from sodapopcan/patch-1
Fix typo
2020-09-07 16:30:42 +09:00
Horacio Sanson
8950f6b812 Merge pull request #3334 from remi6397/bugfix/asciidoc-languagetool-typo
Fix asciidoc languagetool integration
2020-09-07 15:37:04 +09:00
Andrew Haust
417761b415 Fix typo 2020-09-07 02:24:39 -04:00
w0rp
c36053d4cc Close #3268 - Implement :ALEImport
A new command, `:ALEImport`, has been added, which lets you import words
at your cursor if a completion provider can provide a completion for
that word which includes some additional text changes.
2020-09-06 22:37:37 +01:00
Dmitri Vereshchagin
49718e0ec6 Add Elvis handler for Erlang
[Elvis][1] is an Erlang style reviewer.

[1]: https://github.com/inaka/elvis
2020-09-06 12:40:28 +03:00
w0rp
5bc49d2047 Fix #3183 - Escape filename characters from LSP/tsserver 2020-09-05 21:46:39 +01:00
w0rp
152b2cb691 Clean up embertemplatelint code
Alias ember-template-lint to embertemplatelint so users can use either
string to enable the linter.
2020-09-05 19:06:07 +01:00
Jeremiasz Nelz
0b55098bd0 Fix asciidoc languagetool integration 2020-09-04 22:52:29 +02:00
Bartek thindil Jasicki
c78be86103 Merge remote-tracking branch 'upstream/master' 2020-09-04 13:46:11 +02:00
w0rp
844febb9fb Fix #3322 - Apply rename changes correctly 2020-09-04 09:37:33 +01:00
Cyrille David
d4a14746cd feat(template-lint): Read from stdin (#2622)
* ember-template-lint: Lint from stdin
  * This feature has recently been implemented in ember-template-lint.
* Refactor ember-template-lint executable
* Fallback on a temporary file for old template-lint

Co-authored-by: w0rp <w0rp@users.noreply.github.com>
2020-08-31 09:26:33 +01:00
w0rp
ac2100d410 Fix flake8 cd logic for invalid options 2020-08-31 09:12:36 +01:00
w0rp
cdaeca452e Add tests for \r removal 2020-08-31 09:01:44 +01:00
w0rp
31942c99b9 Merge pull request #2858 from kalekseev/patch-flake8
Provide configuration option to run flake8 from project root.
2020-08-31 09:01:16 +01:00
w0rp
4a91f92f28 Merge pull request #3078 from jgehrig/jg-issue2958
Issue 2958: Addtional ^M characters on Windows
2020-08-31 08:31:44 +01:00
Konstantin Alekseev
1462de6685 Run flake8 from project root by default.
Option `per-file-ignores` was introduced in flake8 version 3.7.0.
It allows to ignore specific errors in specific files using glob syntax.
For example `per-file-ignores = src/generated/*.py:F401` will
ignore `F401` error in all python files in `src/generated`.
Thus ale has to run flake8 from project root where .flake8 config
is placed otherwise glob won't match linted file.
2020-08-30 22:56:10 +03:00
w0rp
0989da4a38 Merge pull request #3194 from maxwell-k/vint
vim/vint: show policy name
2020-08-29 20:54:09 +01:00
w0rp
33202a39f5 #2107 - Recommend <C-c> instead, which avoids autocmd functions 2020-08-29 20:45:45 +01:00
w0rp
303bed6ec1 #2107 - Document completion fallbacks and insert-completion trick 2020-08-29 20:40:50 +01:00
w0rp
25b572b3bf Close #3205 - Avoid inserting completions by default 2020-08-29 17:36:25 +01:00
w0rp
6e2e51b154 Fix #2971 - Disable automatic completion while 'paste' is active 2020-08-29 17:27:53 +01:00
w0rp
6888ca46a7 Fix retrying on some test failures 2020-08-29 16:32:17 +01:00
w0rp
f1ecc2e068 Fix psalm options. Retry on some test failures 2020-08-29 16:31:47 +01:00
w0rp
7e0cdb53ec Fix #3247 - Use --always-make for make -n by default 2020-08-29 16:05:49 +01:00
w0rp
bc3a843e10 Add a missing augroup END line 2020-08-29 14:23:58 +01:00
w0rp
6b138b965d Merge pull request #3327 from Kimplul/master
Improved macro handling in gcc
2020-08-29 13:57:16 +01:00
Kimplul
d9a7d6bc23 Improved macro handling in gcc 2020-08-29 15:17:20 +03:00
w0rp
06264c264f typo 2020-08-29 12:35:40 +01:00
w0rp
dd9ad9b5be #3319 - Try to modify buffers later for ALEFix 2020-08-29 12:33:17 +01:00
Bartek thindil Jasicki
0de847a8e1 Merge remote-tracking branch 'upstream/master' 2020-08-29 10:42:25 +02:00
w0rp
7d4ce4e6aa Close #3325 - Apply new formatting where possible 2020-08-28 19:50:36 +01:00
w0rp
3d5a2690ce #3325 - ale#path#BufferCdString now generates %s:h 2020-08-28 17:46:43 +01:00
w0rp
34e409ea21 Close #3285 - lint_file is now dynamic
`lint_file` can now be computed dynamically with a callback function,
which can return a deferred result, as per `ale#command#Run`. This
allows linters to dynamically switch between checking files on disk,
or checking code on the fly.

Some tests have been fixed on Windows.
2020-08-28 14:02:05 +01:00
w0rp
b8c0ac2e61 Close #3309 - Add b:ale_lint_delay 2020-08-28 09:54:43 +01:00
w0rp
6874120405 Fix #3323 - Set default for g:ale_filename_mappings 2020-08-28 09:33:09 +01:00
w0rp
36e959a466 Add sql-lint to supported tools 2020-08-28 09:25:40 +01:00
w0rp
47fdc02fc7 Merge pull request #2988 from joereynolds/master
Add sql-lint as linter
2020-08-28 08:43:10 +01:00
w0rp
369e3876f0 #3324 - Enable rls by default 2020-08-28 08:23:10 +01:00
Sorin Iclanzan
80bd2e18d6 Set prettier working directory to where .prettierignore is (#3101)
Prettier does not use `.prettierignore` unless the current directory is the root where the `.prettierignore` file resides.

* Update Prettier tests
* Look for prettierignore to determine project root
2020-08-28 08:14:50 +01:00
w0rp
ecd7abecc0 Fix #3319 - Force modifications to buffers 2020-08-27 21:29:13 +01:00
w0rp
7545b18ba1 Fix #3318 - Escape macros when parsing C flags 2020-08-27 21:17:24 +01:00
w0rp
6d843715f3 Fix C flag parsing and tests on Windows 2020-08-27 20:18:13 +01:00
w0rp
6074720dc2 Mention --fast, and document running Windows tests locally 2020-08-27 19:39:16 +01:00
w0rp
af177d7825 #3318 Refactor C flag parsing to set up for quoting arguments 2020-08-27 19:33:43 +01:00
w0rp
719f3c62b0 #3266 - Catch echo visual selection errors 2020-08-27 13:57:20 +01:00
w0rp
5d3d33626c Merge pull request #3310 from pbrisbin/master
Add dhall-format as a Fixer
2020-08-27 13:39:30 +01:00
w0rp
571cff932d Label the test cases more clearly 2020-08-27 13:15:04 +01:00
w0rp
17605777d6 Fix #3317 - Parse -include from C flags 2020-08-27 13:05:50 +01:00
w0rp
66ff00c420 Fix #3316 - Repeat -relative for ALERepeatSelection 2020-08-27 12:41:07 +01:00
w0rp
f5aa0e8457 Fix #3307 - Handle compile_commands paths better
ALE now converts paths from compile_commands.json files into absolute
paths and prefers matching against absolute file and directory names for
determining which flags to use for files. As a result, parsing
compile_commands.json to determine flags should work for a lot more C
and C++ projects.
2020-08-27 11:44:35 +01:00
w0rp
686f42a2e1 Fix a typo 2020-08-27 09:18:10 +01:00
w0rp
c9377e9baf #3314 - Tell people how to make new plug mappings 2020-08-27 09:17:14 +01:00
w0rp
a955f5dfa8 #3312 - Just check if additionalTextEdits is non-empty 2020-08-27 08:57:12 +01:00
w0rp
396fba7cca Fix #3312 - Fix a false positive for auto imports
ALE was incorrectly detecting completion results from servers such as
rust-analyzer as wanting to add import lines when additionalTextEdits
was present, but empty.

Now ALE only filters out completion results if the autoimport setting is
off, and one of the additionalTextEdits starts on some line other than
the current line. If any additionalTextEdits happen to be identical to
the change from completion anyway, ALE will skip them.
2020-08-27 08:44:43 +01:00
patrick brisbin
447aea4af0 Add dhall-format as a Fixer
https://github.com/dhall-lang/dhall-lang
2020-08-25 09:34:34 -04:00
w0rp
3e2abe3f25 #2556 - Support modifiers for formatted filenames 2020-08-24 09:33:07 +01:00
Horacio Sanson
1a7366067a Merge pull request #3302 from khaveesh/master
latexindent: Run fixer from stdin instead of a temporary file
2020-08-24 09:16:35 +09:00
w0rp
33eb03ea71 Yes, try again to fix Windows tests 2020-08-23 20:19:22 +01:00
w0rp
d4583f1a63 Try to fix Windows tests again 2020-08-23 20:14:08 +01:00
w0rp
c0566db1d2 Try to fix Windows tests 2020-08-23 20:05:09 +01:00
w0rp
ba3dd0d027 Close #2556 - Support filename mapping
ALE now supports mapping files between different systems for running
linters and fixers with Docker, in virtual machines, in servers, etc.
2020-08-23 19:55:42 +01:00
Khaveesh N
76801743cf Fixed tests 2020-08-21 17:29:43 +05:30
Khaveesh N
4bece27bd4 refactor(Fixer): Change latexindent to read from stdin instead of temporary file
This is a better strategy as it avoids creating temporary files and the delay that follows
2020-08-21 17:19:22 +05:30
Bartek thindil Jasicki
62f07d820c Merge remote-tracking branch 'upstream/master' 2020-08-21 10:39:39 +02:00
w0rp
2b785688ea #3299 Merge gcc and clang into a cc linter
Users can easily be confused when they set some options for a C or C++
compiler, and another compiler is run with different options, which
still reports errors. To remedy this, the existing `gcc` and `clang`
linters have been replaced with a `cc` linter that will run either
compiler.

This is a breaking change for ALE v3.0.0.
2020-08-20 01:49:14 +01:00
awang
4d42ebc160 Keep -iframework if present in parsed C/C++ flags (#3057)
* Keep -iframework if present in parsed C/C++ flags
* Add test to make sure -iframework is parsed

Co-authored-by: Alex Wang <ts826848@gmail.com>
2020-08-20 00:09:02 +01:00
w0rp
90abb7e7ef Try to fix Windows tests again 2020-08-19 01:22:43 +01:00
w0rp
de7b0567b1 Try to fix tests on Windows 2020-08-19 01:10:33 +01:00
w0rp
361027eac6 Fix #3200 - Do not use -fstack-usage from parsed flags 2020-08-19 01:04:08 +01:00
w0rp
794224aafa #3056 Add tests for parsed C/C++ -std flag handling 2020-08-19 00:47:39 +01:00
w0rp
92cada9913 Merge pull request #3056 from ts826848/remove-ale-std-if-already-in-GetCFlags
[WIP] Avoid overriding parsed C/C++ -std=* flag
2020-08-19 00:21:22 +01:00
w0rp
e27d4377b5 Merge pull request #3178 from sudobash1/expand_at
Fixes #3092 - Implement loading `@file` c arguments
2020-08-19 00:15:34 +01:00
w0rp
f8b3a43aab Merge pull request #3229 from hsanson/3220-enable-languagetool-for-asciidoc
Enable languagetool for asciidoctor files.
2020-08-18 23:22:01 +01:00
w0rp
5eda1df0a9 Remove features deprecated in previous versions 2020-08-18 23:03:43 +01:00
w0rp
4df352eee5 Fix #3294 - Fix hover off by 1, handle LSP server crashes 2020-08-18 01:48:07 +01:00
w0rp
bc6304bdb0 Merge pull request #3007 from klaaspieter/swift-format
Add Apple's swift-format as a linter
2020-08-17 23:37:23 +01:00
w0rp
ac56574b55 Merge pull request #3046 from hsanson/2816-fix-standard-fix-doesnt-work
Fix 2816 - Standard fix does not work.
2020-08-17 21:44:19 +01:00
w0rp
6d33417b15 Merge pull request #2759 from kgrzywacz/master
credo now recognizes umbrella projects
2020-08-17 21:34:10 +01:00
w0rp
eb864730e2 Merge pull request #2906 from elebow/shelldetect-fall-back-to-filetype-if-no-hashbang
ShellDetect falls back to filetype if no hashbang (fixes #2886)
2020-08-17 21:29:16 +01:00
w0rp
514e5a8baa Merge pull request #2940 from davidsierradz/add-markdownlint-options
allow passing custom options to markdownlint
2020-08-17 10:21:36 +01:00
w0rp
cfda549056 Tell stale bot to wait longer before closing PRs 2020-08-17 10:20:41 +01:00
blyoa
d5c1d84230 Add remark-lint for a markdown fixer (#2836) 2020-08-17 10:14:38 +01:00
w0rp
5c778e1ae7 Make it easier to run tests locally
Certain tests could break if you ran them separately from other tests.
They have been patched.

`run-tests` now has a `--fast` option which runs tests with only the
fastest Vim version ALE tests with, and the custom checks.
2020-08-16 21:20:08 +01:00
Bartek thindil Jasicki
04bd84e914 Merge remote-tracking branch 'upstream/master' 2020-08-14 19:38:09 +02:00
Horacio Sanson
5ceda0164c Merge pull request #3288 from nibocn/master
fix(eclipselsp): Get jar file path failed
2020-08-14 13:49:09 +09:00
w0rp
5a4fad6172 Fix #2899 - Handle tsserver default import completion 2020-08-14 01:55:54 +01:00
w0rp
2b2403a20d Merge pull request #3144 from jamescdavis/dont_append_newline_when_noeol
don't append a newline to temp file when buffer is noeol and nofixeol is set
2020-08-14 00:32:28 +01:00
w0rp
8151e3e8fa Merge pull request #2920 from ConradIrwin/prettier-standard-stdin
Fix prettier_standard to respect the configuration file
2020-08-14 00:27:41 +01:00
w0rp
94a968ef39 Merge pull request #2924 from patrick96/vlog-filename
verilog: Add filename to vlog linter output
2020-08-14 00:20:57 +01:00
toastal
167e2e7750 tests 2020-08-14 00:31:49 +07:00
toastal
f1080a2bbe Dhall language support (fixes #2820) 2020-08-14 00:31:47 +07:00
w0rp
ed69b074ba Merge pull request #3164 from mathstuf/cargo-separate-target-dir
rust/cargo: add support for a custom target directory
2020-08-13 16:29:19 +01:00
NiBo
a4f70163eb fix(eclipselsp): Get jar file path failed
Error: Unable to access jarfile
2020-08-13 23:12:12 +08:00
Ben Boeckel
506a8532d0 rust/cargo: add support for a custom target directory
This can avoid having to wait for ALE or ALE being blocked on other
cargo actions within the same crate.
2020-08-13 10:22:33 -04:00
w0rp
0b77766337 Merge pull request #3010 from kevinoid/ps1-powershell
Alias ps1 filetype to powershell
2020-08-13 13:45:49 +01:00
w0rp
979062235a Fix #3286 - Fix duplicate tags 2020-08-13 13:44:22 +01:00
Horacio Sanson
8e6c7bff9a Fix 1695 - Change rubocop fixer to use stdin (#3230)
* Fix 1695 - Change rubocop fixer to use stdin
* Update test_rubocop_fixer_callback.vader

Co-authored-by: Horacio Sanson <horacio@allm.inc>
Co-authored-by: w0rp <w0rp@users.noreply.github.com>
2020-08-13 11:25:07 +01:00
w0rp
34adb997c6 Configure the stale bot 2020-08-13 02:37:54 +01:00
w0rp
64d4c951ae Fix #3281 - Stop CursorHold flickering 2020-08-13 02:22:21 +01:00
Rebecca Song
80b93a3606 Update rubocop_auto_correct_all tag 2020-08-12 20:04:51 -04:00
w0rp
7c4b1d8444 Close #3274 - Handle basic LSP markdown formatting 2020-08-12 22:11:45 +01:00
Nihad Abbasov
d5912b53dd Restore old behavior of ALEFix command for Rubocop (#3237)
* Restore old behavior of ALEFix command for Rubocop

Since RuboCop 0.60 ALEFix command stopped to fix all found offenses. This change restores the 
previous behavior by allowing rubocop to fix all detected offenses.

* Fix tests
* Allow to configure auto-correct option for Rubocop
2020-08-12 14:04:54 +01:00
w0rp
d3f410b6f7 Fix #1608 - Treat .h as C++ files for C++ clang-tidy 2020-08-10 02:33:50 +01:00
w0rp
2237f9b462 #2919 Use compile_commands.json for headers 2020-08-10 02:14:23 +01:00
w0rp
05210846e4 Fix #3278 - Handle UTF-8 in URI encoding/decoding 2020-08-10 02:03:41 +01:00
w0rp
bf3c3e9438 #3276 - Update README for make -n changes 2020-08-09 20:13:21 +01:00
w0rp
9e1f511003 #3276 - Disable make -n by default again 2020-08-09 20:08:42 +01:00
w0rp
affeed7a87 Enable C flag parsing by default
The options for parsing `make -n` and `compile_commands.json` flags
are now enabled by default, so people can start getting better flags
for their files by default.

`compile_commands.json` flags are now preferred over `make -n` results,
to make the options work better by default.
2020-08-09 04:23:32 +01:00
w0rp
681ca5fee8 Explain how to use ALE and coc.nvim together 2020-08-09 03:18:21 +01:00
w0rp
2ed09f51b6 Move :ALEInfo higher up in the FAQ 2020-08-09 02:50:25 +01:00
w0rp
6d502233d8 Close #3267 - Add a general autoimport setting 2020-08-09 02:32:47 +01:00
w0rp
8bfb5c6407 Merge pull request #2849 from DonnieWest/excludeTsserverWarnings
Allow the user to remove warnings from completions
2020-08-09 01:32:27 +01:00
w0rp
2d174db5b2 Merge pull request #3107 from daliusd/tslintfix
Fix tslint fixer not working issue (temporary file not found)
2020-08-07 19:52:18 +01:00
Bartek thindil Jasicki
973c4ea053 Merge remote-tracking branch 'upstream/master' 2020-08-07 17:43:11 +02:00
w0rp
f741245f11 Fix #3273 - Handle missing keys in hover information 2020-08-07 12:34:45 +01:00
w0rp
388049dbea Try to fix gopls tests again 2020-08-07 12:30:50 +01:00
w0rp
96d525a287 Try to fix gopls tests 2020-08-07 12:27:26 +01:00
w0rp
b9a1c0e6d3 Fix order of supported-tools for pyright 2020-08-07 12:24:59 +01:00
w0rp
97d887ae22 It's the Current Year 2020-08-07 12:22:25 +01:00
w0rp
7cefc80f1b Fix a failing test 2020-08-07 12:21:22 +01:00
w0rp
19229e8e27 Close #2472 - Add support for pyright 2020-08-07 12:16:13 +01:00
w0rp
9bdabce8df Fix #2907 - Handle dictionaries for capabilities 2020-08-07 10:54:38 +01:00
w0rp
667618b399 Merge pull request #3191 from mostfunkyduck/master
Fixes govet linter for go 1.13+, with tests
2020-08-07 08:54:17 +01:00
tsjordan-eng
f17b74679f fix cppcheck for 1.89+, and add column support (#3030)
* fix cppcheck for 1.89+, and add column support

In cppcheck 1.89 the output changed to be more like GCC. This commit
forces any version of cppcheck to output in that same format. This also
allows for ALE to pick up the linter's column information

* Add parameters to tests. Vader passes.

* Fix c cppcheck for v1.89
2020-08-06 20:50:44 +01:00
w0rp
4044196047 #2804 Add hdl-checker to supported tools 2020-08-06 13:24:20 +01:00
Andre Souto
5b3da60cea Adds hdl_checker LSP support (#2804)
* Added hdl_checker support
* Added hdl_checker tests

HDL Checker searches for files when no config file is found, which could lead to very long searches when the user is not really on a project setting
2020-08-06 13:20:54 +01:00
w0rp
711c90c523 Merge pull request #3123 from liskin/ccls-build-dir
ccls: Detect build dir and set compilationDatabaseDirectory
2020-08-06 13:12:56 +01:00
w0rp
cdd8d38e2f Fix #3266 Part 2: Fix Harder 2020-08-06 09:36:00 +01:00
w0rp
fa3a927ca3 Fix #3266 - Truncate hover messages for LSP too 2020-08-05 13:46:08 +01:00
w0rp
1bd7b3e4ad Merge pull request #3196 from jeremija/autoimport-langserver-pr
Add autoimport and rename support for langservers
2020-08-05 13:35:48 +01:00
w0rp
86d5cb81bd Use more American English 2020-08-04 20:11:49 +01:00
w0rp
acf892c4d1 #1532 - Display hover information on CursorHold 2020-08-04 20:11:49 +01:00
Horacio Sanson
316c7c7372 Merge pull request #3259 from sblask/support-markdownlint-rules-with-multiple-slashes
Support markdownlint rules with multiple slashes
2020-08-01 13:22:22 +09:00
Horacio Sanson
9894e92553 Merge pull request #3257 from jhlink/fix_astyle_config_detection_with_source
Fix Astyle Project Option Detection when Placed with Source Files
2020-08-01 13:21:16 +09:00
Bartek thindil Jasicki
9a9d12cf4f Merge remote-tracking branch 'upstream/master' 2020-07-31 07:56:28 +02:00
jhlink
e2d1e54eb5 doc: Meaningless comment to kick CI from hang 2020-07-30 21:54:41 -04:00
Horacio Sanson
fc7b4585e6 Merge pull request #3246 from lgmsantos/patch-1
Update ale-java.txt
2020-07-31 08:16:11 +09:00
Sebastian Blask
fbfeae0587 Support markdownlint rules with multiple slashes 2020-07-31 11:15:13 +12:00
Horacio Sanson
275b5248e5 Merge pull request #3258 from jmreicha/patch-3
bashate typo
2020-07-31 08:13:04 +09:00
jhlink
84a413350c fix: Replace hardcoded quotes with ale#Escape 2020-07-30 10:07:53 -04:00
Josh Reichardt
72f1d730fd Typo 2020-07-30 09:00:20 -05:00
jhlink
ac2ebafadd fix: Force add .astylerc in test_cpp_project 2020-07-30 09:58:14 -04:00
jhlink
ab6aed17ab test: Find .astylerc placed with src for astyle 2020-07-30 09:43:41 -04:00
jhlink
d49b06e030 fix: Find proj_options in same dir for astyle 2020-07-30 09:29:33 -04:00
Horacio Sanson
e03e24c091 Merge pull request #3253 from sblask/support-markdownlint-0.19.0-and-0.22.0
Support markdownlint 0.19.0 and 0.22.0
2020-07-30 09:45:13 +09:00
Sebastian Blask
7cada95683 Support markdownlint 0.19.0 and 0.22.0
Fixes #2965
2020-07-30 09:57:46 +12:00
Horacio Sanson
5338dbf680 Merge pull request #3231 from jhlink/add-astyle-for-c-formatting
Add astyle for C/C++ formatting
2020-07-29 22:08:46 +09:00
jhlink
cef64424ce style: Resolve lint issue 2020-07-29 01:52:36 -04:00
jhlink
428c5f94da fix: Use ALE to reliably find project options 2020-07-29 01:36:45 -04:00
jhlink
f4cff3bc06 test: Set empty values for astyle project_options 2020-07-28 23:29:19 -04:00
jhlink
7d40d0a16f chore: Distinguish test value name 2020-07-28 23:28:25 -04:00
jhlink
a9b2f6362d chore: Delete dead test code 2020-07-28 23:26:49 -04:00
jhlink
5377272d20 fix: Change _options to _project_options 2020-07-28 19:48:27 -04:00
jhlink
0e6578cf65 fix: Remove explicit calls to file path in astyle 2020-07-26 22:05:14 -04:00
jhlink
75723e4522 doc: Add C++ desc in astyle entry in registry 2020-07-26 22:05:10 -04:00
jhlink
028485b4de doc: Add ale_cpp_astyle_options in ale-cpp 2020-07-26 21:22:17 -04:00
jhlink
c38b2a6524 doc: Add ale_c_astyle_options in ale-c 2020-07-26 21:21:38 -04:00
jhlink
78295024e1 feat: Add project option file support for astyle 2020-07-26 21:11:37 -04:00
jhlink
b25bb64a4d feat: Use stdin/redirection for astyle 2020-07-26 20:51:41 -04:00
jhlink
a9799fe90e test: Add cpp test case for astyle 2020-07-25 21:25:11 -04:00
jhlink
b3ad7bb3d0 Merge branch into add-astyle-for-c-formatting 2020-07-25 20:38:21 -04:00
jhlink
f26b2e7f01 doc: Add astyle to ale-cpp-options in ale.txt 2020-07-25 20:38:15 -04:00
jhlink
4fc59ccace doc: Add astyle in c++ section in supported-tool 2020-07-25 20:38:12 -04:00
jhlink
9316b7b3f2 doc: Add astyle to c++ in supported lang & tools 2020-07-25 20:38:09 -04:00
jhlink
ee466de733 feat: Add astyle in c++ section in supported-tool 2020-07-25 20:35:28 -04:00
jhlink
2987ebcfae feat: Add astyle to c++ in supported lang & tools 2020-07-25 20:34:03 -04:00
jhlink
a2d172c457 doc: Add astyle to ale-cpp 2020-07-25 20:32:06 -04:00
jhlink
488df0fa41 feat: Add cpp to registry.vim 2020-07-25 20:22:10 -04:00
jhlink
076f9efbd9 feat: Add cpp support to astyle fixer 2020-07-25 20:20:47 -04:00
Luiz Gustavo
9fe208a01f Update ale-java.txt 2020-07-25 02:32:10 -03:00
Bartek thindil Jasicki
e06060a31f Merge remote-tracking branch 'upstream/master' 2020-07-24 10:38:29 +02:00
w0rp
68b484a49f Merge pull request #2914 from hsanson/2913-fix-checkstyle-config-with-options
Fix 2913 - checkstyle config file ignored.
2020-07-21 12:49:55 +01:00
w0rp
f31182beee Merge pull request #3060 from hsanson/345-update-javalsp-documentation
Fix 345 - update java language server docs.
2020-07-21 12:48:57 +01:00
w0rp
f4668c751f Merge pull request #3070 from hsanson/2732-add-bashate-support
Fix 2732 - Add bashate support
2020-07-21 12:47:33 +01:00
w0rp
70ab831001 Merge pull request #3119 from hsanson/2269-ktlint-stdin-support
Fix 2269 - use ktlint stdin.
2020-07-21 12:45:26 +01:00
w0rp
c1c3bd9227 Merge pull request #3137 from hsanson/3132-fix-eclipselsp-command
Fix eclipselsp command function.
2020-07-21 12:43:28 +01:00
Horacio Sanson
54aeeec97f Merge pull request #3225 from markeganfuller/puppet_parser_error_at_end
Handling for puppet parser error at end of input.
2020-07-15 21:08:42 +09:00
Mark Egan-Fuller
d38b92c957 Handling for puppet parser error at end of input.
Add handling for `Syntax error at end of input` which doesn't give a
line or column.

Fixes #2656
2020-07-15 12:10:34 +01:00
Horacio Sanson
ddf4e7e9ba Enable ktlint fixer for kotlin files. 2020-07-12 20:49:04 +09:00
Horacio Sanson
26571fa050 Merge pull request #3232 from CherryMan/master
Zig support using zls.
2020-07-11 11:40:52 +09:00
Sheheryar Parvaz
23c58e63d4 Support zls language server for zig 2020-07-10 22:33:37 -04:00
jhlink
d0b7a6e71f doc: Remove c++ from astyle 2020-07-10 19:06:22 -04:00
jhlink
57423f13ec style: Adjust spacing 2020-07-10 18:59:29 -04:00
jhlink
fecffeee91 test: Add astyle vader test 2020-07-10 18:26:15 -04:00
jhlink
56b92544c2 doc: Add astyle to supported lang & tools 2020-07-10 18:16:12 -04:00
jhlink
5dbbd2d18b doc: Add astyle to supported-tools.md 2020-07-10 17:59:14 -04:00
jhlink
8c0b9ecdfd doc: Add astyle to ale-c-options in ale-contents 2020-07-10 17:56:02 -04:00
jhlink
4394084d99 doc: Add astyle entry to ALE c integration 2020-07-10 17:54:27 -04:00
jhlink
6c58164094 feat: Add astyle to fix/register.vim 2020-07-10 17:47:01 -04:00
jhlink
7f881f66a8 feat: Add ALE fixer for astyle 2020-07-10 17:46:01 -04:00
Horacio Sanson
c136061b3f Enable languagetool for asciidoctor files. 2020-07-09 10:46:33 +09:00
Kevin Locke
106c27644b eslint: Use cwd from executable location to fix nested projects (#3222)
* Split FindNearestExecutable from FindExecutable

The path searching in ale#node#FindExecutable() will be useful for
eslint.  Refactor it into a separate function so it can be used without
regard for the state of the _use_global and _executable variables.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>

* eslint: Set project root from local executable

Using the nearest directory with node_modules does not work correctly
for nested projects where the eslint dependencies are in the outer
project.  For example:
https://github.com/dense-analysis/ale/issues/3143#issuecomment-652452362

Adopt the behavior of SublimeLinter, which runs from project_root
determined by the presence of the eslint executable in node_modules/.bin
(or eslint in dependencies/devDependencies of package.json, which we can
add later as necessary).  See [NodeLinter#find_local_executable].

[NodeLinter#find_local_executable]: https://github.com/SublimeLinter/SublimeLinter/blob/056e6f6/lint/base_linter/node_linter.py#L109

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
2020-07-08 14:42:01 +01:00
Horacio Sanson
fd399c527f Merge pull request #3223 from cspeterson/master
Puppet handler regex fix, plus new test
2020-07-08 22:24:28 +09:00
Christopher Peterson
1fcb9d1e1a Tests/puppet: add new test case for a heretofore unaccounted-for version of error message 2020-07-02 12:44:39 -04:00
Christopher Peterson
9b8ec86d7f Puppet handler: make error-parsing regex more robust 2020-07-02 12:42:44 -04:00
Bartek thindil Jasicki
0f45d3d01d Merge remote-tracking branch 'upstream/master' 2020-07-02 10:11:30 +02:00
Kevin Locke
b3c6db173a Run ESLint fixer from project root, where possible (#3096)
* Split eslint#GetCdString from eslint#GetCommand

Move the code for finding the project root and building the cd string
into a separate function so that it can be reused in the eslint fixer.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>

* Run ESLint fixer from project root dir

To match the ESLint linter, as changed in 9ee57d43 (which I forgot to
apply to the fixer, whoops).

Fixes: #3094
Closes: #3095

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
2020-07-01 17:00:21 +01:00
Horacio Sanson
834d6f9c48 Merge pull request #3158 from ulidtko/improve-dockerfile_lint
Improve :ALEDetail for dockerfile_lint [READY TO REVIEW]
2020-06-20 20:58:42 +09:00
Horacio Sanson
4f25498806 Merge pull request #3172 from 0xMH/patch-1
More docs for beginners to use cloudformation linter
2020-06-19 22:26:45 +09:00
w0rp
1428c7b29e Update the internal ALE version to 2.7.0 2020-06-11 19:21:17 +01:00
Bartek thindil Jasicki
a5e7f2c8bb Merge remote-tracking branch 'upstream/master' 2020-06-07 09:26:06 +02:00
Jerko Steiner
b29e9867e8 Add test for LSP autoimport 2020-05-31 11:46:10 +02:00
Jerko Steiner
b339a8bfa0 Add support for rename (documentChanges) 2020-05-31 11:00:53 +02:00
Jerko Steiner
4062b05669 Fix completion with langserver (autoimport in go) 2020-05-31 11:00:53 +02:00
Keith Maxwell
53bfe41841 vim/vint: show policy name
So that I can find the relevant information in the vint
linting policy summary and policies can be easily configured
https://github.com/Vimjas/vint/wiki/Vint-linting-policy-summary

Before this change an example warning message appears as:

    autocmd should execute in an augroup or execute with a group (see :help :autocmd)

After this change the same example appears as:

    ProhibitAutocmdWithNoGroup - autocmd should execute in an augroup or execute with a group (see :help :autocmd)
2020-05-30 08:38:07 +01:00
mostfunkyduck
35c7c297b6 Fixes govet linter for go 1.13+, with tests 2020-05-25 11:46:16 -04:00
Paco
7265ceb6d0 Support revive for go files (#2933)
Signed-off-by: Penghui Liao <liaoishere@gmail.com>
2020-05-22 06:09:14 -05:00
Stephen Robinson
b209315714 Fixes #3092 - Implement loading @file c arguments 2020-05-20 18:15:52 -07:00
Horacio Sanson
7ff87a942b Merge pull request #3173 from nibocn/feat#javac-sourcepath
feat(javac): Add java_javac_sourcepath variable
2020-05-19 22:51:42 +09:00
NiBo
0b5d72fecd refactor(javac): ale_java_javac_sourcepath variable defaults to String 2020-05-19 11:25:54 +08:00
NiBo
e61e1147b0 refactor(javac): ale_java_javac_classpath variable supports String and List types 2020-05-19 10:43:16 +08:00
NiBo
ff6bfc3d37 refactor(javac): ale_java_javac_sourcepath variable supports String and List types 2020-05-19 10:41:35 +08:00
NiBo
3635285c02 style(javac): Code formatting 2020-05-15 11:21:00 +08:00
NiBo
3b4193175e feat(javac): Add java_javac_sourcepath variable
This variable can set multiple source code
paths, the source code path is a relative
path (relative to the project root directory)
2020-05-15 10:48:03 +08:00
Mohamed hamza
6b8f08f7fc Added linter installing methods 2020-05-15 03:40:46 +02:00
Horacio Sanson
69d96aa9d9 Merge pull request #3077 from puritys/javaagent
To support javaagent on eclipselsp
2020-05-15 10:12:25 +09:00
NoNE
345daf683b More docs for beginners to use cloudformation linter 2020-05-15 00:35:15 +02:00
Horacio Sanson
c2b01f0e28 Merge pull request #3134 from Ian2020/master
Add shellcheck as linter for bats files
2020-05-09 11:24:55 +09:00
Ian2020
ca97f32258 Use a function to define shellcheck linters and vars needed, fixes tests 2020-05-08 12:55:54 +01:00
max ulidtko
c0d74b8094 Fix style and test 2020-05-06 14:05:39 +03:00
max ulidtko
5f4103fb35 Improve :ALEDetail for dockerfile_lint
1. The often longish `description` moved away from (supposedly short)
statusline `message` into the `detail` section.

2. dockerfile_lint sends `reference_url` pointing to issue explanations.
Use that.
2020-05-06 13:07:08 +03:00
RyanSquared
70005134e5 Merge branch 'rust-analyzer' of https://github.com/jonhoo/ale into jonhoo-rust-analyzer 2020-05-05 09:21:49 -05:00
James C. Davis
15d590ee5e fix: don't append newline when buffer is noeol and nofixeol 2020-04-30 15:00:10 -04:00
Ian2020
65bea1a5cb Main logic of shellcheck has moved, updated backward compat test 2020-04-29 17:45:16 +01:00
Klaas Pieter Annema
2548763d04 Add Apple's swift-format as a linter 2020-04-29 14:33:13 +02:00
Ian2020
716f9a9bbb Fix linting issue - indentation incorrect 2020-04-28 20:53:42 +01:00
Ian2020
f67cb56e5e Fix shell detection test, shellcheck function name has changed 2020-04-28 18:20:10 +01:00
Ian2020
3f34265151 Fix handler test, function name has changed 2020-04-28 18:13:34 +01:00
Ian2020
d4e1c57026 Moved common code to ale handlers, updated bats doc 2020-04-28 17:46:15 +01:00
Ian2020
76cd6b0f92 Fix documentation oversights 2020-04-28 16:02:46 +01:00
Horacio Sanson
e641fe0c5d Fix eclipselsp command function.
Changes in eclipselsp and java caused the command needed to run the
language server fail to build properly.

Thi PR fixes those issues.
2020-04-25 15:21:09 +09:00
Ian2020
47d941b491 Add shellcheck as linter for bats files 2020-04-24 11:39:45 +01:00
Horacio Sanson
36e5337e30 Merge pull request #3117 from zoonfafer/vim-vimls
Add vim-language-server linter support
2020-04-21 13:36:57 +09:00
Jeffrey Lau
60d683da3b Add vim-language-server linter support 2020-04-21 02:29:22 +08:00
w0rp
d2934ba017 Merge pull request #3121 from zoonfafer/scala-metals
linter/scala/metals: Fix return value of GetProjectRoot()
2020-04-20 17:39:48 +01:00
Oliver Ford
36b50058bb Add terraform-lsp integration (#2758)
* Add terraform-lsp integration

https://github.com/juliosueiras/terraform-lsp

* Add tests & docs for terraform-lsp integration

terraform_langserver_options setting added to send custom flags to
terraform-lsp.

Vader tests have been added to test custom executable, custom flags, and
finding the project root. All tests pass.

Initial documentation has been added for the above.

Resolves dense-analysis/ale#2758, juliosueiras#57

* Fix tag alignment

Co-authored-by: = <Aubrey.S.Lavigne@gmail.com>
Co-authored-by: w0rp <w0rp@users.noreply.github.com>
2020-04-20 16:02:31 +01:00
Horacio Sanson
3281321d5c Merge pull request #3027 from ndtho8205/fix-kotlinc-stderr
Fix 3011 - not catching kotlinc output on stderr
2020-04-19 18:55:47 +09:00
Tomas Janousek
4fbfcc9dec ccls: Detect build dir and set compilationDatabaseDirectory
Fixes #2621
2020-04-18 13:57:57 +02:00
Jeffrey Lau
e0181f8832 linter/scala/metals: Fix return value of GetProjectRoot()
It was returning 0 when it should be returning an empty string.

The 'AssertEqual' in the ale image is from an old version so it does not
check the types of the arguments.

This is already fixed in 427fe19104

Closes #3120
2020-04-18 19:51:31 +08:00
w0rp
64b9a2708d Merge pull request #3098 from tarikgraba/verilator-columnn
Adds column number to the verilator verilog linter
2020-04-18 12:36:16 +01:00
w0rp
1f9ac1c6dc Fix the cursor tests, that stop tests running 2020-04-18 12:26:38 +01:00
Yuto
93a13d7353 Broken message in pycodestyle (or any other Linters whose name include 'code') (#3114)
* Swap substitution order for echoed message

This prevents 'code' string in liter_name to be substituted by accident.
Linters including pycodestyle have been affected by this problem.

* Add test for linter whose name contains 'code'

Test for c525db8cb4
2020-04-18 11:59:26 +01:00
TG
00eee550ea Adds column number to the verilator verilog linter
Since version 4.032 (04/2020) verilator linter messages also contain the
column number, and look like:

%Error: /tmp/test.sv:3:1: syntax error, unexpected endmodule, expecting ';'

To stay compatible with old versions of the tool, the column number is
optional in the researched pattern regular expression.

See commit:
81c659957e
2020-04-18 09:57:01 +02:00
Horacio Sanson
5035281cb9 Fix 2269 - use ktlint stdin.
Use stdin flag instead of temporary files. This allows ktlint to work
with .editorconfig files.
2020-04-18 15:27:11 +09:00
w0rp
198361bc0d Merge pull request #2681 from mynomoto/clj-kondo-cache
Use cache for clj-kondo linter
2020-04-17 17:50:18 +01:00
w0rp
dc054f30c8 Merge pull request #2823 from jeremija/do-not-save-on-autoimport
Do not save after ALERename and ALEOrganizeImports
2020-04-17 17:32:36 +01:00
Horacio Sanson
16cd59805b Merge pull request #3050 from StarryLeo/fix-vim-sign-priority-patch-check
Fix vim sign priority patch check
2020-04-17 22:22:03 +09:00
w0rp
82f734a7c2 Closes #3019 - Implement default navigation
Default navigation for commands that jump to new locations has been
implemented with the `ale_default_navigation` variable, and all commands
that jump to locations now support `-tab`, `-split`, or `-vsplit`
arguments for overriding the default navigation behavior.
2020-04-15 16:50:13 +01:00
Dalius Dobravolskas
891852de71 Fix tslint fixer not working issue (temporary file not found) 2020-04-15 17:30:19 +03:00
Jon Gjengset
6087765cad Move to rust-analyzer everywhere 2020-04-09 13:23:03 -04:00
Jon Gjengset
58404b5b83 rust-analyzer server binary changed name 2020-04-09 08:57:02 -04:00
Tim Bedard
b800d24212 add stdin option for supported vint versions 2020-04-02 22:52:47 -05:00
John Gehrig
1c6b9354a8 Issue 2598: Addtional ^M characters on Windows
Windows may insert carriage return line endings, which ALE does not handle
well. These characters should not be displayed.

Adds a line to remove these characters for all messages.
2020-03-26 09:25:18 -04:00
puritys
852a6a1753 Fix code convention 2020-03-26 08:14:06 +00:00
puritys
9edefa724b Fix code convention 2020-03-26 07:54:12 +00:00
puritys
fa19bca80e To support javaagent on eclipselsp 2020-03-26 06:40:07 +00:00
Horacio Sanson
7b9855f1fe Fix 2732 - Add bashate support 2020-03-23 12:18:35 +09:00
Horacio Sanson
c2aa01199e Fix 345 - update java language server docs. 2020-03-19 18:00:13 +09:00
Alex Wang
fc6677d405 Avoid overriding parsed C/C++ -std=* flag
ALE appends flags from {c,cpp}_{clang,gcc}_options after those found by
parsing compile_commands.json or Makefile output. If -std=* flags are
present in both the ALE flags and parsed flags, the last one present
(i.e., ALE's -std=* flag) will determine the mode the compiler works in.
This can result in errors showing up in vim but not in the actual build
or vice-versa.

For example, say you have foo.cpp:

    #include <type_traits>
    int main() {
        return std::is_same_v<float, int>;
    }

If cpp_clang_options contains -std=c++17 and -std=c++14 is parsed from
compile_commands.json, then ALE would end up running something like:

    clang++ -S -x c++ -fsyntax-only -std=c++14 -std=c++17 - < foo.cpp

This would result in no errors showing up in Vim, but the actual build
would fail with:

    <stdin>:3:14: error: no template named 'is_same_v' in namespace 'std'; did you mean 'is_same'?
            return std::is_same_v<float, int>;
                   ~~~~~^~~~~~~~~
                        is_same
    /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/type_traits:872:61: note: 'is_same' declared here
    template <class _Tp, class _Up> struct _LIBCPP_TEMPLATE_VIS is_same           : public false_type {};
                                                                ^
    <stdin>:3:35: error: expected '(' for function-style cast or type construction
            return std::is_same_v<float, int>;
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~^
    2 errors generated.

as the actual build would not have the -std=c++17 flag added by ALE.

If cpp_clang_options contains -std=c++14 and -std=c++17 is parsed from
compile_commands.json, then the opposite problem would occur. ALE would
end up running something like:

    clang++ -S -x c++ -fsyntax-only -std=c++17 -std=c++14 - < foo.cpp

and would show an error on line 3 of foo.cpp:

    [clang] No template named 'is_same_v' in namespace 'std'; did you mean 'is_same'? (fix available)

The actual build, on the other hand, would succeed without any
complaints.

Removing -std=* from ALE's flags if it is already present in the parsed
flags ensures that the wrong -std=* flag is not used.

An alternative would have been to switch the order in which parsed flags
and ALE flags were concatenated when producing the command to execute,
but that could prevent a user from intentionally using ALE's flags to
override some other flags, e.g.  -W* flags to enable/disable warnings in
a project whose flags are not under the developer's control.

-std=* flags are also present in cuda/nvcc.vim, objc/clang.vim,
objcpp/clang.vim, and vhdl/ghdl.vim, but none of those linters appear to
parse compile_commands.json or `make` output.
2020-03-17 22:51:54 -04:00
StarryLeo
302ce71931 Fix vim sign priority patch check
With Vim 8.2 released, the previous check method is not accurate enough.
2020-03-15 14:58:38 +08:00
Horacio Sanson
c207d6a550 Fix 2816 - Standard fix does not work.
The standard linter --fix fails if the file being input is not relative
to the project root (https://github.com/standard/standard/issues/1384).

This MR attempts to fix this by changing the command so the input file
is relative to the project root and the output is to a temporary file.

Preliminary tests with toy javascript projects seem to indicate this
works fine.
2020-03-12 16:29:46 +09:00
w0rp
bbe5153fcb Fixes #2982 - Implement g:ale_exclude_highlights
Particular highlights can now be excluded by providing Lists of regular
expressions.
2020-03-11 12:52:41 -04:00
Tho Nguyen Duc
46d7ee564f Fix 3011 - not catching kotlinc output on stderr 2020-03-06 13:44:30 +09:00
w0rp
8f7ccdc5e9 Refactor the "s:LoadArgCount()" function (#3025)
* Refactor the "s:LoadArgCount()" function

Previously, this function would always set "v:errmsg" on the first
call with a given function.  This is because autoloaded functions
are not defined on the first call.

A number of improvements have been made:
 - a useless local function ("l:Function") is removed
 - the "execute()" builtin captures the output, instead of ":redir"
 - a ":try" block handles the case where a function is not defined
 - a useless ":if" is removed since ":redir" always defines the var
 - confusing quoting is re-written (remove double "'" chars)

Fixes: #3021
2020-03-04 20:56:22 +00:00
w0rp
634c81fd46 Mention using 'hidden' in combination with ALEGoToDefinition 2020-02-25 13:50:44 +00:00
w0rp
8012809c3f Add default labels to issue templates 2020-02-22 10:26:03 +00:00
Kevin Locke
8c0b0f085f Alias ps1 filetype to powershell
Rather than requiring users to alias ps1 to powershell themselves,
include it in s:default_ale_linter_aliases.  Since [vim-ps1] is a
popular (the only?) PowerShell ftplugin and there do not appear to be
any other uses of ft=ps1 on vim.org, this seems like a safe and
reasonable default.

[vim-ps1]: http://www.vim.org/scripts/script.php?script_id=1327

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
2020-02-16 14:03:41 -07:00
Ryan
d6d2a0c770 Merge pull request #2986 from ndrewtl/patch-1
misc: change email address for @ndrewtl
2020-02-08 15:58:26 -06:00
Joe Reynolds
07080066e4 Add sql-lint as linter 2020-01-31 11:11:12 +00:00
Andrew Lee
07ee4d39c5 misc: change email address for @ndrewtl
This is kind of a peculiar reason for a PR, but I no longer control the email listed. I want to change it to avoid people getting the wrong email for me. Also, I still control the domain, but if at any point I don't, I want to put down in writing that if you get an email from this, it's not from me.
2020-01-28 10:47:37 -08:00
w0rp
4afbf2f25d Merge pull request #2908 from af/patch-1
Fix for incorrect eslint output parsing for graphql files
2020-01-02 14:53:06 +00:00
Harry Percival
72d2c55479 Mypy: try to find folder containing mypy.ini to use as cwd. (#2385)
* When deciding which directory to run mypy from, prefer a folder with mypy.ini in it
* Add a test for mypy.ini-finding behaviour
2020-01-02 14:35:21 +00:00
w0rp
57eba1afac Fix the build 2020-01-02 14:23:28 +00:00
w0rp
8c4c8dfd97 Fix #2704 - Show mypy notes; can be disabled 2020-01-02 14:19:21 +00:00
Jerko Steiner
0cb432cb82 Add TypeScript autoimport support for deoplete (#2779)
* Add autoimport support for deoplete

* Fix test_deoplete_source.py

* Use callback instead of is_async for deoplete

Shuogo, the author of Deoplete, does not recommend using the `is_async`
option:

> I think is_async is not recommended. It is not so useful and broken.
> You should use callback system instead.

Link: https://github.com/Shougo/deoplete.nvim/issues/1006#issuecomment-526797857

Incidentally, the same thread mentiones an issue started by w0rp:
https://github.com/Shougo/deoplete.nvim/issues/976

The deoplete docs also say is_async is deprecated:

> is_async        (Bool)
>     If the gather is asynchronous, the source must set
>     it to "True". A typical strategy for an asynchronous
>     gather_candidates method to use this flag is to
>     set is_async flag to True while results are being
>     produced in the background (optionally, returning them
>     as they become ready). Once background processing
>     has completed, is_async flag should be set to False
>     indicating that this is the last portion of the
>     candidates.
>
>     Note: The feature is deprecated and not recommended.
>     You should use callback system by
>     |deoplete#auto_complete()| instead.

Link: https://github.com/Shougo/deoplete.nvim/blob/master/doc/deoplete.txt

Co-authored-by: w0rp <w0rp@users.noreply.github.com>
2020-01-01 19:00:41 +00:00
w0rp
874c98b96d Make it more obvious you can use popup in completeopt now 2020-01-01 18:49:01 +00:00
w0rp
7a4f5cefba Merge pull request #2942 from PsiPhire/master
Allow popup to be used instead of preview in completeopt
2020-01-01 18:43:53 +00:00
w0rp
6ad8836c68 Merge pull request #2937 from kevinoid/eslint-run-from-project-root
Run ESLint from project root dir where possible
2020-01-01 18:30:01 +00:00
w0rp
8148a67b37 Documented g:ale_hover_to_preview 2020-01-01 18:25:04 +00:00
w0rp
25e457595a Merge pull request #2828 from akhilman/hover-to-preview
Add option to show hover messages in preview.
2020-01-01 18:21:00 +00:00
Jerko Steiner
493705336c Add old check for bufline api 2019-12-29 15:08:22 +01:00
Zander Lee
4cbe16197c Allow popup to be used instead of preview in completeopt 2019-12-22 09:35:29 +01:00
davidsierradz
0cea55924b allow passing custom options to markdownlint 2019-12-19 13:11:25 -05:00
Kevin Locke
9ee57d4362 Run ESLint from project root dir where possible
ESLint 6 loads all plugins/configs/parsers relative to the project root
which, by default, is the directory in which ESLint is invoked, as
described in [ESLint RFC 2018-simplified-package-loading].

Therefore, ALE should run ESLint from the project root, when possible,
so that dependencies will load.  This commit does so.

[ESLint RFC 2018-simplified-package-loading]: https://github.com/eslint/rfcs/blob/master/designs/2018-simplified-package-loading/README.md

Fixes: #2787

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
2019-12-17 12:25:44 -07:00
Jon Gjengset
715733f44d Fix Rust linter/fixer listing 2019-12-11 12:02:18 -05:00
patrick96
1e9f870b74 verilog: Add filename to vlog linter output 2019-12-05 19:35:34 +01:00
Conrad Irwin
efe120ce9a Fix prettier_standard to respect the configuration file
Before this change, prettier_standard would run and ignore any
.prettierrc, now it will respect the configuration of the file being
linted.

This change relies on prettier-standard 16.1.0 for the --stdin-filepath
flag, but is backward compatible: older versions of prettier-standard
will ignore the unknown flag and continue to run with no configuration
file.
2019-12-04 23:15:41 -08:00
w0rp
5f84325cd8 Add a Help Wanted message in case people are interested 2019-12-03 11:47:26 +00:00
Horacio Sanson
8fbcba0091 Fix 2913 - checkstyle config file ignored.
If checkstyle is configured with custom options that contain "-c" then
the checkstyle config file option is ignored. This PR modifies the
regular expression when creating the checkstyle command to avoid this.
2019-11-27 23:19:44 +09:00
w0rp
d8195e9276 Merge pull request #2910 from hsanson/2891-fix-eslinter-json-parser
Fix 2891 - eslint not showing errors.
2019-11-27 10:15:59 +00:00
Horacio Sanson
5f95d032ee Fix 2891 - eslint not showing errors.
ESLint errors are contained in an array that can contain different
stuff other than JSON error messages. This patch iterates over the whole
array ignoring any non-json data.
2019-11-26 13:37:25 +09:00
Aaron Franks
31715ff227 Fix for incorrect eslint output parsing for graphql files
The output is configured to be JSON, but the handler was parsing it as 'lines'
2019-11-24 15:47:07 -08:00
Eddie Lebow
ece229c06f shell: Make description more accurate
The shell linter does more than just bash.
2019-11-23 00:34:40 -05:00
Eddie Lebow
1997a8f7e2 ShellDetect: fall back to filetype if no hashbang
Some files lack a hashbang line but still have an unambiguous filetype.
For example, the file `.zshrc` has the filetype `zsh`.

Augment ale#handlers#sh#GetShellType to fall back to the filetype if
no hashbang line can be found.
2019-11-23 00:34:40 -05:00
w0rp
b91d82bfaa Merge pull request #2847 from DonnieWest/allowUserToCustomizeItems
Allow user to customize items
2019-11-15 09:34:24 +00:00
w0rp
9005a62dc2 Clean up the nimpretty code 2019-11-14 14:50:21 +00:00
w0rp
7665559d0e Merge pull request #2660 from YPCrumble/master
Add StandardJS linter for TypeScript
2019-11-14 14:47:19 +00:00
w0rp
66a8df081e Merge pull request #2890 from nhanb/master
Add nimpretty fixer for nim-lang
2019-11-14 14:35:31 +00:00
w0rp
b76165abf6 Merge pull request #2889 from zigford/powershell-7-errorview
Default errorview in pwsh7 now concise
2019-11-14 14:24:19 +00:00
Bùi Thành Nhân
abad8e474b add nimpretty fixer 2019-11-09 16:28:49 +07:00
Jesse Harris
f09cc26f87 Default errorview in pwsh7 now concise 2019-11-09 13:43:00 +10:00
Donnie West
e2a67812de Add tagged entry for symbols to documentation 2019-11-08 16:44:05 -06:00
Donnie West
e6ee613e00 Switch variables to dictionary key 2019-11-08 16:44:04 -06:00
Donnie West
6637de46c2 Add scriptencoding to completion.vim 2019-11-08 16:44:03 -06:00
Donnie West
5985f8bd63 Fix typo 2019-11-08 16:44:02 -06:00
Donnie West
977921461d Add documentation for ale-symbols feature 2019-11-08 16:44:01 -06:00
Donnie West
0b5fcbad1f Allow the user to set their own completion values 2019-11-08 16:44:00 -06:00
Donnie West
4222f32cc4 Include documentation item for removing warnings 2019-11-08 16:41:39 -06:00
Donnie West
4bdde36661 Check kind safely 2019-11-08 16:41:38 -06:00
Donnie West
db5fe5659f Allow the user to remove warnings from completions 2019-11-08 16:41:37 -06:00
Bartek thindil Jasicki
b6828ac5c5 Merge remote-tracking branch 'upstream/master' 2019-11-07 22:07:26 +01:00
Thibault Vatter
db6b1b5ecc Switch from style to transformers (#2838)
* Switch to transformers for styler
* Adapt unit test too
2019-11-07 18:22:57 +00:00
w0rp
a273b9cf4a Fix a test failing in AppVeyor 2019-11-07 15:52:03 +00:00
w0rp
f11f6a2195 Merge pull request #2887 from tamago324/add-nimcheck-end_col-options
Add nimcheck end_col options
2019-11-07 15:47:31 +00:00
w0rp
bde9b1cfcd Revert "Add definition of c/clangd's language as C (#2791)"
This reverts commit f4070f6c43.
2019-11-07 15:41:58 +00:00
w0rp
5eefe544ed Merge pull request #2617 from robindar/master
Fix crystal-lang non file-tied message handling
2019-11-07 08:36:42 +00:00
tamago324
dfbb387cc7 Add nimcheck end_col options
nimcheck
2019-11-07 02:44:56 +09:00
Bartek thindil Jasicki
b8d69cb0d5 fixed typo 2019-11-05 18:59:13 +01:00
Bartek Jasicki
b454e43143 Update test/command_callback/test_adals_command_callbacks.vader
Co-Authored-By: timlag1305 <timlag1305@gmail.com>
2019-11-05 18:00:16 +01:00
Bartek Jasicki
f63fd23f2e Update doc/ale-ada.txt
Co-Authored-By: timlag1305 <timlag1305@gmail.com>
2019-11-05 17:59:51 +01:00
Bartek Jasicki
09209dc54b Update ale_linters/ada/adals.vim
Co-Authored-By: timlag1305 <timlag1305@gmail.com>
2019-11-05 17:59:17 +01:00
Bartek Jasicki
3c80c67633 Update ale_linters/ada/adals.vim
Co-Authored-By: timlag1305 <timlag1305@gmail.com>
2019-11-05 17:58:53 +01:00
Bartek thindil Jasicki
3e4a23cb14 Merge remote-tracking branch 'upstream/master' 2019-10-31 09:42:58 +01:00
w0rp
2d9380d75c Merge pull request #2690 from iclanzan/purty
Add purty fixer for PureScript
2019-10-29 17:37:18 +00:00
w0rp
e259dd525f Merge pull request #2819 from greg0ire/psalm_extra_options
Add the possiblity to add extra psalm options
2019-10-29 17:21:01 +00:00
w0rp
9a0b604a99 Fix the test issues with html-beautify 2019-10-28 13:45:25 +00:00
Hugo Osvaldo Barrera
47eb3dd0c0 Add support for html-beautify (#2788)
* Add support for html-beautify
* Add html-beautify to the list of supported tools
* Update docs
2019-10-28 13:25:36 +00:00
Charlie Johnson
af8c8516d1 fixers/stylelint: enhance stylelint fixer (#2745)
* Refactor stylelint fixer test
* Support additional stylelint fixer options
* Support changing working directory for stylelint fixer
* Force css syntax for stylelint fixer
2019-10-28 13:23:02 +00:00
w0rp
0d4dfb61dc Merge pull request #2700 from elebow/clangcheck-no-color-diagnostics
clangcheck: Add -fno-color-diagnostics (closes #2188)
2019-10-28 13:14:14 +00:00
Jerko Steiner
463deedc29 Merge branch 'master' into do-not-save-on-autoimport 2019-10-22 16:40:27 -05:00
Jerko Steiner
40890cfcf3 Rename ale#fix#SetBufferContents to ale#util#SetBufferContents 2019-10-22 16:39:43 -05:00
Ian Campbell
ea91209a66 Allow the use of StandardX for StandardJS linting and fixing.
See https://github.com/standard/standardx
2019-10-21 20:46:54 -04:00
Ian Campbell
cf5120ba75 Remove standardts fixer in favor of allowing standard.vim fixer to handle JavaScript or TypeScript options. 2019-10-21 20:46:54 -04:00
Ian Campbell
79e9ae4550 Make sure README and docs are synced. 2019-10-21 18:20:43 -04:00
Ian Campbell
9017d3ef9c Add StandardJS for TypeScript linting and fixing. 2019-10-21 18:20:43 -04:00
w0rp
67d0ccc398 Fix #2835 - Bump up the sign group version check for NeoVim 2019-10-21 09:35:23 +01:00
Bartek thindil Jasicki
2f181658e6 rename command variable to *_adals_* instead of *_lsp_* and whole name to adals instead of adalsp 2019-10-18 18:26:08 +02:00
Bartek thindil Jasicki
8239b76c5a Merge remote-tracking branch 'upstream/master' 2019-10-18 18:15:05 +02:00
Jon Gjengset
9c797961fa Make more names match up 2019-10-18 12:01:31 -04:00
w0rp
c06467438d Mention the disabled option for message severity 2019-10-18 16:22:17 +01:00
Andre Souto
5e69aaf4c2 Adding support for LSP window/showMessage method (#2652)
* Added base handling for window/showMessage
* Ignoring severity log
* Code formatting
* Added user configurable severity
* Preferring ale#util#ShowMessage over echo'ing directly
* Using format similar to ale_echo_msg_format for consistency
* Updating docs
* Added LSP log config string; improved tests
* Use warning as fallback for incorrect user config
2019-10-18 16:17:54 +01:00
w0rp
9125ec8739 Merge pull request #2845 from DonnieWest/fixItemDetailsOnEmptySource
Fix tsserver not returning details for items with empty source
2019-10-18 15:16:54 +01:00
w0rp
99e64ed084 Merge pull request #2844 from DonnieWest/fixAsyncompleteCodeActions
Allow code actions to work on callback based sources
2019-10-18 15:10:36 +01:00
Donnie West
8698c44e2a Fix tsserver not returning details for items with empty source 2019-10-17 23:26:24 -05:00
Donnie West
b27df1b169 Allow code actions to work on callback based sources 2019-10-17 23:22:31 -05:00
w0rp
dfe9b7cc26 Merge remote-tracking branch 'murfalo/clangd-compile-commands' 2019-10-17 17:54:02 +01:00
Jerko Steiner
e5a4c82917 Add support for nimlsp (#2815)
* Add support for nimlsp.vim
* Add test and docs for nimlsp
* Add nimlsp to supported-tools.md
* Add nimlsp to doc/ale-supported-languages-and-tools.txt
2019-10-17 17:32:31 +01:00
João Borges
f4070f6c43 Add definition of c/clangd's language as C (#2791)
* Add definition of c/clangd's language as C
* Update tests for clangd to be called with '-x c'
* Change to use single quotes instead of double quotes
2019-10-17 17:28:48 +01:00
Jon Gjengset
fedd3de59f Place rust sections in alphabetical order 2019-10-16 14:41:04 -04:00
Jon Gjengset
4b53d88cb8 Also list analyzer in doc/ supported tools 2019-10-16 14:03:10 -04:00
Jon Gjengset
29d0987859 Fix TOC sorting 2019-10-16 14:01:57 -04:00
Jon Gjengset
d74db90550 Make TOC match up 2019-10-16 13:44:01 -04:00
w0rp
b24fd13423 Bump the ALE version 2019-10-16 17:23:31 +01:00
Jon Gjengset
81cb40ce4b minor test fix 2019-10-16 11:54:43 -04:00
Jon Gjengset
f5c289dce6 Add support for rust-analyzer
Fixes #2832
2019-10-16 11:34:16 -04:00
w0rp
7c5825ecbc Merge pull request #2803 from diegosouza/update_highest_phpstan_level
Update highest phpstan level
2019-10-14 16:18:10 +01:00
w0rp
01219f0308 Merge pull request #2810 from jmreicha/patch-2
Fix Powershell emoji
2019-10-14 16:16:02 +01:00
w0rp
af1643a948 Merge pull request #2829 from rcorre/fix-doc-example
Fix TCP server config example.
2019-10-14 16:15:35 +01:00
Ryan Roden-Corrent
5a1505ad62 Fix TCP server config example.
The docs for the `address` parameter of `Define` say:

> This argument must only be set if the `lsp` argument
> is set to `'socket'`.
2019-10-13 09:06:38 -04:00
Ildar Akhmetgaleev
31d6f72abf Add option to show hover messages in preview.
Add new option 'ale_hover_to_preview' to show hover messages
in preview window.
2019-10-12 16:45:12 +07:00
David A. R. Robin
e19b8c05cd Fix crystal-lang non file-tied message handling
Some messages of the crystal compiler are not tied to a file.
This causes a 'Key not present in Dictionnary' error (E716).
For the record, the json output on ```require "./nonexistent.cr"```
is the following :
```json
  [
  { "file":"/tmp/file.cr", "line":1, "column":1, "size":0,
    "message":"while requiring \"./nonexistent.cr\"" },
  { "message":"can't find file './nonexistent.cr' relative to '/tmp'" }
  ]
```
The second message does not have line/column attributes.
2019-10-11 18:34:09 +02:00
Bartek thindil Jasicki
6d5d3fa4dd fixed documentation headers 2019-10-11 11:10:02 +02:00
Bartek thindil Jasicki
5cbf7007ff fixed documentation 2019-10-11 11:00:49 +02:00
Bartek thindil Jasicki
c30869617f another fix for test 2019-10-11 10:48:50 +02:00
Bartek thindil Jasicki
321a3892a7 fixed test again (this time for sure) 2019-10-11 10:41:19 +02:00
Bartek thindil Jasicki
c74cc93140 fixed test 2019-10-11 10:35:54 +02:00
Bartek thindil Jasicki
38e0e3feef added adalsp test 2019-10-11 10:08:36 +02:00
Bartek thindil Jasicki
489b7d64e4 updated documentation 2019-10-11 09:55:05 +02:00
Bartek thindil Jasicki
87a0227d01 added support for Ada Language Server 2019-10-11 09:43:55 +02:00
Jerko Steiner
c8c142b881 Do not save for ALERename and ALEOrganizeImports 2019-10-09 20:54:47 -05:00
Murfalo
a1fab59811 Suboptimal fix to prevent variables from leaking out of new clangd test 2019-10-09 14:24:56 -04:00
Murfalo
d488198c9c Hopefully fixed issue with Windows paths 2019-10-09 13:52:17 -04:00
Murfalo
a62f26434a Added tests for clangd compile commands dectection 2019-10-09 13:40:04 -04:00
Murfalo
35f51221f1 Updated ale_linters/c/clangd.vim to match ale_linters/cpp/clangd.vim 2019-10-09 13:30:10 -04:00
w0rp
3fe2223a48 Fix #2800 - Ignore completion user data which is not a dictionary 2019-10-09 10:12:31 +01:00
w0rp
e8de12c9f0 Fix #2821 - Fix the debride linter after merging older code 2019-10-09 09:53:50 +01:00
Grégoire Paris
95b8689835 Add the possiblity to add extra psalm options 2019-10-07 23:15:01 +02:00
Jérôme Foray
f932211309 fix tflint handler for 0.11+ (#2775)
* fix tflint handler for 0.11+
* fixup! fix tflint handler for 0.11+
* maintain compatibility with previous tflint output format
* fixup! maintain compatibility with previous tflint output format
* Add comment about tflint's output format accross versions
2019-10-07 20:14:22 +01:00
w0rp
6d88801789 Clarify that virtualtext is only in NeoVim 2019-10-07 20:03:59 +01:00
w0rp
59b34dd017 Merge pull request #2813 from werneta/master
Update vlog parser to handle new output format
2019-10-07 19:55:41 +01:00
w0rp
f2b231dd76 Merge pull request #2771 from gpanders/master
Use Makefile output with clang-tidy when useful
2019-10-07 19:34:52 +01:00
w0rp
8fda1cebff Merge pull request #2814 from andys8/improvement/elm-ls-name-fix-in-documentation
elm-ls: Removed some leftovers of previous name
2019-10-07 19:32:00 +01:00
w0rp
8097d51e33 Merge pull request #2750 from andys8/improvement/elm-language-server-elm-analyse-trigger-param
Elm language server params update
2019-10-07 19:30:59 +01:00
w0rp
06082ef377 Merge pull request #2735 from zoonfafer/scala-metals
Add linter for Scala Metals
2019-10-07 19:24:47 +01:00
w0rp
d3a3f4011b Merge pull request #2676 from davidtwco/nixfmt-fixer
Add nixpkgs-fmt fixer.
2019-10-07 19:22:01 +01:00
w0rp
cebbb67ea6 Merge pull request #2659 from greg0ire/psalm-language-server-option
Use the psalm executable with the LS option
2019-10-07 19:19:54 +01:00
w0rp
32b784219b Merge pull request #2694 from elebow/add-ruby-debride
Add ruby debride (closes #2471)
2019-10-07 19:17:55 +01:00
Greg Anders
7795898841 Add tests for clangtidy with Makefile 2019-10-06 10:29:23 -06:00
Greg Anders
06a97a8541 Use Makefile output with clang-tidy when useful
In the case where neither a build directory nor a compile_commands.json
file is found, use the output of `make -n` to provide options to
clang-tidy.
2019-10-06 10:29:17 -06:00
andys8
0fa2d18230 elm-ls: Removed some leftovers of previous name
Plugin name is `elm-ls`
Project page: <https://github.com/elm-tooling/elm-language-server>
2019-10-06 00:37:24 +02:00
Thomas A. Werne
d0e87c0df4 Correct vint-discovered advisory in vlog handler 2019-10-05 11:25:56 -07:00
Thomas A. Werne
89fa43551f Add test for new vlog format 2019-10-05 11:25:56 -07:00
Thomas A. Werne
98b0dcd7d6 Update vlog parser to handle new output format
Re #2812, the parser now takes a second pass through the output using an
updated regex.
2019-10-05 10:44:02 -07:00
Josh Reichardt
b96574e5b5 Fix Powershell emoji 2019-10-04 10:48:06 -07:00
w0rp
a486aa1d24 Merge pull request #2809 from hsanson/2802-fix-sign-group-parsing
Fix sign parser to be language independent.
2019-10-04 15:42:46 +01:00
Horacio Sanson
7c2f5e83ab Fix sign parser to be language independent. 2019-10-04 21:58:44 +09:00
Murfalo
618f2d71fc Added automatic compile-commands-dir arg to ale_cpp_clangd linter 2019-10-03 13:22:13 -04:00
Diego Mendes
889e6338fe highest phpstan level in doc updated 2019-10-02 09:22:04 -03:00
Eddie Lebow
62602569b3 clangcheck: Add -fno-color-diagnostics
Also change to the modern --extra-arg syntax.
2019-09-26 20:28:33 -04:00
Horacio Sanson
41ff80dc9e 569 support vim sign group and priority (#2786)
* Use sign-group only on supported vim versions.

The sign-group feature is only available in nvim 0.4.0 and vim 8.1.614.

* Add priority to ALE signs.

This allows users to set a priority to ALE signs to take precedence over
other plugin signs.
2019-09-25 09:15:16 +01:00
w0rp
6746eaeaa0 Merge pull request #2683 from ahayworth/ahayworth-add-ink-lsp
Add support for ink-language-server
2019-09-22 13:07:19 +01:00
w0rp
d7dbc8f2cf Merge pull request #2719 from kevinywlui/patch-1
Remove texlab rust rewrite link
2019-09-22 12:41:12 +01:00
w0rp
e329413a31 Merge pull request #2667 from Chris-Slade/master
Edit ale-cs-csc docs to remove typos
2019-09-22 12:37:00 +01:00
w0rp
e6241ee0d2 Merge pull request #2784 from hsanson/2733-add-semistandard-executable-to-path-search
Add semistandard to node_modules search.
2019-09-22 11:36:53 +01:00
Horacio Sanson
07c11e4e7f Add semistandard to node_modules search. 2019-09-22 09:11:21 +09:00
w0rp
ab8e043353 Merge pull request #2691 from elebow/mdl-use-json-output
mdl: Use JSON output instead of parsing text
2019-09-20 20:59:59 +01:00
w0rp
e6946de98a Merge pull request #2736 from zoonfafer/doc-typos
doc: Fix typos
2019-09-20 20:50:58 +01:00
w0rp
6ab264ff0f Close #2641 - Document how to add your own LSP linters 2019-09-20 20:38:37 +01:00
w0rp
d93512fe60 Fix #2744 - Make ALEFix work when only casing is changed 2019-09-20 19:02:21 +01:00
w0rp
7b38e97943 Merge pull request #2780 from jeremija/tsserver-autoimport-desc
Show description of autoimport action for tsserver
2019-09-20 09:30:52 +01:00
Jerko Steiner
f5e44415e8 Show description of autoimport action for tsserver 2019-09-20 13:11:16 +07:00
w0rp
e3784c4c4e Close #2764 - Support the new React filetypes with aliases 2019-09-19 20:48:37 +01:00
w0rp
b531a4e0b3 Merge pull request #2653 from AntoineGagne/bugfix/bugged-plt-detection
Fix bug with detection of the PLT in Erlang Dialyzer
2019-09-19 20:35:54 +01:00
w0rp
dd6bd6f0fe Fix #2711 - Fix writing to files on save 2019-09-19 20:32:33 +01:00
w0rp
529f57a66f Document and test solc 2019-09-19 20:26:24 +01:00
Mo Zhonghua
b8949aaac3 arguments needs to be handled for compile_commands.json in addition to command (#2123)
* c linter: compatible with compile_commands.json without command field
2019-09-19 20:20:37 +01:00
Karl Bartel
dc42c0f948 Add support for solc Solidity compiler (#2648)
* Add support for `solc` Solidity compiler
* Set default value for `solidity_solc_options`
* Add test for solc handler
2019-09-19 19:40:00 +01:00
w0rp
41ed10be4e Merge pull request #2770 from statquant/master
Adding linting for rmd filetype (duplicate of rmarkdown)
2019-09-19 19:29:38 +01:00
statquant
34431d885b Adding linting for rmd filetype (duplicate of rmarkdown) 2019-09-14 15:55:04 +01:00
w0rp
61cfb3fefb Merge pull request #2693 from elebow/chmod-remove-x
Remove +x bit from some files that don't need it.
2019-09-12 23:00:34 +01:00
w0rp
321ee6d26b Merge pull request #2738 from Joshuao95/patch-1
Update irrelevant JSCS site link
2019-09-12 22:59:20 +01:00
w0rp
58b7c281c5 Merge pull request #2696 from elebow/update-test-docs-for-linter-lists
Update test docs and output for linter tables checked
2019-09-12 22:57:44 +01:00
Cluas
a6c59faa0f feat: support sqlformat. (#2702)
* feat: support sqlformat.
2019-09-12 22:48:27 +01:00
Jerko Steiner
3e8c8d3ccb Add ALERename (tsserver & LSP), ALEOrganizeImports (tsserver) and auto import support (tsserver) (#2709)
This commit adds support for renaming symbols in tsserver and with LSP tools, and for organising imports with tsserver. Completion results for symbols that can be imported are now suggested if enabled for tsserver completion done via ALE.
2019-09-12 21:53:23 +01:00
w0rp
b66d202c1d Merge pull request #2695 from elebow/move-ruby-escape-executable
Move ale#handlers#ruby#EscapeExecutable to ale#ruby#EscapeExecutable
2019-09-12 21:29:41 +01:00
Samuel Roeca
05ba522c9a languagetools: stop auto-appending --autoDetect (#2616)
Options are now configurable for languagetools, and `--autoDetect` can be removed by changing the options.
2019-09-12 21:22:47 +01:00
w0rp
34f2943fdd Limit the branches for branch builds for AppVeyor 2019-09-12 20:59:44 +01:00
w0rp
84a455185c Limit the branches for Travis CI branch builds 2019-09-12 20:52:36 +01:00
w0rp
fbe7cea91c Merge pull request #2741 from zoonfafer/shell
linter/sh: Improve parsing of error messages in different locales
2019-09-12 20:41:49 +01:00
w0rp
cda46636f4 Fix #2760 - Ignore all errors for adding NeoVim highlights 2019-09-11 16:49:25 +01:00
theoremoon
2e323b529d dfmt support (#2662)
* Add support for `dfmt`
2019-09-10 20:54:14 +01:00
Kamil Grzywacz
e5e39a939a credo now recognizes umbrella projects
Use ale#handlers#elixir#FindMixUmbrellaRoot to determine project root
instead of ale#handlers#elixir#FindMixProjectRoot
2019-09-07 15:40:35 +02:00
andys8
bd1f7e1420 Elm language server params update
* There is a new param 'elmAnalyseTrigger' (change|save|never)
* Empty path default to let the language server search for binary
2019-09-04 00:20:12 +02:00
w0rp
6e18c03d80 Make help text clearer for line number highlights 2019-09-01 14:09:17 +01:00
BlahGeek
9f814a8ce9 Add g:ale_sign_highlight_linenr (#2678)
* add g:ale_sign_highlight_linenr
* Fix tests. Change option default value
* Rename ale_sign_highlight_linenr to ale_sign_highlight_linenrs
* Default ale_sign_highlight_linenrs to 0
2019-09-01 14:03:54 +01:00
w0rp
67ee2b9586 Fix tests so they work with new NeoVim highlight code 2019-09-01 13:31:09 +01:00
w0rp
7d7ddf22d3 Merge pull request #2638 from frangio/nvim-highlight
Use Neovim API for highlights when available
2019-09-01 10:47:28 +01:00
Jeffrey Lau
2b12c8ccbf linter/sh: Improve parsing of error messages in different locales
Fixes #2687
2019-08-31 15:08:54 +08:00
Jeffrey Lau
5fcb24bb3e Add linter for Scala Metals
https://scalameta.org/metals/
2019-08-31 12:34:57 +08:00
Joshuao95
cf47bda024 Update irrelevant JSCS site link
jscs.info appears to have nothing to do with the linter, and just contains a blogpost about student debt.
This appears to be the closest to canonical site for the project (although it's now merged with ESLint I suppose some still use it?)
2019-08-29 17:05:38 +01:00
Jeffrey Lau
da262f40dd doc: Fix typos 2019-08-28 00:28:58 +08:00
David Wood
6aeb462171 Add nixpkgs-fmt fixer.
This commit adds a fixer for the Nix language, nixpkgs-fmt
(https://github.com/nix-community/nixpkgs-fmt).
2019-08-26 19:21:07 +01:00
Kevin Lui
442fb2d22f Remove texlab rust rewrite link
It seems like the texlab rust rewrite has completed so the link is now broken and not necessary.
2019-08-19 23:10:40 -07:00
Eddie Lebow
08a5bfcaa9 mdl: Use JSON output instead of parsing text
Also add test coverage for the mdl handler.
2019-08-18 23:28:32 -04:00
w0rp
73812c3e41 Merge remote-tracking branch 'AlexeiDrake/master' into bugfix/c-lsp-build-dir-settings 2019-08-18 18:29:59 +01:00
w0rp
91636cff06 Merge pull request #2677 from davidtwco/check-toc-test-failure
Remove `/bin/ls` assumption from check-toc test.
2019-08-18 16:26:14 +01:00
w0rp
d787369f37 Merge pull request #2701 from elebow/doc-elixir-linters-floppy_disk
Add 💾 to dialyxir and dogma
2019-08-18 16:22:46 +01:00
richyfish
c4bdf165ca Black fixer should include --pyi for files with .pyi extension (#2705)
* black fixer should include --pyi for files with .pyi extension
2019-08-18 15:45:15 +01:00
w0rp
ddb559b3be Merge pull request #2631 from timlag1305/feat/ada-gnatpp
Add gnatpp fixer for Ada
2019-08-18 15:37:51 +01:00
w0rp
ee62cc6898 Merge pull request #2706 from richyfish/2703_mypy_stderr
mypy linter capture stderr for error reporting in ALEInfo
2019-08-17 19:21:42 +01:00
Andre Souto
219fb5873c Keep cursor position on screen when opening/closing lists (#2632)
* Trying to keep win view from bouncing
* Adjusting when views are saved and restored
* Also restore view when closing quickfix
* Don't restore view when opening list vertically
2019-08-17 19:14:21 +01:00
fx-carton
b62e306222 Fix cflags parsing (#2510, #2265) (#2590)
* Parse CFLAGS that can be passed using a whitelist

I went through GCC's man page and selected flags that can safely be
passed to GCC and that can be useful to syntax checking. These include:

- -I/-i* include flags
- preprocessor flags such as -D
- -W* warning flags
- -O* optimization flags
- most -f options
- -m arch dependent options

* Fix CFLAGS tests: -Idir is now parsed to -I dir
* Added two tests for flags we want or don't want to pass.
* Also check for / in addition to s:sep
2019-08-17 19:08:14 +01:00
Donnie West
5388ff1d54 Add asyncomplete.vim Support (#2627) 2019-08-17 18:40:05 +01:00
Richard French
266fa1c0a4 mypy linter capture stderr for error reporting in ALEInfo 2019-08-15 16:36:11 +01:00
Eddie Lebow
b70eeaadb4 Add 💾 to dialyxir and dogma 2019-08-15 00:40:30 -04:00
Eddie Lebow
74a43755c6 Update test docs and output for linter tables checked
This makes some of the run-test output less misleading.

Also fix a minor shellcheck issue: "\*" and "\\*" are equivalent, but
the second one makes clear that the literal backslash is intentional.
2019-08-13 21:30:13 -04:00
Eddie Lebow
58e8d32d79 Move ale#handlers#ruby#EscapeExecutable to ale#ruby#EscapeExecutable
This function is generally applicable to Ruby, not just handling linter
output.
2019-08-13 01:52:13 -04:00
Eddie Lebow
8aa1578605 Correct copied typo in doc/ale-ruby 2019-08-13 01:48:18 -04:00
Eddie Lebow
501af8dd8b debride: Add debride linter (closes #2471) 2019-08-13 01:43:27 -04:00
Eddie Lebow
b1810b2752 Remove +x bit from some files that don't need it. 2019-08-13 00:28:31 -04:00
Sorin Iclanzan
f89b49a014 Add purty fixer. 2019-08-12 11:49:19 -04:00
richyfish
28c93ab185 aleinfo global options (#2686)
* added omitted global variables which was breaking this test when run standalone
* invert logic for s:GetLinterVariables excluding disabled linters, so that linter global options can appear in output
* additional tests for s:GetLinterVariables for linter global options
2019-08-12 16:29:28 +01:00
Andrew Hayworth
ab0bf61512 Add support for ink-language-server
This commit add support for ink-language-server, which it does by
largely copying and pasting from the pure-language-server PR that was
merged recently.

The most interesting things to note are:
- ink-language-server is distributed upstream via npm, which is why we
  search through node_modules
- With some coaxing, it can be installed globally - which is why we
  search for a global binary.
- Ink is a funky language, and users will likely need to add
  initialization options.
- I am not incredibly familiar with vimscript; and I may not have done
  some of the buffer searching correctly.
2019-08-07 16:35:12 -05:00
mynomoto
9ee8067df6 Use cache for clj-kondo linter 2019-08-06 18:44:53 -03:00
David Wood
20cc6d3e05 Remove /bin/ls assumption.
On some systems, notably NixOS, there is no `/bin/ls` and thus this test
can fail unnecessarily on those systems. This commit uses
`/usr/bin/env ls` which resolves the issue.
2019-08-03 12:42:22 +01:00
w0rp
dd1e1025b8 Fix #2668 - Set g:ale_go_go111module 2019-08-02 09:09:10 +01:00
w0rp
3ae01ba249 Merge pull request #2430 from eliath/master
Support $GO111MODULE with Go tooling
2019-07-30 21:17:20 +01:00
Chris-Slade
9c7673e6c9 Edit ale-cs-csc docs
Edits the ale-cs-csc docs to remove typos, misspellings, and run-on
sentences.
2019-07-30 11:12:46 -04:00
w0rp
8f5ecf0120 Merge pull request #2646 from paulreimer/fixer-clangformat-use-assume-filename
Set --assume-filename for clangformat fixer
2019-07-30 08:21:21 +01:00
JINNOUCHI Yasushi
d1c56769b7 Add setting for numhl highlights (#2637)
* Add setting for numhl highlights
* Add doc for numhl feature
2019-07-29 22:08:33 +01:00
w0rp
b1230873b6 Merge pull request #2612 from andys8/feature/elm-language-server-update
Update elm-ls
2019-07-29 21:56:27 +01:00
w0rp
4fe7402e89 Update links to use the new GitHub organization 2019-07-29 21:10:41 +01:00
Grégoire Paris
e47c1965a6 Use the psalm executable with the LS option
This is the simplest way of getting the psalm language server to run
now.
2019-07-25 23:19:30 +02:00
Antoine Gagné
c675212ddd Fix bug with detection of the PLT
Previously, it did not detect the PLT inside the `_build` directory and
would always default to the default PLT or the one from the `kerl` tool.
2019-07-22 09:50:16 -04:00
Paul Reimer
d25711a516 Set --assume-filename for clangformat fixer 2019-07-19 07:57:10 -07:00
w0rp
aae6d30b1e Merge pull request #2618 from rustic-games/clippy-flags
Update Rust cargo linter to better integrate with Clippy
2019-07-14 15:16:15 +01:00
w0rp
bafa1c619d Merge pull request #2643 from delphinus/feature/update-deoplete-for-cpp
Add Deoplete's input_patterns for cpp
2019-07-14 15:05:00 +01:00
delphinus
240bb8abae Add Deoplete's input_patterns for cpp 2019-07-14 22:20:44 +09:00
w0rp
36a50111b9 Merge pull request #2601 from delphinus/feature/better-completion-for-deoplete
Show more candidates for Deoplete completion
2019-07-14 10:29:03 +01:00
Matthew Lanigan
abb38955d3 Add Sorbet ruby linter and fixer (#2614) 2019-07-13 17:37:48 +01:00
andys8
fa5aecc250 Elm-ls backward compatibility for previous naming
Previous name of `elm-language-server` was `elm-lsp`
2019-07-10 12:04:33 +02:00
Francisco Giordano
6e6ad2e430 Try to mock nvim api functions 2019-07-10 01:20:22 -03:00
Francisco Giordano
79dde5f0e5 Implement highlights using neovim API 2019-07-09 23:23:27 -03:00
w0rp
6c47d7fc35 Merge pull request #2606 from hsanson/fix-javalsp-executable-docs
Default executable for javalsp is empthy string.
2019-07-06 14:31:32 +01:00
Pete Beardmore
a5240009ba Fix incorrect re-selection (#2630)
ALE now only resets selections when needed, to prevent side effects.
2019-07-02 08:31:24 +01:00
hernot
46ab7c5904 Support csc, update mcsc (#2586)
* Added a new csc linter for C# code.
* More output is now handled for mcsc.
2019-07-02 08:18:17 +01:00
ObserverOfTime
8700586890 Add clangtidy fixer (#2548)
* Add clangtidy fixer
* Add extra_options to clangtidy fixer
* Also, use cpp variables in cpp filetypes
2019-07-02 08:11:10 +01:00
Tim Lagnese
221aceb6db Add gnatpp fixer for Ada 2019-07-01 20:50:02 -04:00
Elias Martinez Cohen
49db8210f6 Support $GO111MODULE with Go tooling
Allows the user to override $GO111MODULE environment variable through
ale options. This gives control over the default behavior of Go module
resolution.

Golang documentation:
https://github.com/golang/go/wiki/Modules#how-to-use-modules

Add `ale#Go#EnvString()` function to make it easy to add similar Go
environment variables in the future.

Use the new `EnvString` function in all available Go tools callbacks
& update tests

Also add test of linter command callback for `gofmt`
2019-07-01 11:04:33 -04:00
w0rp
89f7292138 Merge pull request #2625 from ericdwang/update-readme
Update README section about running linters on save
2019-06-30 18:17:19 +01:00
Eric Wang
6feeca793a Update README section about running linters on save
The default for `g:ale_lint_on_insert_leave` was recently changed to 1,
so it now needs to be explicitly set to 0 to run linters only when files
are saved.
2019-06-27 19:25:06 -07:00
Jean Mertz
53b0e6c37d support all cargo options for build/clippy 2019-06-25 11:22:36 +02:00
delphinus
a3521de64e Use input_patterns & add comments for updating it 2019-06-25 18:04:04 +09:00
Jean Mertz
e52388b8b1 support clippy options with -- 2019-06-24 19:47:49 +02:00
andys8
0843efc7a5 Update elm-ls
* elm_lsp is now elm_ls
* The binary published by @elm-tooling is elm-language-server

Updates tests, docs and adds more options to the plugin.
2019-06-21 20:10:23 +02:00
RyanSquared
65ba4b85ec Merge branch 'fix-small-doc-typo' 2019-06-21 04:16:42 -05:00
Horacio Sanson
bf0d0597cb Fix small doc typo 2019-06-20 08:51:45 +09:00
Jesse Harris
9ad8fd6a1b Handle powershell unexpected token with newline (#2588)
* Newline in unexpected token broke parser
* fixed test to properly capture regressions
* removed deprecated linter options for powershell
2019-06-19 23:35:10 +01:00
w0rp
d2c3141f26 Merge pull request #2600 from hsanson/add-javalsp-lsp-options-2
Add support for javalsp configuration options.
2019-06-19 23:32:06 +01:00
w0rp
418f8a6fed Merge pull request #2602 from lbonn/master
Update docs on default after recent changes
2019-06-19 16:18:41 +01:00
lbonn
9c48c584a9 Update docs on default after recent changes
`g:ale_lint_on_insert_leave` default has been changed from 0 to 1 in
168768b326
2019-06-19 13:32:11 +02:00
w0rp
38a55fa9fe Merge pull request #2599 from parkovski/cpp-autocomplete-trigger
Enable C++ autocompletion on '::' and '->'
2019-06-19 10:46:19 +01:00
delphinus
4e1c46947d Add & fix tests for added funcs 2019-06-19 15:34:53 +09:00
delphinus
e0f8304860 Add separated func for deoplete
Deoplete needs `get_complete_position` method and it has a different
signature. It already fetches the input string and attempts to detect
the position with `\k*` regexp patterns.
2019-06-19 15:08:24 +09:00
delphinus
f5a908bf99 Add input_pattern setting for deoplete
This option is used to determine if `min_pattern_length` is ignored.
In usual, it does not start completion when the matched input string is
shorter than `min_pattern_length`. But when the string matches
`input_pattern`, it starts completion even when ths string is `''`.
2019-06-19 15:08:24 +09:00
Horacio Sanson
f2e52b9432 Default executable for javalsp is empthy string.
This fixes documentation to match actual implementation.
2019-06-19 11:50:03 +09:00
Horacio Sanson
40bf6e6b5c Add support for javalsp configuration options.
This MR adds a new configuration variable `g:ale_java_javalsp_config`
that allows to configure external dependencies and class paths to the
language server.

The variable accepts a dictionary similar to the one supported by the
[vscode/settings.json](https://github.com/georgewfraser/java-language-server#settings)
file.

Deprecates: #2561
2019-06-19 11:38:23 +09:00
Parker Snell
c5a4bbf8b0 Enable C++ autocompletion on '::' and '->' 2019-06-18 18:02:44 -07:00
Drew Olson
1c71da5624 Add support for purescript language server (#2572)
* Add support for purescript language server
* Update naming
* Add purescript language server tests
2019-06-17 12:54:43 +01:00
w0rp
701c1e4f17 Merge pull request #2578 from andys8/patch-2
Elm: Update link to compiler repository
2019-06-17 12:48:01 +01:00
w0rp
15f23532b7 Merge pull request #2577 from hsanson/fix-checkstyle-defaults
Fix checkstyle default configuration.
2019-06-16 18:13:47 +01:00
w0rp
3acfa0813e Merge pull request #2591 from blahgeek/inc-deoplete-rank
Raise deoplete source rank to 1000
2019-06-16 17:29:26 +01:00
BlahGeek
e0871be22b Raise deoplete source rank to 1000 2019-06-15 16:00:17 +08:00
w0rp
6e28eec243 Merge pull request #2563 from dcyriller/fixer-prettier-glimmer
prettier: Support experimental languages (Handlebars)
2019-06-13 11:08:21 +01:00
Cyrille David
86205967ea Refactor to be less verbose 2019-06-13 10:36:51 +02:00
Horacio Sanson
eb6a7b7516 Fix checkstyle default configuration.
Checkstyle xml configuration is mandatory and not providing one causes
the tool to fail with the following error:

    Must specify a config XML file.

Checkstyle itself contains a default configuration as part of its
assests named `/google_checks.xml`. Invoking checkstyle with this config
works even if such file does not exists in the file system:

    checkstyle -c /google_checks.xml

This should be the default invocation to allow ALE to use checkstyle
with zero configuration.

Also when a user sets `g:ale_java_checkstyle_config` option, ALE should
use it to invoke checkstyle even such file does not exists in the
filesystem. This is because checkstyle is able to use configuration files
within JAR files defined in the CLASSPATH. The default `/google_checks.xml`
is an example of such configuration available within a JAR resource.
2019-06-12 10:53:28 +09:00
Andy
0135fb3ad3 Elm: Update link to compiler repository 2019-06-11 18:14:57 +02:00
Cyrille David
3e4b8ea466 prettier: Support experimental languages
Such as handlebars
2019-06-06 22:04:32 +02:00
653 changed files with 21148 additions and 3627 deletions

View File

@@ -5,6 +5,11 @@ clone_depth: 10
# Use the directory C:\testplugin so test directories will mostly work.
clone_folder: C:\testplugin
branches:
only:
- master
- /v\d+\.\d+\.(x|\d+)/
# Cache the vim and vader directories between builds.
cache:
- C:\vim -> .appveyor.yml
@@ -14,6 +19,9 @@ init:
# Stop git from changing newlines
- git config --global core.autocrlf input
# NOTE: If you change the Vim or Vader versions here, please also update the
# instructions for running tests on Windows in ale-development.txt
install:
# Download and unpack Vim
- ps: >-

View File

@@ -1,5 +1,6 @@
---
name: Report a bug
labels: bug
about: Report a bug with ALE.
---

View File

@@ -1,5 +1,6 @@
---
name: Suggest a new linter or fixer
labels: new tool
about: Suggest a new tool ALE can officially integrate with.
---

View File

@@ -1,5 +1,6 @@
---
name: Suggest an improvement
labels: enhancement
about: Suggest some way to improve ALE, or add a new feature.
---

17
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
---
# This configuration closes stale PRs after 28 + 7 days.
# That's 4 weeks until stale bot complains, and a week until it closes a PR.
# Issues in ALE are never, ever stale. They are either resolved or not.
only: pulls
daysUntilStale: 28
daysUntilClose: 7
exemptLabels: []
staleLabel: stale
markComment: >
This pull request has been automatically marked as stale because it has not
been updated recently. Make sure to write tests and document your changes.
See `:help ale-dev` for information on writing tests.
If your pull request is good to merge, bother w0rp or another maintainer
again, and get them to merge it.
closeComment: false

36
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
---
name: CI
on: # yamllint disable-line rule:truthy
push:
branches: [ master ] # yamllint disable-line rule:brackets
tags:
- /^v\d+\.\d+\.(x|\d+)$/
pull_request:
branches: [ master ] # yamllint disable-line rule:brackets
jobs:
build_image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build docker run image
shell: bash
env:
DOCKER_HUB_USER: ${{ secrets.DOCKER_HUB_USER }}
DOCKER_HUB_PASS: ${{ secrets.DOCKER_HUB_PASS }}
run: ./run-tests --build-image
test_ale:
needs: build_image
runs-on: ubuntu-latest
strategy:
matrix:
vim-version:
- '--vim-80-only'
- '--vim-82-only'
- '--neovim-02-only'
- '--neovim-04-only'
- '--linters-only'
steps:
- uses: actions/checkout@v2
- name: Run tests
run: ./run-tests -v ${{ matrix.vim-version }}

5
.gitignore vendored
View File

@@ -1,11 +1,12 @@
!.editorconfig
*.obj
*.pyc
# Ignore all hidden files everywhere.
# Use `git add -f` to add hidden files.
.*
__pycache__
*.pyc
/doc/tags
/init.vim
/test/ale-info-test-file
/vader_output
__pycache__
tags

View File

@@ -1,12 +0,0 @@
---
sudo: required
services:
- docker
language: generic
env:
- OPTIONS=--vim-80-only
- OPTIONS=--vim-81-only
- OPTIONS=--neovim-only
- OPTIONS=--linters-only
script: |
./run-tests -v $OPTIONS

View File

@@ -1,15 +1,17 @@
FROM tweekmonster/vim-testbed:latest
RUN install_vim -tag v8.0.0027 -build \
-tag v8.1.0519 -build \
-tag v8.2.2401 -build \
-tag neovim:v0.2.0 -build \
-tag neovim:v0.3.5 -build
-tag neovim:v0.4.4 -build
ENV PACKAGES="\
bash \
git \
python \
py-pip \
grep \
sed \
"
RUN apk --update add $PACKAGES && \
rm -rf /var/cache/apk/* /tmp/* /var/tmp/*
@@ -18,3 +20,7 @@ RUN pip install vim-vint==0.3.15
RUN git clone https://github.com/junegunn/vader.vim vader && \
cd vader && git checkout c6243dd81c98350df4dec608fa972df98fa2a3af
ARG GIT_VERSION
LABEL Version=${GIT_VERSION}
LABEL Name=w0rp/ale

View File

@@ -1,4 +1,4 @@
Copyright (c) 2016-2019, w0rp <devw0rp@gmail.com>
Copyright (c) 2016-2020, w0rp <devw0rp@gmail.com>
All rights reserved.
Redistribution and use in source and binary forms, with or without

206
README.md
View File

@@ -1,4 +1,4 @@
# Asynchronous Lint Engine [![Travis CI Build Status](https://travis-ci.com/w0rp/ale.svg?branch=master)](https://travis-ci.com/w0rp/ale) [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/r0ef1xu8xjmik58d/branch/master?svg=true)](https://ci.appveyor.com/project/w0rp/ale) [![Join the chat at https://gitter.im/vim-ale/Lobby](https://badges.gitter.im/vim-ale/Lobby.svg)](https://gitter.im/vim-ale/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
# Asynchronous Lint Engine [![GitHub Build Status](https://github.com/dense-analysis/ale/workflows/CI/badge.svg)](https://github.com/dense-analysis/ale/actions?query=event%3Apush+workflow%3ACI+branch%3Amaster++) [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/r0ef1xu8xjmik58d/branch/master?svg=true)](https://ci.appveyor.com/project/dense-analysis/ale) [![Join the chat at https://gitter.im/vim-ale/Lobby](https://badges.gitter.im/vim-ale/Lobby.svg)](https://gitter.im/vim-ale/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
![ALE Logo by Mark Grealish - https://www.bhalash.com/](https://user-images.githubusercontent.com/3518142/59195920-2c339500-8b85-11e9-9c22-f6b7f69637b8.jpg)
@@ -35,6 +35,10 @@ If you don't care about Language Server Protocol, ALE won't load any of the code
for working with it unless needed. One of ALE's general missions is that you
won't pay for the features that you don't use.
**Help Wanted:** If you would like to help maintain this plugin by managing the
many issues and pull requests that are submitted, please send the author an
email at [dev@w0rp.com](mailto:dev@w0rp.com?subject=Helping%20with%20ALE).
If you enjoy this plugin, feel free to contribute or check out the author's
other content at [w0rp.com](https://w0rp.com).
@@ -49,6 +53,7 @@ other content at [w0rp.com](https://w0rp.com).
5. [Find References](#usage-find-references)
6. [Hovering](#usage-hover)
7. [Symbol Search](#usage-symbol-search)
8. [Refactoring: Rename, Actions](#usage-refactoring)
3. [Installation](#installation)
1. [Installation with Vim package management](#standard-installation)
2. [Installation with Pathogen](#installation-with-pathogen)
@@ -57,23 +62,25 @@ other content at [w0rp.com](https://w0rp.com).
4. [Contributing](#contributing)
5. [FAQ](#faq)
1. [How do I disable particular linters?](#faq-disable-linters)
2. [How can I keep the sign gutter open?](#faq-keep-signs)
3. [How can I change the signs ALE uses?](#faq-change-signs)
4. [How can I change or disable the highlights ALE uses?](#faq-change-highlights)
5. [How can I show errors or warnings in my statusline?](#faq-statusline)
6. [How can I show errors or warnings in my lightline?](#faq-lightline)
7. [How can I change the format for echo messages?](#faq-echo-format)
8. [How can I execute some code when ALE starts or stops linting?](#faq-autocmd)
9. [How can I navigate between errors quickly?](#faq-navigation)
10. [How can I run linters only when I save files?](#faq-lint-on-save)
11. [How can I use the quickfix list instead of the loclist?](#faq-quickfix)
12. [How can I check JSX files with both stylelint and eslint?](#faq-jsx-stylelint-eslint)
13. [How can I check Vue files with ESLint?](#faq-vue-eslint)
14. [Will this plugin eat all of my laptop battery power?](#faq-my-battery-is-sad)
15. [How can I configure my C or C++ project?](#faq-c-configuration)
16. [How can I configure ALE differently for different buffers?](#faq-buffer-configuration)
17. [How can I configure the height of the list in which ALE displays errors?](#faq-list-window-height)
18. [How can I see what ALE has configured for the current file?](#faq-get-info)
2. [How can I see what ALE has configured for the current file?](#faq-get-info)
3. [How can I use ALE and coc.nvim together?](#faq-coc-nvim)
4. [How can I keep the sign gutter open?](#faq-keep-signs)
5. [How can I change the signs ALE uses?](#faq-change-signs)
6. [How can I change or disable the highlights ALE uses?](#faq-change-highlights)
7. [How can I show errors or warnings in my statusline?](#faq-statusline)
8. [How can I show errors or warnings in my lightline?](#faq-lightline)
9. [How can I change the format for echo messages?](#faq-echo-format)
10. [How can I execute some code when ALE starts or stops linting?](#faq-autocmd)
11. [How can I navigate between errors quickly?](#faq-navigation)
12. [How can I run linters only when I save files?](#faq-lint-on-save)
13. [How can I use the quickfix list instead of the loclist?](#faq-quickfix)
14. [How can I check JSX files with both stylelint and eslint?](#faq-jsx-stylelint-eslint)
15. [How can I check Vue files with ESLint?](#faq-vue-eslint)
16. [Will this plugin eat all of my laptop battery power?](#faq-my-battery-is-sad)
17. [How can I configure my C or C++ project?](#faq-c-configuration)
18. [How can I configure ALE differently for different buffers?](#faq-buffer-configuration)
19. [How can I configure the height of the list in which ALE displays errors?](#faq-list-window-height)
20. [How can I run linters or fixers via Docker or a VM?](#faq-vm)
<a name="supported-languages"></a>
@@ -98,7 +105,7 @@ programs for checking the syntax and semantics of your programs. By default,
linters will be re-run in the background to check your syntax when you open
new buffers or as you make edits to your files.
The behaviour of linting can be configured with a variety of options,
The behavior of linting can be configured with a variety of options,
documented in [the Vim help file](doc/ale.txt). For more information on the
options ALE offers, consult `:help ale-options` for global options and `:help
ale-integration-options` for options specified to particular linters.
@@ -189,6 +196,13 @@ completion manually with `<C-x><C-o>`.
set omnifunc=ale#completion#OmniFunc
```
ALE supports automatic imports from external modules. This behavior is disabled
by default and can be enabled by setting:
```vim
let g:ale_completion_autoimport = 1
```
See `:help ale-completion` for more information.
<a name="usage-go-to-definition"></a>
@@ -219,6 +233,9 @@ ALE supports "hover" information for printing brief information about symbols at
the cursor taken from Language Server Protocol linters and `tsserver` with the
`ALEHover` command.
Truncated information will be displayed when the cursor rests on a symbol by
default, as long as there are no problems on the same line.
The information can be displayed in a `balloon` tooltip in Vim or GVim by
hovering your mouse over symbols. Mouse hovering is enabled by default in GVim,
and needs to be configured for Vim 8.1+ in terminals.
@@ -237,6 +254,18 @@ similar to a given query string.
See `:help ale-symbol-search` for more information.
<a name="usage-refactoring"></a>
### 2.viii Refactoring: Rename, Actions
ALE supports renaming symbols in symbols in code such as variables or class
names with the `ALERename` command.
`ALECodeAction` will execute actions on the cursor or applied to a visual
range selection, such as automatically fixing errors.
See `:help ale-refactor` for more information.
<a name="installation"></a>
## 3. Installation
@@ -258,14 +287,14 @@ any other tools. Simply clone the plugin into your `pack` directory.
```bash
mkdir -p ~/.vim/pack/git-plugins/start
git clone --depth 1 https://github.com/w0rp/ale.git ~/.vim/pack/git-plugins/start/ale
git clone --depth 1 https://github.com/dense-analysis/ale.git ~/.vim/pack/git-plugins/start/ale
```
#### NeoVim on Unix
```bash
mkdir -p ~/.local/share/nvim/site/pack/git-plugins/start
git clone --depth 1 https://github.com/w0rp/ale.git ~/.local/share/nvim/site/pack/git-plugins/start/ale
git clone --depth 1 https://github.com/dense-analysis/ale.git ~/.local/share/nvim/site/pack/git-plugins/start/ale
```
#### Vim 8 on Windows
@@ -273,7 +302,7 @@ git clone --depth 1 https://github.com/w0rp/ale.git ~/.local/share/nvim/site/pac
```bash
# Run these commands in the "Git for Windows" Bash terminal
mkdir -p ~/vimfiles/pack/git-plugins/start
git clone --depth 1 https://github.com/w0rp/ale.git ~/vimfiles/pack/git-plugins/start/ale
git clone --depth 1 https://github.com/dense-analysis/ale.git ~/vimfiles/pack/git-plugins/start/ale
```
#### Generating Vim help files
@@ -304,7 +333,7 @@ You can run the following commands in your terminal to do so:
```bash
cd ~/.vim/bundle
git clone https://github.com/w0rp/ale.git
git clone https://github.com/dense-analysis/ale.git
```
<a name="installation-with-vundle"></a>
@@ -312,12 +341,14 @@ git clone https://github.com/w0rp/ale.git
### 3.iii. Installation with Vundle
You can install this plugin using [Vundle](https://github.com/VundleVim/Vundle.vim)
by using the path on GitHub for this repository.
by adding the GitHub path for this repository to your `~/.vimrc`:
```vim
Plugin 'w0rp/ale'
Plugin 'dense-analysis/ale'
```
Then run the command `:PluginInstall` in Vim.
See the Vundle documentation for more information.
<a name="installation-with-vim-plug"></a>
@@ -325,26 +356,29 @@ See the Vundle documentation for more information.
### 3.iiii. Installation with Vim-Plug
You can install this plugin using [Vim-Plug](https://github.com/junegunn/vim-plug)
by adding the GitHub path for this repository to your `~/.vimrc`
and running `:PlugInstall`.
by adding the GitHub path for this repository to your `~/.vimrc`:
```vim
Plug 'w0rp/ale'
Plug 'dense-analysis/ale'
```
Then run the command `:PlugInstall` in Vim.
See the Vim-Plug documentation for more information.
<a name="contributing"></a>
## 4. Contributing
If you would like to see support for more languages and tools, please
[create an issue](https://github.com/w0rp/ale/issues)
or [create a pull request](https://github.com/w0rp/ale/pulls).
[create an issue](https://github.com/dense-analysis/ale/issues)
or [create a pull request](https://github.com/dense-analysis/ale/pulls).
If your tool can read from stdin or you have code to suggest which is good,
support can be happily added for it.
If you are interested in the general direction of the project, check out the
[wiki home page](https://github.com/w0rp/ale/wiki). The wiki includes a
Roadmap for the future, and more.
[wiki home page](https://github.com/dense-analysis/ale/wiki). The wiki includes
a Roadmap for the future, and more.
If you'd liked to discuss the project more directly, check out the `#vim-ale` channel
on Freenode. Web chat is available [here](https://webchat.freenode.net/?channels=vim-ale).
@@ -401,9 +435,56 @@ This plugin will look for linters in the [`ale_linters`](ale_linters) directory.
Each directory within corresponds to a particular filetype in Vim, and each file
in each directory corresponds to the name of a particular linter.
<a name="faq-get-info"></a>
### 5.ii. How can I see what ALE has configured for the current file?
Run the following to see what is currently configured:
```vim
:ALEInfo
```
<a name="faq-coc-nvim"></a>
### 5.iii. How can I use ALE and coc.nvim together?
[coc.nvim](https://github.com/neoclide/coc.nvim) is a popular Vim plugin written
in TypeScript and dependent on the [npm](https://www.npmjs.com/) ecosystem for
providing full IDE features to Vim. Both ALE and coc.nvim implement
[Language Server Protocol](https://microsoft.github.io/language-server-protocol/)
(LSP) clients for supporting diagnostics (linting with a live server), and other
features like auto-completion, and others listed above.
ALE is primarily focused on integrating with external programs through virtually
any means, provided the plugin remains almost entirely written in Vim script.
coc.nvim is primarily focused on bringing IDE features to Vim. If you want to
run external programs on your files to check for errors, and also use the most
advanced IDE features, you might want to use both plugins at the same time.
The easiest way to get both plugins to work together is to configure coc.nvim to
send diagnostics to ALE, so ALE controls how all problems are presented to you,
and to disable all LSP features in ALE, so ALE doesn't try to provide LSP
features already provided by coc.nvim, such as auto-completion.
1. Open your coc.nvim configuration file with `:CocConfig` and add
`"diagnostic.displayByAle": true` to your settings.
2. Add `let g:ale_disable_lsp = 1` to your vimrc file, before plugins are
loaded.
You can also use `b:ale_disable_lsp` in your ftplugin files to enable or disable
LSP features in ALE for different filetypes. After you configure coc.nvim and
ALE this way, you can further configure how problems appear to you by using all
of the settings mentioned in ALE's help file, including how often diagnostics
are requested. See `:help ale-lint`.
The integration between ALE and coc.nvim works using an API ALE offers for
letting any other plugin integrate with ALE. If you are interested in writing a
similar integration, see `:help ale-lint-other-sources`.
<a name="faq-keep-signs"></a>
### 5.ii. How can I keep the sign gutter open?
### 5.iv. How can I keep the sign gutter open?
You can keep the sign gutter open at all times by setting the
`g:ale_sign_column_always` to 1
@@ -414,7 +495,7 @@ let g:ale_sign_column_always = 1
<a name="faq-change-signs"></a>
### 5.iii. How can I change the signs ALE uses?
### 5.v. How can I change the signs ALE uses?
Use these options to specify what text should be used for signs:
@@ -434,7 +515,7 @@ highlight clear ALEWarningSign
<a name="faq-change-highlights"></a>
### 5.iv. How can I change or disable the highlights ALE uses?
### 5.vi. How can I change or disable the highlights ALE uses?
ALE's highlights problems with highlight groups which link to `SpellBad`,
`SpellCap`, `error`, and `todo` groups by default. The characters that are
@@ -460,7 +541,7 @@ See `:help ale-highlights` for more information.
<a name="faq-statusline"></a>
### 5.v. How can I show errors or warnings in my statusline?
### 5.vii. How can I show errors or warnings in my statusline?
[vim-airline](https://github.com/vim-airline/vim-airline) integrates with ALE
for displaying error information in the status bar. If you want to see the
@@ -509,7 +590,7 @@ for more information.
<a name="faq-lightline"></a>
### 5.vi. How can I show errors or warnings in my lightline?
### 5.viii. How can I show errors or warnings in my lightline?
[lightline](https://github.com/itchyny/lightline.vim) does not have built-in
support for ALE, nevertheless there is a plugin that adds this functionality: [maximbaz/lightline-ale](https://github.com/maximbaz/lightline-ale).
@@ -518,7 +599,7 @@ For more information, check out the sources of that plugin, `:help ale#statuslin
<a name="faq-echo-format"></a>
### 5.vii. How can I change the format for echo messages?
### 5.ix. How can I change the format for echo messages?
There are 3 global options that allow customizing the echoed message.
@@ -547,7 +628,7 @@ See `:help g:ale_echo_msg_format` for more information.
<a name="faq-autocmd"></a>
### 5.viii. How can I execute some code when ALE starts or stops linting?
### 5.x. How can I execute some code when ALE starts or stops linting?
ALE runs its own [autocmd](http://vimdoc.sourceforge.net/htmldoc/autocmd.html)
events when a lint or fix cycle are started and stopped. There is also an event
@@ -570,7 +651,7 @@ augroup END
<a name="faq-navigation"></a>
### 5.ix. How can I navigate between errors quickly?
### 5.xi. How can I navigate between errors quickly?
ALE offers some commands with `<Plug>` keybinds for moving between warnings and
errors quickly. You can map the keys Ctrl+j and Ctrl+k to moving between errors
@@ -586,7 +667,7 @@ For more information, consult the online documentation with
<a name="faq-lint-on-save"></a>
### 5.x. How can I run linters only when I save files?
### 5.xii. How can I run linters only when I save files?
ALE offers an option `g:ale_lint_on_save` for enabling running the linters
when files are saved. This option is enabled by default. If you only
@@ -596,6 +677,7 @@ options off.
```vim
" Write this in your vimrc file
let g:ale_lint_on_text_changed = 'never'
let g:ale_lint_on_insert_leave = 0
" You can disable this option too
" if you don't want linters to run on opening a file
let g:ale_lint_on_enter = 0
@@ -606,7 +688,7 @@ files, you can set `g:ale_lint_on_save` to `0`.
<a name="faq-quickfix"></a>
### 5.xi. How can I use the quickfix list instead of the loclist?
### 5.xiii. How can I use the quickfix list instead of the loclist?
The quickfix list can be enabled by turning the `g:ale_set_quickfix`
option on. If you wish to also disable the loclist, you can disable
@@ -636,7 +718,7 @@ instead of the default horizontally.
<a name="faq-jsx-stylelint-eslint"></a>
### 5.xii. How can I check JSX files with both stylelint and eslint?
### 5.xiv. How can I check JSX files with both stylelint and eslint?
If you configure ALE options correctly in your vimrc file, and install
the right tools, you can check JSX files with stylelint and eslint.
@@ -678,7 +760,7 @@ no linter will be run twice for the same file.
<a name="faq-vue-eslint"></a>
### 5.xiii. How can I check Vue files with ESLint?
### 5.xv. How can I check Vue files with ESLint?
To check Vue files with ESLint, your ESLint project configuration file must be
configured to use the [Vue plugin](https://github.com/vuejs/eslint-plugin-vue).
@@ -709,7 +791,7 @@ let g:ale_linters = {'vue': ['eslint', 'vls']}
<a name="faq-my-battery-is-sad"></a>
### 5.xiv. Will this plugin eat all of my laptop battery power?
### 5.xvi. Will this plugin eat all of my laptop battery power?
ALE takes advantage of the power of various tools to check your code. This of
course means that CPU time will be used to continuously check your code. If you
@@ -722,7 +804,7 @@ while you type. ALE uses a timeout which is cancelled and reset every time you
type, and this delay can be increased so linters are run less often. See
`:help g:ale_lint_delay` for more information.
If you don't wish to run linters while you type, you can disable that behaviour.
If you don't wish to run linters while you type, you can disable that behavior.
Set `g:ale_lint_on_text_changed` to `never`. You won't get as frequent error
checking, but ALE shouldn't block your ability to edit a document after you save
a file, so the asynchronous nature of the plugin will still be an advantage.
@@ -733,7 +815,7 @@ including the option `g:ale_lint_on_enter`, and you can run ALE manually with
<a name="faq-c-configuration"></a>
### 5.xv. How can I configure my C or C++ project?
### 5.xvii. How can I configure my C or C++ project?
The structure of C and C++ projects varies wildly from project to project, with
many different build tools being used for building them, and many different
@@ -753,13 +835,24 @@ setting. Consult the documentation for that setting for more information.
`b:ale_linters` can be used to select which tools you want to run, say if you
want to use only `gcc` for one project, and only `clang` for another.
ALE will attempt to parse `compile_commands.json` files to discover compiler
flags to use when linting code. See `:help g:ale_c_parse_compile_commands` for
more information. See Clang's documentation for
[compile_commands.json files](https://clang.llvm.org/docs/JSONCompilationDatabase.html).
You should strongly consider generating them in your builds, which is easy to do
with CMake.
You can also configure ALE to automatically run `make -n` to run dry runs on
`Makefile`s to discover compiler flags. This can execute arbitrary code, so the
option is disabled by default. See `:help g:ale_c_parse_makefile`.
You may also configure buffer-local settings for linters with project-specific
vimrc files. [local_vimrc](https://github.com/LucHermitte/local_vimrc) can be
used for executing local vimrc files which can be shared in your project.
<a name="faq-buffer-configuration"></a>
### 5.xvi. How can I configure ALE differently for different buffers?
### 5.xviii. How can I configure ALE differently for different buffers?
ALE offers various ways to configure which linters or fixers are run, and
other settings. For the majority of ALE's settings, they can either be
@@ -795,7 +888,7 @@ Buffer-local variables for settings always override the global settings.
<a name="faq-list-window-height"></a>
### 5.xvii. How can I configure the height of the list in which ALE displays errors?
### 5.xix. How can I configure the height of the list in which ALE displays errors?
To set a default height for the error list, use the `g:ale_list_window_size` variable.
@@ -804,12 +897,13 @@ To set a default height for the error list, use the `g:ale_list_window_size` var
let g:ale_list_window_size = 5
```
<a name="faq-get-info"></a>
<a name="faq-vm"></a>
### 5.xviii. How can I see what ALE has configured for the current file?
### 5.xx. How can I run linters or fixers via Docker or a VM?
Run the following to see what is currently configured:
```vim
:ALEInfo
```
ALE supports running linters or fixers via Docker, virtual machines, or in
combination with any remote machine with a different file system, so long as the
tools are well-integrated with ALE, and ALE is properly configured to run the
correct commands and map filename paths between different file systems. See
`:help ale-lint-other-machines` for the full documentation on how to configure
ALE to support this.

26
ale_linters/ada/adals.vim Normal file
View File

@@ -0,0 +1,26 @@
" Author: Bartek Jasicki http://github.com/thindil
" Description: Support for Ada Language Server
call ale#Set('ada_adals_executable', 'ada_language_server')
call ale#Set('ada_adals_project', 'default.gpr')
call ale#Set('ada_adals_encoding', 'utf-8')
function! ale_linters#ada#adals#GetAdaLSConfig(buffer) abort
return {
\ 'ada.projectFile': ale#Var(a:buffer, 'ada_adals_project'),
\ 'ada.defaultCharset': ale#Var(a:buffer, 'ada_adals_encoding')
\}
endfunction
function! ale_linters#ada#adals#GetRootDirectory(buffer) abort
return fnamemodify(bufname(a:buffer), ':p:h')
endfunction
call ale#linter#Define('ada', {
\ 'name': 'adals',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'ada_adals_executable')},
\ 'command': '%e',
\ 'project_root': function('ale_linters#ada#adals#GetRootDirectory'),
\ 'lsp_config': function('ale_linters#ada#adals#GetAdaLSConfig')
\})

View File

@@ -18,7 +18,7 @@ function! ale_linters#ada#gcc#GetCommand(buffer) abort
" -gnatc: Check syntax and semantics only (no code generation attempted)
return '%e -x ada -c -gnatc'
\ . ' -o ' . ale#Escape(l:out_file)
\ . ' -I ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . ' -I %s:h'
\ . ale#Pad(ale#Var(a:buffer, 'ada_gcc_options'))
\ . ' %t'
endfunction

View File

@@ -0,0 +1,12 @@
" Author: Leo <thinkabit.ukim@gmail.com>
" Description: apkbuild-lint from atools linter for APKBUILDs
call ale#Set('apkbuild_apkbuild_lint_executable', 'apkbuild-lint')
call ale#linter#Define('apkbuild', {
\ 'name': 'apkbuild_lint',
\ 'output_stream': 'stdout',
\ 'executable': {b -> ale#Var(b, 'apkbuild_apkbuild_lint_executable')},
\ 'command': '%e %t',
\ 'callback': 'ale#handlers#atools#Handle',
\})

View File

@@ -0,0 +1,12 @@
" Author: Leo <thinkabit.ukim@gmail.com>
" Description: secfixes-check from atools linter for APKBUILDs
call ale#Set('apkbuild_secfixes_check_executable', 'secfixes-check')
call ale#linter#Define('apkbuild', {
\ 'name': 'secfixes_check',
\ 'output_stream': 'stdout',
\ 'executable': {b -> ale#Var(b, 'apkbuild_secfixes_check_executable')},
\ 'command': '%e %t',
\ 'callback': 'ale#handlers#atools#Handle',
\})

View File

@@ -0,0 +1,5 @@
" Author: Horacio Sanson (hsanson [ät] gmail.com)
" Description: languagetool for asciidoc files, copied from markdown.
call ale#handlers#languagetool#DefineLinter('asciidoc')

View File

@@ -9,7 +9,7 @@ function! ale_linters#asm#gcc#GetCommand(buffer) abort
" -fsyntax-only doesn't catch everything.
return '%e -x assembler'
\ . ' -o ' . g:ale#util#nul_file
\ . '-iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . '-iquote %s:h'
\ . ' ' . ale#Var(a:buffer, 'asm_gcc_options') . ' -'
endfunction

View File

@@ -0,0 +1,4 @@
" Author: Ian2020 <https://github.com/Ian2020>
" Description: shellcheck linter for bats scripts.
call ale#handlers#shellcheck#DefineLinter('bats')

View File

@@ -18,7 +18,12 @@ function! ale_linters#bib#bibclean#get_type(str) abort
endfunction
function! ale_linters#bib#bibclean#match_msg(line) abort
return matchlist(a:line, '^\(.*\) "stdin", line \(.*\): \(.*\)$')
" Legacy message pattern works for bibclean <= v2.11.4. If empty, try
" the new message pattern for bibtex > v2.11.4
let l:matches_legacy = matchlist(a:line, '^\(.*\) "stdin", line \(\d\+\): \(.*\)$')
return ! empty(l:matches_legacy) ? l:matches_legacy
\ : matchlist(a:line, '^\(.*\) stdin:\(\d\+\):\(.*\)$')
endfunction
function! ale_linters#bib#bibclean#match_entry(line) abort

53
ale_linters/c/cc.vim Normal file
View File

@@ -0,0 +1,53 @@
" Author: w0rp <devw0rp@gmail.com>
" Description: A C compiler linter for C files with gcc/clang, etc.
call ale#Set('c_cc_executable', '<auto>')
call ale#Set('c_cc_options', '-std=c11 -Wall')
function! ale_linters#c#cc#GetExecutable(buffer) abort
let l:executable = ale#Var(a:buffer, 'c_cc_executable')
" Default to either clang or gcc.
if l:executable is# '<auto>'
if ale#engine#IsExecutable(a:buffer, 'clang')
let l:executable = 'clang'
else
let l:executable = 'gcc'
endif
endif
return l:executable
endfunction
function! ale_linters#c#cc#GetCommand(buffer, output) abort
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
let l:ale_flags = ale#Var(a:buffer, 'c_cc_options')
if l:cflags =~# '-std='
let l:ale_flags = substitute(
\ l:ale_flags,
\ '-std=\(c\|gnu\)[0-9]\{2\}',
\ '',
\ 'g')
endif
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
"
" `-o /dev/null` or `-o null` is needed to catch all errors,
" -fsyntax-only doesn't catch everything.
return '%e -S -x c'
\ . ' -o ' . g:ale#util#nul_file
\ . ' -iquote %s:h'
\ . ale#Pad(l:cflags)
\ . ale#Pad(l:ale_flags) . ' -'
endfunction
call ale#linter#Define('c', {
\ 'name': 'cc',
\ 'aliases': ['gcc', 'clang'],
\ 'output_stream': 'stderr',
\ 'executable': function('ale_linters#c#cc#GetExecutable'),
\ 'command': {b -> ale#c#RunMakeCommand(b, function('ale_linters#c#cc#GetCommand'))},
\ 'callback': 'ale#handlers#gcc#HandleGCCFormatWithIncludes',
\})

View File

@@ -3,6 +3,7 @@
call ale#Set('c_ccls_executable', 'ccls')
call ale#Set('c_ccls_init_options', {})
call ale#Set('c_build_dir', '')
call ale#linter#Define('c', {
\ 'name': 'ccls',
@@ -10,5 +11,5 @@ call ale#linter#Define('c', {
\ 'executable': {b -> ale#Var(b, 'c_ccls_executable')},
\ 'command': '%e',
\ 'project_root': function('ale#handlers#ccls#GetProjectRoot'),
\ 'initialization_options': {b -> ale#Var(b, 'c_ccls_init_options')},
\ 'initialization_options': {b -> ale#handlers#ccls#GetInitOpts(b, 'c_ccls_init_options')},
\})

View File

@@ -1,24 +0,0 @@
" Author: Masahiro H https://github.com/mshr-h
" Description: clang linter for c files
call ale#Set('c_clang_executable', 'clang')
call ale#Set('c_clang_options', '-std=c11 -Wall')
function! ale_linters#c#clang#GetCommand(buffer, output) abort
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
return '%e -S -x c -fsyntax-only'
\ . ' -iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . ale#Pad(l:cflags)
\ . ale#Pad(ale#Var(a:buffer, 'c_clang_options')) . ' -'
endfunction
call ale#linter#Define('c', {
\ 'name': 'clang',
\ 'output_stream': 'stderr',
\ 'executable': {b -> ale#Var(b, 'c_clang_executable')},
\ 'command': {b -> ale#c#RunMakeCommand(b, function('ale_linters#c#clang#GetCommand'))},
\ 'callback': 'ale#handlers#gcc#HandleGCCFormatWithIncludes',
\})

View File

@@ -3,9 +3,14 @@
call ale#Set('c_clangd_executable', 'clangd')
call ale#Set('c_clangd_options', '')
call ale#Set('c_build_dir', '')
function! ale_linters#c#clangd#GetCommand(buffer) abort
return '%e' . ale#Pad(ale#Var(a:buffer, 'c_clangd_options'))
let l:build_dir = ale#c#GetBuildDirectory(a:buffer)
return '%e'
\ . ale#Pad(ale#Var(a:buffer, 'c_clangd_options'))
\ . (!empty(l:build_dir) ? ' -compile-commands-dir=' . ale#Escape(l:build_dir) : '')
endfunction
call ale#linter#Define('c', {

View File

@@ -19,14 +19,17 @@ call ale#Set('c_clangtidy_options', '')
call ale#Set('c_clangtidy_extra_options', '')
call ale#Set('c_build_dir', '')
function! ale_linters#c#clangtidy#GetCommand(buffer) abort
function! ale_linters#c#clangtidy#GetCommand(buffer, output) abort
let l:checks = join(ale#Var(a:buffer, 'c_clangtidy_checks'), ',')
let l:build_dir = ale#c#GetBuildDirectory(a:buffer)
let l:options = ''
" Get the extra options if we couldn't find a build directory.
let l:options = empty(l:build_dir)
\ ? ale#Var(a:buffer, 'c_clangtidy_options')
\ : ''
if empty(l:build_dir)
let l:options = ale#Var(a:buffer, 'c_clangtidy_options')
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
let l:options .= !empty(l:options) ? ale#Pad(l:cflags) : l:cflags
endif
" Get the options to pass directly to clang-tidy
let l:extra_options = ale#Var(a:buffer, 'c_clangtidy_extra_options')
@@ -43,7 +46,7 @@ call ale#linter#Define('c', {
\ 'name': 'clangtidy',
\ 'output_stream': 'stdout',
\ 'executable': {b -> ale#Var(b, 'c_clangtidy_executable')},
\ 'command': function('ale_linters#c#clangtidy#GetCommand'),
\ 'command': {b -> ale#c#RunMakeCommand(b, function('ale_linters#c#clangtidy#GetCommand'))},
\ 'callback': 'ale#handlers#gcc#HandleGCCFormat',
\ 'lint_file': 1,
\})

View File

@@ -10,9 +10,11 @@ function! ale_linters#c#cppcheck#GetCommand(buffer) abort
let l:buffer_path_include = empty(l:compile_commands_option)
\ ? ale#handlers#cppcheck#GetBufferPathIncludeOptions(a:buffer)
\ : ''
let l:template = ' --template=' . ale#Escape('{file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\\n{code}')
return l:cd_command
\ . '%e -q --language=c'
\ . l:template
\ . ale#Pad(l:compile_commands_option)
\ . ale#Pad(ale#Var(a:buffer, 'c_cppcheck_options'))
\ . l:buffer_path_include

View File

@@ -1,28 +0,0 @@
" Author: w0rp <devw0rp@gmail.com>
" Description: gcc linter for c files
call ale#Set('c_gcc_executable', 'gcc')
call ale#Set('c_gcc_options', '-std=c11 -Wall')
function! ale_linters#c#gcc#GetCommand(buffer, output) abort
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
"
" `-o /dev/null` or `-o null` is needed to catch all errors,
" -fsyntax-only doesn't catch everything.
return '%e -S -x c'
\ . ' -o ' . g:ale#util#nul_file
\ . ' -iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . ale#Pad(l:cflags)
\ . ale#Pad(ale#Var(a:buffer, 'c_gcc_options')) . ' -'
endfunction
call ale#linter#Define('c', {
\ 'name': 'gcc',
\ 'output_stream': 'stderr',
\ 'executable': {b -> ale#Var(b, 'c_gcc_executable')},
\ 'command': {b -> ale#c#RunMakeCommand(b, function('ale_linters#c#gcc#GetCommand'))},
\ 'callback': 'ale#handlers#gcc#HandleGCCFormatWithIncludes',
\})

View File

@@ -29,6 +29,6 @@ call ale#linter#Define('clojure', {
\ 'name': 'clj-kondo',
\ 'output_stream': 'stdout',
\ 'executable': 'clj-kondo',
\ 'command': 'clj-kondo --lint %t',
\ 'command': 'clj-kondo --cache --lint %t',
\ 'callback': 'ale_linters#clojure#clj_kondo#HandleCljKondoFormat',
\})

View File

@@ -29,6 +29,7 @@ endfunction
call ale#linter#Define('cloudformation', {
\ 'name': 'cloudformation',
\ 'aliases': ['cfn-lint'],
\ 'executable': 'cfn-lint',
\ 'command': 'cfn-lint --template %t --format parseable',
\ 'callback': 'ale_linters#cloudformation#cfn_python_lint#Handle',

53
ale_linters/cpp/cc.vim Normal file
View File

@@ -0,0 +1,53 @@
" Author: w0rp <devw0rp@gmail.com>
" Description: A C++ compiler linter for C++ files with gcc/clang, etc.
call ale#Set('cpp_cc_executable', '<auto>')
call ale#Set('cpp_cc_options', '-std=c++14 -Wall')
function! ale_linters#cpp#cc#GetExecutable(buffer) abort
let l:executable = ale#Var(a:buffer, 'cpp_cc_executable')
" Default to either clang++ or gcc.
if l:executable is# '<auto>'
if ale#engine#IsExecutable(a:buffer, 'clang++')
let l:executable = 'clang++'
else
let l:executable = 'gcc'
endif
endif
return l:executable
endfunction
function! ale_linters#cpp#cc#GetCommand(buffer, output) abort
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
let l:ale_flags = ale#Var(a:buffer, 'cpp_cc_options')
if l:cflags =~# '-std='
let l:ale_flags = substitute(
\ l:ale_flags,
\ '-std=\(c\|gnu\)++[0-9]\{2\}',
\ '',
\ 'g')
endif
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
"
" `-o /dev/null` or `-o null` is needed to catch all errors,
" -fsyntax-only doesn't catch everything.
return '%e -S -x c++'
\ . ' -o ' . g:ale#util#nul_file
\ . ' -iquote %s:h'
\ . ale#Pad(l:cflags)
\ . ale#Pad(l:ale_flags) . ' -'
endfunction
call ale#linter#Define('cpp', {
\ 'name': 'cc',
\ 'aliases': ['gcc', 'clang', 'g++', 'clang++'],
\ 'output_stream': 'stderr',
\ 'executable': function('ale_linters#cpp#cc#GetExecutable'),
\ 'command': {b -> ale#c#RunMakeCommand(b, function('ale_linters#cpp#cc#GetCommand'))},
\ 'callback': 'ale#handlers#gcc#HandleGCCFormatWithIncludes',
\})

View File

@@ -3,6 +3,7 @@
call ale#Set('cpp_ccls_executable', 'ccls')
call ale#Set('cpp_ccls_init_options', {})
call ale#Set('c_build_dir', '')
call ale#linter#Define('cpp', {
\ 'name': 'ccls',
@@ -10,5 +11,5 @@ call ale#linter#Define('cpp', {
\ 'executable': {b -> ale#Var(b, 'cpp_ccls_executable')},
\ 'command': '%e',
\ 'project_root': function('ale#handlers#ccls#GetProjectRoot'),
\ 'initialization_options': {b -> ale#Var(b, 'cpp_ccls_init_options')},
\ 'initialization_options': {b -> ale#handlers#ccls#GetInitOpts(b, 'cpp_ccls_init_options')},
\})

View File

@@ -1,24 +0,0 @@
" Author: Tomota Nakamura <https://github.com/tomotanakamura>
" Description: clang linter for cpp files
call ale#Set('cpp_clang_executable', 'clang++')
call ale#Set('cpp_clang_options', '-std=c++14 -Wall')
function! ale_linters#cpp#clang#GetCommand(buffer, output) abort
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
return '%e -S -x c++ -fsyntax-only'
\ . ' -iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . ale#Pad(l:cflags)
\ . ale#Pad(ale#Var(a:buffer, 'cpp_clang_options')) . ' -'
endfunction
call ale#linter#Define('cpp', {
\ 'name': 'clang',
\ 'output_stream': 'stderr',
\ 'executable': {b -> ale#Var(b, 'cpp_clang_executable')},
\ 'command': {b -> ale#c#RunMakeCommand(b, function('ale_linters#cpp#clang#GetCommand'))},
\ 'callback': 'ale#handlers#gcc#HandleGCCFormatWithIncludes',
\})

View File

@@ -20,7 +20,7 @@ function! ale_linters#cpp#clangcheck#GetCommand(buffer) abort
" being generated. These are only added if no build directory can be
" detected.
return '%e -analyze %s'
\ . (empty(l:build_dir) ? ' -extra-arg -Xclang -extra-arg -analyzer-output=text' : '')
\ . (empty(l:build_dir) ? ' --extra-arg=-Xclang --extra-arg=-analyzer-output=text --extra-arg=-fno-color-diagnostics': '')
\ . ale#Pad(l:user_options)
\ . (!empty(l:build_dir) ? ' -p ' . ale#Escape(l:build_dir) : '')
endfunction

View File

@@ -3,9 +3,14 @@
call ale#Set('cpp_clangd_executable', 'clangd')
call ale#Set('cpp_clangd_options', '')
call ale#Set('c_build_dir', '')
function! ale_linters#cpp#clangd#GetCommand(buffer) abort
return '%e' . ale#Pad(ale#Var(a:buffer, 'cpp_clangd_options'))
let l:build_dir = ale#c#GetBuildDirectory(a:buffer)
return '%e'
\ . ale#Pad(ale#Var(a:buffer, 'cpp_clangd_options'))
\ . (!empty(l:build_dir) ? ' -compile-commands-dir=' . ale#Escape(l:build_dir) : '')
endfunction
call ale#linter#Define('cpp', {

View File

@@ -13,14 +13,24 @@ call ale#Set('cpp_clangtidy_options', '')
call ale#Set('cpp_clangtidy_extra_options', '')
call ale#Set('c_build_dir', '')
function! ale_linters#cpp#clangtidy#GetCommand(buffer) abort
function! ale_linters#cpp#clangtidy#GetCommand(buffer, output) abort
let l:checks = join(ale#Var(a:buffer, 'cpp_clangtidy_checks'), ',')
let l:build_dir = ale#c#GetBuildDirectory(a:buffer)
let l:options = ''
" Get the extra options if we couldn't find a build directory.
let l:options = empty(l:build_dir)
\ ? ale#Var(a:buffer, 'cpp_clangtidy_options')
\ : ''
if empty(l:build_dir)
let l:options = ale#Var(a:buffer, 'cpp_clangtidy_options')
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
let l:options .= !empty(l:options) ? ale#Pad(l:cflags) : l:cflags
" Tell clang-tidy a .h header with a C++ filetype in Vim is a C++ file
" only when compile-commands.json file is not there. Adding these
" flags makes clang-tidy completely ignore compile commmands.
if expand('#' . a:buffer) =~# '\.h$'
let l:options .= !empty(l:options) ? ' -x c++' : '-x c++'
endif
endif
" Get the options to pass directly to clang-tidy
let l:extra_options = ale#Var(a:buffer, 'cpp_clangtidy_extra_options')
@@ -37,7 +47,7 @@ call ale#linter#Define('cpp', {
\ 'name': 'clangtidy',
\ 'output_stream': 'stdout',
\ 'executable': {b -> ale#Var(b, 'cpp_clangtidy_executable')},
\ 'command': function('ale_linters#cpp#clangtidy#GetCommand'),
\ 'command': {b -> ale#c#RunMakeCommand(b, function('ale_linters#cpp#clangtidy#GetCommand'))},
\ 'callback': 'ale#handlers#gcc#HandleGCCFormat',
\ 'lint_file': 1,
\})

View File

@@ -10,9 +10,11 @@ function! ale_linters#cpp#cppcheck#GetCommand(buffer) abort
let l:buffer_path_include = empty(l:compile_commands_option)
\ ? ale#handlers#cppcheck#GetBufferPathIncludeOptions(a:buffer)
\ : ''
let l:template = ' --template=' . ale#Escape('{file}:{line}:{column}: {severity}:{inconclusive:inconclusive:} {message} [{id}]\\n{code}')
return l:cd_command
\ . '%e -q --language=c++'
\ . l:template
\ . ale#Pad(l:compile_commands_option)
\ . ale#Pad(ale#Var(a:buffer, 'cpp_cppcheck_options'))
\ . l:buffer_path_include

View File

@@ -1,29 +0,0 @@
" Author: geam <mdelage@student.42.fr>
" Description: gcc linter for cpp files
"
call ale#Set('cpp_gcc_executable', 'gcc')
call ale#Set('cpp_gcc_options', '-std=c++14 -Wall')
function! ale_linters#cpp#gcc#GetCommand(buffer, output) abort
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
"
" `-o /dev/null` or `-o null` is needed to catch all errors,
" -fsyntax-only doesn't catch everything.
return '%e -S -x c++'
\ . ' -o ' . g:ale#util#nul_file
\ . ' -iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . ale#Pad(l:cflags)
\ . ale#Pad(ale#Var(a:buffer, 'cpp_gcc_options')) . ' -'
endfunction
call ale#linter#Define('cpp', {
\ 'name': 'gcc',
\ 'aliases': ['g++'],
\ 'output_stream': 'stderr',
\ 'executable': {b -> ale#Var(b, 'cpp_gcc_executable')},
\ 'command': {b -> ale#c#RunMakeCommand(b, function('ale_linters#cpp#gcc#GetCommand'))},
\ 'callback': 'ale#handlers#gcc#HandleGCCFormatWithIncludes',
\})

View File

@@ -5,6 +5,10 @@ function! ale_linters#crystal#crystal#Handle(buffer, lines) abort
let l:output = []
for l:error in ale#util#FuzzyJSONDecode(a:lines, [])
if !has_key(l:error, 'file')
continue
endif
call add(l:output, {
\ 'lnum': l:error.line + 0,
\ 'col': l:error.column + 0,

95
ale_linters/cs/csc.vim Normal file
View File

@@ -0,0 +1,95 @@
call ale#Set('cs_csc_options', '')
call ale#Set('cs_csc_source', '')
call ale#Set('cs_csc_assembly_path', [])
call ale#Set('cs_csc_assemblies', [])
function! s:GetWorkingDirectory(buffer) abort
let l:working_directory = ale#Var(a:buffer, 'cs_csc_source')
if !empty(l:working_directory)
return l:working_directory
endif
return expand('#' . a:buffer . ':p:h')
endfunction
function! ale_linters#cs#csc#GetCommand(buffer) abort
" Pass assembly paths via the -lib: parameter.
let l:path_list = ale#Var(a:buffer, 'cs_csc_assembly_path')
let l:lib_option = !empty(l:path_list)
\ ? '/lib:' . join(map(copy(l:path_list), 'ale#Escape(v:val)'), ',')
\ : ''
" Pass paths to DLL files via the -r: parameter.
let l:assembly_list = ale#Var(a:buffer, 'cs_csc_assemblies')
let l:r_option = !empty(l:assembly_list)
\ ? '/r:' . join(map(copy(l:assembly_list), 'ale#Escape(v:val)'), ',')
\ : ''
" register temporary module target file with ale
" register temporary module target file with ALE.
let l:out = ale#command#CreateFile(a:buffer)
" The code is compiled as a module and the output is redirected to a
" temporary file.
return ale#path#CdString(s:GetWorkingDirectory(a:buffer))
\ . 'csc /unsafe'
\ . ale#Pad(ale#Var(a:buffer, 'cs_csc_options'))
\ . ale#Pad(l:lib_option)
\ . ale#Pad(l:r_option)
\ . ' /out:' . l:out
\ . ' /t:module'
\ . ' /recurse:' . ale#Escape('*.cs')
endfunction
function! ale_linters#cs#csc#Handle(buffer, lines) abort
" Look for lines like the following.
"
" Tests.cs(12,29): error CSXXXX: ; expected
"
" NOTE: pattern also captures file name as linter compiles all
" files within the source tree rooted at the specified source
" path and not just the file loaded in the buffer
let l:patterns = [
\ '^\v(.+\.cs)\((\d+),(\d+)\)\:\s+([^ ]+)\s+([cC][sS][^ ]+):\s(.+)$',
\ '^\v([^ ]+)\s+([Cc][sS][^ ]+):\s+(.+)$',
\]
let l:output = []
let l:dir = s:GetWorkingDirectory(a:buffer)
for l:match in ale#util#GetMatches(a:lines, l:patterns)
if len(l:match) > 6 && strlen(l:match[5]) > 2 && l:match[5][:1] is? 'CS'
call add(l:output, {
\ 'filename': ale#path#GetAbsPath(l:dir, l:match[1]),
\ 'lnum': l:match[2] + 0,
\ 'col': l:match[3] + 0,
\ 'type': l:match[4] is# 'error' ? 'E' : 'W',
\ 'code': l:match[5],
\ 'text': l:match[6] ,
\})
elseif strlen(l:match[2]) > 2 && l:match[2][:1] is? 'CS'
call add(l:output, {
\ 'filename':'<csc>',
\ 'lnum': -1,
\ 'col': -1,
\ 'type': l:match[1] is# 'error' ? 'E' : 'W',
\ 'code': l:match[2],
\ 'text': l:match[3],
\})
endif
endfor
return l:output
endfunction
call ale#linter#Define('cs',{
\ 'name': 'csc',
\ 'output_stream': 'stdout',
\ 'executable': 'csc',
\ 'command': function('ale_linters#cs#csc#GetCommand'),
\ 'callback': 'ale_linters#cs#csc#Handle',
\ 'lint_file': 1
\})

View File

@@ -52,20 +52,34 @@ function! ale_linters#cs#mcsc#Handle(buffer, lines) abort
" NOTE: pattern also captures file name as linter compiles all
" files within the source tree rooted at the specified source
" path and not just the file loaded in the buffer
let l:pattern = '^\v(.+\.cs)\((\d+),(\d+)\)\: ([^ ]+) ([^ ]+): (.+)$'
let l:patterns = [
\ '^\v(.+\.cs)\((\d+),(\d+)\)\:\s+([^ ]+)\s+([cC][sS][^ ]+):\s(.+)$',
\ '^\v([^ ]+)\s+([Cc][sS][^ ]+):\s+(.+)$',
\]
let l:output = []
let l:dir = s:GetWorkingDirectory(a:buffer)
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'filename': ale#path#GetAbsPath(l:dir, l:match[1]),
\ 'lnum': l:match[2] + 0,
\ 'col': l:match[3] + 0,
\ 'type': l:match[4] is# 'error' ? 'E' : 'W',
\ 'code': l:match[5],
\ 'text': l:match[6],
\})
for l:match in ale#util#GetMatches(a:lines, l:patterns)
if len(l:match) > 6 && strlen(l:match[5]) > 2 && l:match[5][:1] is? 'CS'
call add(l:output, {
\ 'filename': ale#path#GetAbsPath(l:dir, l:match[1]),
\ 'lnum': l:match[2] + 0,
\ 'col': l:match[3] + 0,
\ 'type': l:match[4] is# 'error' ? 'E' : 'W',
\ 'code': l:match[5],
\ 'text': l:match[6] ,
\})
elseif strlen(l:match[2]) > 2 && l:match[2][:1] is? 'CS'
call add(l:output, {
\ 'filename':'<mcs>',
\ 'lnum': -1,
\ 'col': -1,
\ 'type': l:match[1] is# 'error' ? 'E' : 'W',
\ 'code': l:match[2],
\ 'text': l:match[3],
\})
endif
endfor
return l:output

View File

@@ -5,9 +5,6 @@ call ale#Set('cuda_nvcc_executable', 'nvcc')
call ale#Set('cuda_nvcc_options', '-std=c++11')
function! ale_linters#cuda#nvcc#GetCommand(buffer) abort
" Unused: use ale#util#nul_file
" let l:output_file = ale#util#Tempname() . '.ii'
" call ale#command#ManageFile(a:buffer, l:output_file)
return '%e -cuda'
\ . ale#Pad(ale#c#IncludeOptions(ale#c#FindLocalHeaderPaths(a:buffer)))
\ . ale#Pad(ale#Var(a:buffer, 'cuda_nvcc_options'))

View File

@@ -6,7 +6,7 @@ function! ale_linters#dafny#dafny#Handle(buffer, lines) abort
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'bufnr': a:buffer,
\ 'filename': l:match[1],
\ 'col': l:match[3] + 0,
\ 'lnum': l:match[2] + 0,
\ 'text': l:match[5],
@@ -14,13 +14,28 @@ function! ale_linters#dafny#dafny#Handle(buffer, lines) abort
\ })
endfor
for l:match in ale#util#GetMatches(a:lines, '\v(.*)\((\d+),(\d+)\): (Verification of .{-} timed out after \d+ seconds)')
call add(l:output, {
\ 'filename': l:match[1],
\ 'col': l:match[3] + 0,
\ 'lnum': l:match[2] + 0,
\ 'text': l:match[4],
\ 'type': 'E',
\ })
endfor
return l:output
endfunction
function! ale_linters#dafny#dafny#GetCommand(buffer) abort
return printf('dafny %%s /compile:0 /timeLimit:%d', ale#Var(a:buffer, 'dafny_dafny_timelimit'))
endfunction
call ale#Set('dafny_dafny_timelimit', 10)
call ale#linter#Define('dafny', {
\ 'name': 'dafny',
\ 'executable': 'dafny',
\ 'command': 'dafny %s /compile:0',
\ 'command': function('ale_linters#dafny#dafny#GetCommand'),
\ 'callback': 'ale_linters#dafny#dafny#Handle',
\ 'lint_file': 1,
\ })

View File

@@ -0,0 +1,29 @@
" Author: Nelson Yeung <nelsyeung@gmail.com>
" Description: Check Dart files with dart analysis server LSP
call ale#Set('dart_analysis_server_executable', 'dart')
function! ale_linters#dart#analysis_server#GetProjectRoot(buffer) abort
" Note: pub only looks for pubspec.yaml, there's no point in adding
" support for pubspec.yml
let l:pubspec = ale#path#FindNearestFile(a:buffer, 'pubspec.yaml')
return !empty(l:pubspec) ? fnamemodify(l:pubspec, ':h:h') : '.'
endfunction
function! ale_linters#dart#analysis_server#GetCommand(buffer) abort
let l:executable = ale#Var(a:buffer, 'dart_analysis_server_executable')
let l:dart = resolve(exepath(l:executable))
return '%e '
\ . fnamemodify(l:dart, ':h') . '/snapshots/analysis_server.dart.snapshot'
\ . ' --lsp'
endfunction
call ale#linter#Define('dart', {
\ 'name': 'analysis_server',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'dart_analysis_server_executable')},
\ 'command': function('ale_linters#dart#analysis_server#GetCommand'),
\ 'project_root': function('ale_linters#dart#analysis_server#GetProjectRoot'),
\})

View File

@@ -32,14 +32,29 @@ function! ale_linters#dockerfile#dockerfile_lint#Handle(buffer, lines) abort
let l:line = get(l:object, 'line', -1)
let l:message = l:object['message']
if get(l:object, 'description', 'None') isnot# 'None'
let l:message = l:message . '. ' . l:object['description']
let l:link = get(l:object, 'reference_url', '')
if type(l:link) == v:t_list
" Somehow, reference_url is returned as two-part list.
" Anchor markers in that list are sometimes duplicated.
" See https://github.com/projectatomic/dockerfile_lint/issues/134
let l:link = join(l:link, '')
let l:link = substitute(l:link, '##', '#', '')
endif
let l:detail = l:message
if get(l:object, 'description', 'None') isnot# 'None'
let l:detail .= "\n\n" . l:object['description']
endif
let l:detail .= "\n\n" . l:link
call add(l:messages, {
\ 'lnum': l:line,
\ 'text': l:message,
\ 'type': ale_linters#dockerfile#dockerfile_lint#GetType(l:type),
\ 'detail': l:detail,
\})
endfor
endfor

View File

@@ -9,7 +9,7 @@ function! ale_linters#dockerfile#hadolint#Handle(buffer, lines) abort
"
" /dev/stdin:19 DL3001 Pipe chain should start with a raw value.
" /dev/stdin:19:3 unexpected thing
let l:pattern = '\v^/dev/stdin:(\d+):?(\d+)? ((DL|SC)(\d+) )?(.+)$'
let l:pattern = '\v^/dev/stdin:(\d+):?(\d+)? ((DL|SC)(\d+) )?((.+)?: )?(.+)$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
@@ -24,9 +24,19 @@ function! ale_linters#dockerfile#hadolint#Handle(buffer, lines) abort
let l:colnum = l:match[2] + 0
endif
let l:type = 'W'
let l:text = l:match[6]
let l:detail = l:match[6]
" Shellcheck knows a 'style' severity - pin it to info level as well.
if l:match[7] is# 'style'
let l:type = 'I'
elseif l:match[7] is# 'info'
let l:type = 'I'
elseif l:match[7] is# 'warning'
let l:type = 'W'
else
let l:type = 'E'
endif
let l:text = l:match[8]
let l:detail = l:match[8]
let l:domain = 'https://github.com/hadolint/hadolint/wiki/'
if l:match[4] is# 'SC'

View File

@@ -45,13 +45,24 @@ function! ale_linters#elixir#credo#GetMode() abort
endif
endfunction
function! ale_linters#elixir#credo#GetConfigFile() abort
let l:config_file = get(g:, 'ale_elixir_credo_config_file', '')
if empty(l:config_file)
return ''
endif
return ' --config-file ' . l:config_file
endfunction
function! ale_linters#elixir#credo#GetCommand(buffer) abort
let l:project_root = ale#handlers#elixir#FindMixProjectRoot(a:buffer)
let l:project_root = ale#handlers#elixir#FindMixUmbrellaRoot(a:buffer)
let l:mode = ale_linters#elixir#credo#GetMode()
return ale#path#CdString(l:project_root)
\ . 'mix help credo && '
\ . 'mix credo ' . ale_linters#elixir#credo#GetMode()
\ . ale_linters#elixir#credo#GetConfigFile()
\ . ' --format=flycheck --read-from-stdin %s'
endfunction

View File

@@ -0,0 +1,40 @@
" Author: antew - https://github.com/antew
" Description: elm-language-server integration for elm (diagnostics, formatting, and more)
call ale#Set('elm_ls_executable', 'elm-language-server')
call ale#Set('elm_ls_use_global', get(g:, 'ale_use_global_executables', 1))
" elm-language-server will search for local and global binaries, if empty
call ale#Set('elm_ls_elm_path', '')
call ale#Set('elm_ls_elm_format_path', '')
call ale#Set('elm_ls_elm_test_path', '')
call ale#Set('elm_ls_elm_analyse_trigger', 'change')
function! elm_ls#GetRootDir(buffer) abort
let l:elm_json = ale#path#FindNearestFile(a:buffer, 'elm.json')
return !empty(l:elm_json) ? fnamemodify(l:elm_json, ':p:h') : ''
endfunction
function! elm_ls#GetOptions(buffer) abort
return {
\ 'elmPath': ale#Var(a:buffer, 'elm_ls_elm_path'),
\ 'elmFormatPath': ale#Var(a:buffer, 'elm_ls_elm_format_path'),
\ 'elmTestPath': ale#Var(a:buffer, 'elm_ls_elm_test_path'),
\ 'elmAnalyseTrigger': ale#Var(a:buffer, 'elm_ls_elm_analyse_trigger'),
\}
endfunction
call ale#linter#Define('elm', {
\ 'name': 'elm_ls',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#node#FindExecutable(b, 'elm_ls', [
\ 'node_modules/.bin/elm-language-server',
\ 'node_modules/.bin/elm-lsp',
\ 'elm-lsp'
\ ])},
\ 'command': '%e --stdio',
\ 'project_root': function('elm_ls#GetRootDir'),
\ 'language': 'elm',
\ 'initialization_options': function('elm_ls#GetOptions')
\})

View File

@@ -1,22 +0,0 @@
" Author: antew - https://github.com/antew
" Description: LSP integration for elm, currently supports diagnostics (linting)
call ale#Set('elm_lsp_executable', 'elm-lsp')
call ale#Set('elm_lsp_use_global', get(g:, 'ale_use_global_executables', 0))
function! elm_lsp#GetRootDir(buffer) abort
let l:elm_json = ale#path#FindNearestFile(a:buffer, 'elm.json')
return !empty(l:elm_json) ? fnamemodify(l:elm_json, ':p:h') : ''
endfunction
call ale#linter#Define('elm', {
\ 'name': 'elm_lsp',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#node#FindExecutable(b, 'elm_lsp', [
\ 'node_modules/.bin/elm-lsp',
\ ])},
\ 'command': '%e --stdio',
\ 'project_root': function('elm_lsp#GetRootDir'),
\ 'language': 'elm'
\})

View File

@@ -3,6 +3,11 @@
let g:ale_erlang_dialyzer_executable =
\ get(g:, 'ale_erlang_dialyzer_executable', 'dialyzer')
let g:ale_erlang_dialyzer_options =
\ get(g:, 'ale_erlang_dialyzer_options', '-Wunmatched_returns'
\ . ' -Werror_handling'
\ . ' -Wrace_conditions'
\ . ' -Wunderspecs')
let g:ale_erlang_dialyzer_plt_file =
\ get(g:, 'ale_erlang_dialyzer_plt_file', '')
let g:ale_erlang_dialyzer_rebar3_profile =
@@ -15,10 +20,10 @@ endfunction
function! ale_linters#erlang#dialyzer#FindPlt(buffer) abort
let l:plt_file = ''
let l:rebar3_profile = ale_linters#erlang#dialyzer#GetRebar3Profile(a:buffer)
let l:plt_file_directory = ale#path#FindNearestDirectory(a:buffer, '_build' . l:rebar3_profile)
let l:plt_file_directory = ale#path#FindNearestDirectory(a:buffer, '_build/' . l:rebar3_profile)
if !empty(l:plt_file_directory)
let l:plt_file = split(globpath(l:plt_file_directory, '/*_plt'), '\n')
let l:plt_file = globpath(l:plt_file_directory, '*_plt', 0, 1)
endif
if !empty(l:plt_file)
@@ -47,13 +52,12 @@ function! ale_linters#erlang#dialyzer#GetExecutable(buffer) abort
endfunction
function! ale_linters#erlang#dialyzer#GetCommand(buffer) abort
let l:options = ale#Var(a:buffer, 'erlang_dialyzer_options')
let l:command = ale#Escape(ale_linters#erlang#dialyzer#GetExecutable(a:buffer))
\ . ' -n'
\ . ' --plt ' . ale#Escape(ale_linters#erlang#dialyzer#GetPlt(a:buffer))
\ . ' -Wunmatched_returns'
\ . ' -Werror_handling'
\ . ' -Wrace_conditions'
\ . ' -Wunderspecs'
\ . ' ' . l:options
\ . ' %s'
return l:command

View File

@@ -0,0 +1,39 @@
" Author: Dmitri Vereshchagin <dmitri.vereshchagin@gmail.com>
" Description: Elvis linter for Erlang files
call ale#Set('erlang_elvis_executable', 'elvis')
function! ale_linters#erlang#elvis#Handle(buffer, lines) abort
let l:pattern = '\v:(\d+):[^:]+:(.+)'
let l:loclist = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:loclist, {
\ 'lnum': str2nr(l:match[1]),
\ 'text': s:AbbreviateMessage(l:match[2]),
\ 'type': 'W',
\})
endfor
return l:loclist
endfunction
function! s:AbbreviateMessage(text) abort
let l:pattern = '\v\c^(line \d+ is too long):.*$'
return substitute(a:text, l:pattern, '\1.', '')
endfunction
function! s:GetCommand(buffer) abort
let l:file = ale#Escape(expand('#' . a:buffer . ':.'))
return '%e rock --output-format=parsable ' . l:file
endfunction
call ale#linter#Define('erlang', {
\ 'name': 'elvis',
\ 'callback': 'ale_linters#erlang#elvis#Handle',
\ 'executable': {b -> ale#Var(b, 'erlang_elvis_executable')},
\ 'command': function('s:GetCommand'),
\ 'lint_file': 1,
\})

View File

@@ -1,14 +1,22 @@
" Author: Magnus Ottenklinger - https://github.com/evnu
let g:ale_erlang_erlc_executable = get(g:, 'ale_erlang_erlc_executable', 'erlc')
let g:ale_erlang_erlc_options = get(g:, 'ale_erlang_erlc_options', '')
function! ale_linters#erlang#erlc#GetExecutable(buffer) abort
return ale#Var(a:buffer, 'erlang_erlc_executable')
endfunction
function! ale_linters#erlang#erlc#GetCommand(buffer) abort
let l:output_file = ale#util#Tempname()
call ale#command#ManageFile(a:buffer, l:output_file)
return 'erlc -o ' . ale#Escape(l:output_file)
\ . ' ' . ale#Var(a:buffer, 'erlang_erlc_options')
\ . ' %t'
let l:command = ale#Escape(ale_linters#erlang#erlc#GetExecutable(a:buffer))
\ . ' -o ' . ale#Escape(l:output_file)
\ . ' ' . ale#Var(a:buffer, 'erlang_erlc_options')
\ . ' %t'
return l:command
endfunction
function! ale_linters#erlang#erlc#Handle(buffer, lines) abort
@@ -90,7 +98,7 @@ endfunction
call ale#linter#Define('erlang', {
\ 'name': 'erlc',
\ 'executable': 'erlc',
\ 'executable': function('ale_linters#erlang#erlc#GetExecutable'),
\ 'command': function('ale_linters#erlang#erlc#GetCommand'),
\ 'callback': 'ale_linters#erlang#erlc#Handle',
\})

View File

@@ -8,10 +8,10 @@ call ale#Set('eruby_ruumba_options', '')
function! ale_linters#eruby#ruumba#GetCommand(buffer) abort
let l:executable = ale#Var(a:buffer, 'eruby_ruumba_executable')
return ale#handlers#ruby#EscapeExecutable(l:executable, 'ruumba')
return ale#ruby#EscapeExecutable(l:executable, 'ruumba')
\ . ' --format json --force-exclusion '
\ . ale#Var(a:buffer, 'eruby_ruumba_options')
\ . ' --stdin ' . ale#Escape(expand('#' . a:buffer . ':p'))
\ . ' --stdin %s'
endfunction
function! ale_linters#eruby#ruumba#Handle(buffer, lines) abort

View File

@@ -5,11 +5,13 @@ call ale#Set('go_bingo_executable', 'bingo')
call ale#Set('go_bingo_options', '--mode stdio')
function! ale_linters#go#bingo#GetCommand(buffer) abort
return '%e' . ale#Pad(ale#Var(a:buffer, 'go_bingo_options'))
return ale#go#EnvString(a:buffer) . '%e' . ale#Pad(ale#Var(a:buffer, 'go_bingo_options'))
endfunction
function! ale_linters#go#bingo#FindProjectRoot(buffer) abort
let l:project_root = ale#path#FindNearestFile(a:buffer, 'go.mod')
let l:go_modules_off = ale#Var(a:buffer, 'go_go111module') is# 'off'
let l:project_root = l:go_modules_off ?
\ '' : ale#path#FindNearestFile(a:buffer, 'go.mod')
let l:mods = ':h'
if empty(l:project_root)

View File

@@ -11,6 +11,7 @@ function! ale_linters#go#gobuild#GetCommand(buffer) abort
" Run go test in local directory with relative path
return ale#path#BufferCdString(a:buffer)
\ . ale#go#EnvString(a:buffer)
\ . ale#Var(a:buffer, 'go_go_executable') . ' test'
\ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' -c -o /dev/null ./'

View File

@@ -1,10 +1,15 @@
" Author: neersighted <bjorn@neersighted.com>
" Description: gofmt for Go files
function! ale_linters#go#gofmt#GetCommand(buffer) abort
return ale#go#EnvString(a:buffer)
\ . '%e -e %t'
endfunction
call ale#linter#Define('go', {
\ 'name': 'gofmt',
\ 'output_stream': 'stderr',
\ 'executable': 'gofmt',
\ 'command': 'gofmt -e %t',
\ 'command': function('ale_linters#go#gofmt#GetCommand'),
\ 'callback': 'ale#handlers#unix#HandleAsError',
\})

View File

@@ -10,13 +10,16 @@ function! ale_linters#go#golangci_lint#GetCommand(buffer) abort
let l:options = ale#Var(a:buffer, 'go_golangci_lint_options')
let l:lint_package = ale#Var(a:buffer, 'go_golangci_lint_package')
if l:lint_package
return ale#path#BufferCdString(a:buffer)
\ . ale#go#EnvString(a:buffer)
\ . '%e run '
\ . l:options
endif
return ale#path#BufferCdString(a:buffer)
\ . ale#go#EnvString(a:buffer)
\ . '%e run '
\ . ale#Escape(l:filename)
\ . ' ' . l:options

View File

@@ -7,7 +7,7 @@ call ale#Set('go_golint_options', '')
function! ale_linters#go#golint#GetCommand(buffer) abort
let l:options = ale#Var(a:buffer, 'go_golint_options')
return '%e'
return ale#go#EnvString(a:buffer) . '%e'
\ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' %t'
endfunction

View File

@@ -14,11 +14,13 @@ function! ale_linters#go#gometalinter#GetCommand(buffer) abort
" be calculated to absolute paths in the Handler
if l:lint_package
return ale#path#BufferCdString(a:buffer)
\ . ale#go#EnvString(a:buffer)
\ . '%e'
\ . (!empty(l:options) ? ' ' . l:options : '') . ' .'
endif
return ale#path#BufferCdString(a:buffer)
\ . ale#go#EnvString(a:buffer)
\ . '%e'
\ . ' --include=' . ale#Escape(ale#util#EscapePCRE(l:filename))
\ . (!empty(l:options) ? ' ' . l:options : '') . ' .'

View File

@@ -4,13 +4,18 @@
call ale#Set('go_gopls_executable', 'gopls')
call ale#Set('go_gopls_options', '--mode stdio')
call ale#Set('go_gopls_init_options', {})
function! ale_linters#go#gopls#GetCommand(buffer) abort
return '%e' . ale#Pad(ale#Var(a:buffer, 'go_gopls_options'))
return ale#go#EnvString(a:buffer)
\ . '%e'
\ . ale#Pad(ale#Var(a:buffer, 'go_gopls_options'))
endfunction
function! ale_linters#go#gopls#FindProjectRoot(buffer) abort
let l:project_root = ale#path#FindNearestFile(a:buffer, 'go.mod')
let l:go_modules_off = ale#Var(a:buffer, 'go_go111module') is# 'off'
let l:project_root = l:go_modules_off ?
\ '' : ale#path#FindNearestFile(a:buffer, 'go.mod')
let l:mods = ':h'
if empty(l:project_root)
@@ -27,4 +32,5 @@ call ale#linter#Define('go', {
\ 'executable': {b -> ale#Var(b, 'go_gopls_executable')},
\ 'command': function('ale_linters#go#gopls#GetCommand'),
\ 'project_root': function('ale_linters#go#gopls#FindProjectRoot'),
\ 'initialization_options': {b -> ale#Var(b, 'go_gopls_init_options')},
\})

View File

@@ -2,7 +2,8 @@
" Description: gosimple for Go files
function! ale_linters#go#gosimple#GetCommand(buffer) abort
return ale#path#BufferCdString(a:buffer) . ' gosimple .'
return ale#path#BufferCdString(a:buffer) . ' '
\ . ale#go#EnvString(a:buffer) . 'gosimple .'
endfunction
call ale#linter#Define('go', {

View File

@@ -6,7 +6,8 @@ function! ale_linters#go#gotype#GetCommand(buffer) abort
return ''
endif
return ale#path#BufferCdString(a:buffer) . ' gotype -e .'
return ale#path#BufferCdString(a:buffer) . ' '
\ . ale#go#EnvString(a:buffer) . 'gotype -e .'
endfunction
call ale#linter#Define('go', {

View File

@@ -11,6 +11,7 @@ function! ale_linters#go#govet#GetCommand(buffer) abort
let l:options = ale#Var(a:buffer, 'go_govet_options')
return ale#path#BufferCdString(a:buffer) . ' '
\ . ale#go#EnvString(a:buffer)
\ . ale#Var(a:buffer, 'go_go_executable') . ' vet '
\ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' .'

View File

@@ -15,8 +15,9 @@ function! ale_linters#go#langserver#GetCommand(buffer) abort
endif
let l:options = uniq(sort(l:options))
let l:env = ale#go#EnvString(a:buffer)
return join(extend(l:executable, l:options), ' ')
return l:env . join(extend(l:executable, l:options), ' ')
endfunction
call ale#linter#Define('go', {

21
ale_linters/go/revive.vim Normal file
View File

@@ -0,0 +1,21 @@
" Author: Penghui Liao <liaoishere@gmail.com>
" Description: Adds support for revive
call ale#Set('go_revive_executable', 'revive')
call ale#Set('go_revive_options', '')
function! ale_linters#go#revive#GetCommand(buffer) abort
let l:options = ale#Var(a:buffer, 'go_revive_options')
return ale#go#EnvString(a:buffer) . '%e'
\ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' %t'
endfunction
call ale#linter#Define('go', {
\ 'name': 'revive',
\ 'output_stream': 'both',
\ 'executable': {b -> ale#Var(b, 'go_revive_executable')},
\ 'command': function('ale_linters#go#revive#GetCommand'),
\ 'callback': 'ale#handlers#unix#HandleAsWarning',
\})

View File

@@ -8,17 +8,18 @@ function! ale_linters#go#staticcheck#GetCommand(buffer) abort
let l:filename = expand('#' . a:buffer . ':t')
let l:options = ale#Var(a:buffer, 'go_staticcheck_options')
let l:lint_package = ale#Var(a:buffer, 'go_staticcheck_lint_package')
let l:env = ale#go#EnvString(a:buffer)
" BufferCdString is used so that we can be sure the paths output from
" staticcheck can be calculated to absolute paths in the Handler
if l:lint_package
return ale#path#BufferCdString(a:buffer)
\ . 'staticcheck'
\ . l:env . 'staticcheck'
\ . (!empty(l:options) ? ' ' . l:options : '') . ' .'
endif
return ale#path#BufferCdString(a:buffer)
\ . 'staticcheck'
\ . l:env . 'staticcheck'
\ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' ' . ale#Escape(l:filename)
endfunction

View File

@@ -5,5 +5,5 @@ call ale#linter#Define('graphql', {
\ 'name': 'eslint',
\ 'executable': function('ale#handlers#eslint#GetExecutable'),
\ 'command': function('ale#handlers#eslint#GetCommand'),
\ 'callback': 'ale#handlers#eslint#Handle',
\ 'callback': 'ale#handlers#eslint#HandleJSON',
\})

View File

@@ -4,6 +4,28 @@
call ale#Set('handlebars_embertemplatelint_executable', 'ember-template-lint')
call ale#Set('handlebars_embertemplatelint_use_global', get(g:, 'ale_use_global_executables', 0))
function! ale_linters#handlebars#embertemplatelint#GetExecutable(buffer) abort
return ale#node#FindExecutable(a:buffer, 'handlebars_embertemplatelint', [
\ 'node_modules/.bin/ember-template-lint',
\])
endfunction
function! ale_linters#handlebars#embertemplatelint#GetCommand(buffer, version) abort
" Reading from stdin was introduced in ember-template-lint@1.6.0
return ale#semver#GTE(a:version, [1, 6, 0])
\ ? '%e --json --filename %s'
\ : '%e --json %t'
endfunction
function! ale_linters#handlebars#embertemplatelint#GetCommandWithVersionCheck(buffer) abort
return ale#semver#RunWithVersionCheck(
\ a:buffer,
\ ale_linters#handlebars#embertemplatelint#GetExecutable(a:buffer),
\ '%e --version',
\ function('ale_linters#handlebars#embertemplatelint#GetCommand'),
\)
endfunction
function! ale_linters#handlebars#embertemplatelint#Handle(buffer, lines) abort
let l:output = []
let l:json = ale#util#FuzzyJSONDecode(a:lines, {})
@@ -30,10 +52,9 @@ function! ale_linters#handlebars#embertemplatelint#Handle(buffer, lines) abort
endfunction
call ale#linter#Define('handlebars', {
\ 'name': 'ember-template-lint',
\ 'executable': {b -> ale#node#FindExecutable(b, 'handlebars_embertemplatelint', [
\ 'node_modules/.bin/ember-template-lint',
\ ])},
\ 'command': '%e --json %t',
\ 'name': 'embertemplatelint',
\ 'aliases': ['ember-template-lint'],
\ 'executable': function('ale_linters#handlebars#embertemplatelint#GetExecutable'),
\ 'command': function('ale_linters#handlebars#embertemplatelint#GetCommandWithVersionCheck'),
\ 'callback': 'ale_linters#handlebars#embertemplatelint#Handle',
\})

View File

@@ -0,0 +1,63 @@
" Author: Yen3 <yen3rc@gmail.com>
" Description: A language server for haskell
" The file is based on hie.vim (author: Luxed
" <devildead13@gmail.com>). It search more project root files.
"
call ale#Set('haskell_hls_executable', 'haskell-language-server-wrapper')
function! ale_linters#haskell#hls#FindRootFile(buffer) abort
let l:serach_root_files = [
\ 'stack.yaml',
\ 'cabal.project',
\ 'package.yaml',
\ 'hie.yaml'
\ ]
for l:path in ale#path#Upwards(expand('#' . a:buffer . ':p:h'))
for l:root_file in l:serach_root_files
if filereadable(l:path . l:root_file)
return l:path
endif
endfor
endfor
return ''
endfunction
function! ale_linters#haskell#hls#GetProjectRoot(buffer) abort
" Search for the project file first
let l:project_file = ale_linters#haskell#hls#FindRootFile(a:buffer)
" If it's empty, search for the cabal file
if empty(l:project_file)
" Search all of the paths except for the root filesystem path.
let l:paths = join(
\ ale#path#Upwards(expand('#' . a:buffer . ':p:h'))[:-2],
\ ','
\)
let l:project_file = globpath(l:paths, '*.cabal')
endif
" If we still can't find one, use the current file.
if empty(l:project_file)
let l:project_file = expand('#' . a:buffer . ':p')
endif
return fnamemodify(l:project_file, ':h')
endfunction
function! ale_linters#haskell#hls#GetCommand(buffer) abort
let l:executable = ale#Var(a:buffer, 'haskell_hls_executable')
return ale#handlers#haskell_stack#EscapeExecutable(l:executable,
\ 'haskell-language-server-wrapper')
\ . ' --lsp'
endfunction
call ale#linter#Define('haskell', {
\ 'name': 'hls',
\ 'lsp': 'stdio',
\ 'command': function('ale_linters#haskell#hls#GetCommand'),
\ 'executable': {b -> ale#Var(b, 'haskell_hls_executable')},
\ 'project_root': function('ale_linters#haskell#hls#GetProjectRoot'),
\})

35
ale_linters/ink/ls.vim Normal file
View File

@@ -0,0 +1,35 @@
" Author: Andreww Hayworth <ahayworth@gmail.com>
" Description: Integrate ALE with ink-language-server
call ale#Set('ink_ls_executable', 'ink-language-server')
call ale#Set('ink_ls_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('ink_ls_initialization_options', {})
function! ale_linters#ink#ls#GetExecutable(buffer) abort
return ale#node#FindExecutable(a:buffer, 'ink_ls', [
\ 'ink-language-server',
\ 'node_modules/.bin/ink-language-server',
\])
endfunction
function! ale_linters#ink#ls#GetCommand(buffer) abort
let l:executable = ale_linters#ink#ls#GetExecutable(a:buffer)
return ale#Escape(l:executable) . ' --stdio'
endfunction
function! ale_linters#ink#ls#FindProjectRoot(buffer) abort
let l:main_file = get(ale#Var(a:buffer, 'ink_ls_initialization_options'), 'mainStoryPath', 'main.ink')
let l:config = ale#path#ResolveLocalPath(a:buffer, l:main_file, expand('#' . a:buffer . ':p'))
return ale#path#Dirname(l:config)
endfunction
call ale#linter#Define('ink', {
\ 'name': 'ink-language-server',
\ 'lsp': 'stdio',
\ 'executable': function('ale_linters#ink#ls#GetExecutable'),
\ 'command': function('ale_linters#ink#ls#GetCommand'),
\ 'project_root': function('ale_linters#ink#ls#FindProjectRoot'),
\ 'initialization_options': {b -> ale#Var(b, 'ink_ls_initialization_options')},
\})

33
ale_linters/inko/inko.vim Normal file
View File

@@ -0,0 +1,33 @@
" Author: Yorick Peterse <yorick@yorickpeterse.com>
" Description: linting of Inko source code using the Inko compiler
call ale#Set('inko_inko_executable', 'inko')
function! ale_linters#inko#inko#GetCommand(buffer) abort
let l:include = ''
" Include the tests source directory, but only for test files.
if expand('#' . a:buffer . ':p') =~? '\vtests[/\\]test[/\\]'
let l:test_dir = ale#path#FindNearestDirectory(a:buffer, 'tests')
if isdirectory(l:test_dir)
let l:include = '--include ' . ale#Escape(l:test_dir)
endif
endif
" We use %s instead of %t so the compiler determines the correct module
" names for the file being edited. Not doing so may lead to errors in
" certain cases.
return '%e build --check --format=json'
\ . ale#Pad(l:include)
\ . ' %s'
endfunction
call ale#linter#Define('inko', {
\ 'name': 'inko',
\ 'executable': {b -> ale#Var(b, 'inko_inko_executable')},
\ 'command': function('ale_linters#inko#inko#GetCommand'),
\ 'callback': 'ale#handlers#inko#Handle',
\ 'output_stream': 'stderr',
\ 'lint_file': 1
\})

View File

@@ -2,14 +2,14 @@
" Description: checkstyle for Java files
call ale#Set('java_checkstyle_executable', 'checkstyle')
call ale#Set('java_checkstyle_config', 'google_checks.xml')
call ale#Set('java_checkstyle_config', '/google_checks.xml')
call ale#Set('java_checkstyle_options', '')
function! ale_linters#java#checkstyle#Handle(buffer, lines) abort
let l:output = []
" modern checkstyle versions
let l:pattern = '\v\[(WARN|ERROR)\] [a-zA-Z]?:?[^:]+:(\d+):(\d+)?:? (.*) \[(.+)\]$'
let l:pattern = '\v\[(WARN|ERROR)\] [a-zA-Z]?:?[^:]+:(\d+):(\d+)?:? (.*) \[(.+)\]'
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
@@ -39,11 +39,21 @@ function! ale_linters#java#checkstyle#Handle(buffer, lines) abort
return l:output
endfunction
function! s:GetConfig(buffer, config) abort
if ale#path#IsAbsolute(a:config)
return a:config
endif
let s:file = ale#path#FindNearestFile(a:buffer, a:config)
return !empty(s:file) ? s:file : a:config
endfunction
function! ale_linters#java#checkstyle#GetCommand(buffer) abort
let l:options = ale#Var(a:buffer, 'java_checkstyle_options')
let l:config_option = ale#Var(a:buffer, 'java_checkstyle_config')
let l:config = l:options !~# '\v(^| )-c' && !empty(l:config_option)
\ ? ale#path#FindNearestFile(a:buffer, l:config_option)
let l:config = l:options !~# '\v(^| )-c ' && !empty(l:config_option)
\ ? s:GetConfig(a:buffer, l:config_option)
\ : ''
return '%e'

View File

@@ -7,6 +7,7 @@ call ale#Set('java_eclipselsp_path', ale#path#Simplify($HOME . '/eclipse.jdt.ls'
call ale#Set('java_eclipselsp_config_path', '')
call ale#Set('java_eclipselsp_workspace_path', '')
call ale#Set('java_eclipselsp_executable', 'java')
call ale#Set('java_eclipselsp_javaagent', '')
function! ale_linters#java#eclipselsp#Executable(buffer) abort
return ale#Var(a:buffer, 'java_eclipselsp_executable')
@@ -19,25 +20,39 @@ endfunction
function! ale_linters#java#eclipselsp#JarPath(buffer) abort
let l:path = ale_linters#java#eclipselsp#TargetPath(a:buffer)
" Search jar file within repository path when manually built using mvn
let l:repo_path = l:path . '/org.eclipse.jdt.ls.product/target/repository'
let l:files = globpath(l:repo_path, '**/plugins/org.eclipse.equinox.launcher_\d\.\d\.\d\d\d\.*\.jar', 1, 1)
if has('win32')
let l:platform = 'win32'
elseif has('macunix')
let l:platform = 'macosx'
else
let l:platform = 'linux'
endif
if len(l:files) == 1
" Search jar file within repository path when manually built using mvn
let l:files = globpath(l:path, '**/'.l:platform.'/**/plugins/org.eclipse.equinox.launcher_*\.jar', 1, 1)
if len(l:files) >= 1
return l:files[0]
endif
" Search jar file within VSCode extensions folder.
let l:files = globpath(l:path, '**/plugins/org.eclipse.equinox.launcher_\d\.\d\.\d\d\d\.*\.jar', 1, 1)
let l:files = globpath(l:path, '**/'.l:platform.'/plugins/org.eclipse.equinox.launcher_*\.jar', 1, 1)
if len(l:files) == 1
if len(l:files) >= 1
return l:files[0]
endif
" Search jar file within unzipped tar.gz file
let l:files = globpath(l:path, 'plugins/org.eclipse.equinox.launcher_*\.jar', 1, 1)
if len(l:files) >= 1
return l:files[0]
endif
" Search jar file within system package path
let l:files = globpath('/usr/share/java/jdtls/plugins', 'org.eclipse.equinox.launcher_\d\.\d\.\d\d\d\.*\.jar', 1, 1)
let l:files = globpath('/usr/share/java/jdtls/plugins', 'org.eclipse.equinox.launcher_*\.jar', 1, 1)
if len(l:files) == 1
if len(l:files) >= 1
return l:files[0]
endif
@@ -100,12 +115,30 @@ function! ale_linters#java#eclipselsp#WorkspacePath(buffer) abort
return ale#path#Dirname(ale#java#FindProjectRoot(a:buffer))
endfunction
function! ale_linters#java#eclipselsp#Javaagent(buffer) abort
let l:rets = []
let l:raw = ale#Var(a:buffer, 'java_eclipselsp_javaagent')
if empty(l:raw)
return ''
endif
let l:jars = split(l:raw)
for l:jar in l:jars
call add(l:rets, ale#Escape('-javaagent:' . l:jar))
endfor
return join(l:rets, ' ')
endfunction
function! ale_linters#java#eclipselsp#Command(buffer, version) abort
let l:path = ale#Var(a:buffer, 'java_eclipselsp_path')
let l:executable = ale_linters#java#eclipselsp#Executable(a:buffer)
let l:cmd = [ ale#Escape(l:executable),
\ ale_linters#java#eclipselsp#Javaagent(a:buffer),
\ '-Declipse.application=org.eclipse.jdt.ls.core.id1',
\ '-Dosgi.bundles.defaultStartLevel=4',
\ '-Declipse.product=org.eclipse.jdt.ls.core.product',
@@ -147,7 +180,8 @@ function! ale_linters#java#eclipselsp#RunWithVersionCheck(buffer) abort
return ale#command#Run(
\ a:buffer,
\ l:command,
\ function('ale_linters#java#eclipselsp#CommandWithVersion')
\ function('ale_linters#java#eclipselsp#CommandWithVersion'),
\ { 'output_stream': 'both' }
\)
endfunction

View File

@@ -6,15 +6,10 @@ let s:classpath_sep = has('unix') ? ':' : ';'
call ale#Set('java_javac_executable', 'javac')
call ale#Set('java_javac_options', '')
call ale#Set('java_javac_classpath', '')
call ale#Set('java_javac_sourcepath', '')
function! ale_linters#java#javac#RunWithImportPaths(buffer) abort
let l:command = ''
let l:pom_path = ale#path#FindNearestFile(a:buffer, 'pom.xml')
if !empty(l:pom_path) && executable('mvn')
let l:command = ale#path#CdString(fnamemodify(l:pom_path, ':h'))
\ . 'mvn dependency:build-classpath'
endif
let l:command = ale#maven#BuildClasspathCommand(a:buffer)
" Try to use Gradle if Maven isn't available.
if empty(l:command)
@@ -40,10 +35,15 @@ endfunction
function! s:BuildClassPathOption(buffer, import_paths) abort
" Filter out lines like [INFO], etc.
let l:class_paths = filter(a:import_paths[:], 'v:val !~# ''[''')
call extend(
\ l:class_paths,
\ split(ale#Var(a:buffer, 'java_javac_classpath'), s:classpath_sep),
\)
let l:cls_path = ale#Var(a:buffer, 'java_javac_classpath')
if !empty(l:cls_path) && type(l:cls_path) is v:t_string
call extend(l:class_paths, split(l:cls_path, s:classpath_sep))
endif
if !empty(l:cls_path) && type(l:cls_path) is v:t_list
call extend(l:class_paths, l:cls_path)
endif
return !empty(l:class_paths)
\ ? '-cp ' . ale#Escape(join(l:class_paths, s:classpath_sep))
@@ -79,6 +79,27 @@ function! ale_linters#java#javac#GetCommand(buffer, import_paths, meta) abort
endif
endif
let l:source_paths = []
let l:source_path = ale#Var(a:buffer, 'java_javac_sourcepath')
if !empty(l:source_path) && type(l:source_path) is v:t_string
let l:source_paths = split(l:source_path, s:classpath_sep)
endif
if !empty(l:source_path) && type(l:source_path) is v:t_list
let l:source_paths = l:source_path
endif
if !empty(l:source_paths)
for l:path in l:source_paths
let l:sp_path = ale#path#FindNearestDirectory(a:buffer, l:path)
if !empty(l:sp_path)
call add(l:sp_dirs, l:sp_path)
endif
endfor
endif
if !empty(l:sp_dirs)
let l:sp_option = '-sourcepath '
\ . ale#Escape(join(l:sp_dirs, s:classpath_sep))

View File

@@ -2,11 +2,24 @@
" Description: Support for the Java language server https://github.com/georgewfraser/vscode-javac
call ale#Set('java_javalsp_executable', '')
call ale#Set('java_javalsp_config', {})
function! ale_linters#java#javalsp#Executable(buffer) abort
return ale#Var(a:buffer, 'java_javalsp_executable')
endfunction
function! ale_linters#java#javalsp#Config(buffer) abort
let l:defaults = { 'java': { 'classPath': [], 'externalDependencies': [] } }
let l:config = ale#Var(a:buffer, 'java_javalsp_config')
" Ensure the config dictionary contains both classPath and
" externalDependencies keys to avoid a NPE crash on Java Language Server.
call extend(l:config, l:defaults, 'keep')
call extend(l:config['java'], l:defaults['java'], 'keep')
return l:config
endfunction
function! ale_linters#java#javalsp#Command(buffer) abort
let l:executable = ale_linters#java#javalsp#Executable(a:buffer)
@@ -38,4 +51,5 @@ call ale#linter#Define('java', {
\ 'command': function('ale_linters#java#javalsp#Command'),
\ 'language': 'java',
\ 'project_root': function('ale#java#FindProjectRoot'),
\ 'lsp_config': function('ale_linters#java#javalsp#Config')
\})

0
ale_linters/javascript/flow.vim Executable file → Normal file
View File

View File

@@ -7,7 +7,9 @@ call ale#Set('javascript_standard_options', '')
function! ale_linters#javascript#standard#GetExecutable(buffer) abort
return ale#node#FindExecutable(a:buffer, 'javascript_standard', [
\ 'node_modules/standardx/bin/cmd.js',
\ 'node_modules/standard/bin/cmd.js',
\ 'node_modules/semistandard/bin/cmd.js',
\ 'node_modules/.bin/standard',
\])
endfunction

View File

@@ -1,26 +1,9 @@
" Author: Daniel Lupu <lupu.daniel.f@gmail.com>
" Description: xo for JavaScript files
call ale#Set('javascript_xo_executable', 'xo')
call ale#Set('javascript_xo_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('javascript_xo_options', '')
function! ale_linters#javascript#xo#GetExecutable(buffer) abort
return ale#node#FindExecutable(a:buffer, 'javascript_xo', [
\ 'node_modules/.bin/xo',
\])
endfunction
function! ale_linters#javascript#xo#GetCommand(buffer) abort
return ale#Escape(ale_linters#javascript#xo#GetExecutable(a:buffer))
\ . ' ' . ale#Var(a:buffer, 'javascript_xo_options')
\ . ' --reporter json --stdin --stdin-filename %s'
endfunction
" xo uses eslint and the output format is the same
call ale#linter#Define('javascript', {
\ 'name': 'xo',
\ 'executable': function('ale_linters#javascript#xo#GetExecutable'),
\ 'command': function('ale_linters#javascript#xo#GetCommand'),
\ 'callback': 'ale#handlers#eslint#HandleJSON',
\ 'executable': function('ale#handlers#xo#GetExecutable'),
\ 'command': function('ale#handlers#xo#GetLintCommand'),
\ 'callback': 'ale#handlers#xo#HandleJSON',
\})

32
ale_linters/json/jq.vim Normal file
View File

@@ -0,0 +1,32 @@
" Author: jD91mZM2 <me@krake.one>
function! ale_linters#json#jq#GetCommand(buffer) abort
let l:executable = ale#fixers#jq#GetExecutable(a:buffer)
return ale#Escape(l:executable)
endfunction
function! ale_linters#json#jq#Handle(buffer, lines) abort
" Matches patterns like the following:
" parse error: Expected another key-value pair at line 4, column 3
let l:pattern = '^parse error: \(.\+\) at line \(\d\+\), column \(\d\+\)$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'text': l:match[1],
\ 'lnum': l:match[2] + 0,
\ 'col': l:match[3] + 0,
\})
endfor
return l:output
endfunction
call ale#linter#Define('json', {
\ 'name': 'jq',
\ 'executable': function('ale#fixers#jq#GetExecutable'),
\ 'output_stream': 'stderr',
\ 'command': function('ale_linters#json#jq#GetCommand'),
\ 'callback': 'ale_linters#json#jq#Handle',
\})

View File

@@ -0,0 +1,14 @@
" Author: t2h5 <https://github.com/t2h5>
" Description: Integration of Stoplight Spectral CLI with ALE.
call ale#Set('json_spectral_executable', 'spectral')
call ale#Set('json_spectral_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#linter#Define('json', {
\ 'name': 'spectral',
\ 'executable': {b -> ale#node#FindExecutable(b, 'json_spectral', [
\ 'node_modules/.bin/spectral',
\ ])},
\ 'command': '%e lint --ignore-unknown-format -q -f text %t',
\ 'callback': 'ale#handlers#spectral#HandleSpectralOutput'
\})

View File

@@ -6,9 +6,9 @@ call ale#Set('julia_executable', 'julia')
function! ale_linters#julia#languageserver#GetCommand(buffer) abort
let l:julia_executable = ale#Var(a:buffer, 'julia_executable')
let l:cmd_string = 'using LanguageServer; server = LanguageServer.LanguageServerInstance(isdefined(Base, :stdin) ? stdin : STDIN, isdefined(Base, :stdout) ? stdout : STDOUT, false); server.runlinter = true; run(server);'
let l:cmd_string = 'using LanguageServer; using Pkg; import StaticLint; import SymbolServer; server = LanguageServer.LanguageServerInstance(isdefined(Base, :stdin) ? stdin : STDIN, isdefined(Base, :stdout) ? stdout : STDOUT, dirname(Pkg.Types.Context().env.project_file)); server.runlinter = true; run(server);'
return ale#Escape(l:julia_executable) . ' --startup-file=no --history-file=no -e ' . ale#Escape(l:cmd_string)
return ale#Escape(l:julia_executable) . ' --project=@. --startup-file=no --history-file=no -e ' . ale#Escape(l:cmd_string)
endfunction
call ale#linter#Define('julia', {

View File

@@ -174,6 +174,7 @@ endfunction
call ale#linter#Define('kotlin', {
\ 'name': 'kotlinc',
\ 'executable': 'kotlinc',
\ 'output_stream': 'stderr',
\ 'command': function('ale_linters#kotlin#kotlinc#RunWithImportPaths'),
\ 'callback': 'ale_linters#kotlin#kotlinc#Handle',
\ 'lint_file': 1,

View File

@@ -6,5 +6,5 @@ call ale#linter#Define('kotlin', {
\ 'executable': 'ktlint',
\ 'command': function('ale#handlers#ktlint#GetCommand'),
\ 'callback': 'ale#handlers#ktlint#Handle',
\ 'lint_file': 1
\ 'output_stream': 'stderr'
\})

0
ale_linters/less/lessc.vim Executable file → Normal file
View File

View File

@@ -1,11 +1,22 @@
" Author: Ty-Lucas Kelley <tylucaskelley@gmail.com>
" Description: Adds support for markdownlint
call ale#Set('markdown_markdownlint_options', '')
function! ale_linters#markdown#markdownlint#GetCommand(buffer) abort
let l:executable = 'markdownlint'
let l:options = ale#Var(a:buffer, 'markdown_markdownlint_options')
return ale#Escape(l:executable)
\ . (!empty(l:options) ? ' ' . l:options : '') . ' %s'
endfunction
call ale#linter#Define('markdown', {
\ 'name': 'markdownlint',
\ 'executable': 'markdownlint',
\ 'lint_file': 1,
\ 'output_stream': 'both',
\ 'command': 'markdownlint %s',
\ 'command': function('ale_linters#markdown#markdownlint#GetCommand'),
\ 'callback': 'ale#handlers#markdownlint#Handle'
\})

View File

@@ -17,18 +17,17 @@ function! ale_linters#markdown#mdl#GetCommand(buffer) abort
let l:options = ale#Var(a:buffer, 'markdown_mdl_options')
return ale#Escape(l:executable) . l:exec_args
\ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' -j' . (!empty(l:options) ? ' ' . l:options : '')
endfunction
function! ale_linters#markdown#mdl#Handle(buffer, lines) abort
" matches: '(stdin):173: MD004 Unordered list style'
let l:pattern = ':\(\d*\): \(.*\)$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
for l:error in ale#util#FuzzyJSONDecode(a:lines, [])
call add(l:output, {
\ 'lnum': l:match[1] + 0,
\ 'text': l:match[2],
\ 'lnum': l:error['line'],
\ 'code': l:error['rule'] . '/' . join(l:error['aliases'], '/'),
\ 'text': l:error['description'],
\ 'type': 'W',
\})
endfor

View File

@@ -7,10 +7,9 @@ call ale#Set('nasm_nasm_options', '')
function! ale_linters#nasm#nasm#GetCommand(buffer) abort
" Note that NASM requires a trailing slash for the -I option.
let l:separator = has('win32') ? '\' : '/'
let l:path = fnamemodify(bufname(a:buffer), ':p:h') . l:separator
let l:output_null = has('win32') ? 'NUL' : '/dev/null'
return '%e -X gnu -I ' . ale#Escape(l:path)
return '%e -X gnu -I %s:h' . l:separator
\ . ale#Pad(ale#Var(a:buffer, 'nasm_nasm_options'))
\ . ' %s'
\ . ' -o ' . l:output_null

View File

@@ -1,6 +1,15 @@
" Author: Baabelfish
" Description: Typechecking for nim files
let s:end_col_patterns = [
\ '\v''([^'']+)'' is declared but not used.*',
\ '\videntifier expected, but found ''([^'']+)''',
\ '\vimported and not used: ''([^'']+)''.*',
\ '\vundeclared identifier: ''([^'']+)''',
\ '\v''([^'']+)'' cannot be assigned to',
\ '\vredefinition of ''([^'']+)'';',
\]
function! ale_linters#nim#nimcheck#Handle(buffer, lines) abort
let l:buffer_filename = fnamemodify(bufname(a:buffer), ':p:t')
let l:pattern = '^\(.\+\.nim\)(\(\d\+\), \(\d\+\)) \(.\+\)'
@@ -43,6 +52,11 @@ function! ale_linters#nim#nimcheck#Handle(buffer, lines) abort
let l:item.code = l:code_match[2]
endif
" Find position end_col.
for l:col_match in ale#util#GetMatches(l:item.text, s:end_col_patterns)
let l:item.end_col = l:item.col + len(l:col_match[1]) - 1
endfor
call add(l:output, l:item)
endfor

View File

@@ -0,0 +1,33 @@
" Author: jeremija <https://github.com/jeremija>
" Description: Support for nimlsp (language server for nim)
call ale#Set('nim_nimlsp_nim_sources', '')
function! ale_linters#nim#nimlsp#GetProjectRoot(buffer) abort
let l:project_root = ale#path#FindNearestDirectory(a:buffer, '.git')
if !empty(l:project_root)
return fnamemodify(l:project_root, ':h:h')
endif
return ''
endfunction
function! ale_linters#nim#nimlsp#GetCommand(buffer) abort
let l:nim_sources = ale#Var(a:buffer, 'nim_nimlsp_nim_sources')
if !empty(l:nim_sources)
let l:nim_sources = ale#Escape(l:nim_sources)
endif
return '%e' . ale#Pad(l:nim_sources)
endfunction
call ale#linter#Define('nim', {
\ 'name': 'nimlsp',
\ 'lsp': 'stdio',
\ 'executable': 'nimlsp',
\ 'command': function('ale_linters#nim#nimlsp#GetCommand'),
\ 'language': 'nim',
\ 'project_root': function('ale_linters#nim#nimlsp#GetProjectRoot'),
\})

View File

@@ -1,18 +1,51 @@
" Author: Alistair Bill <@alibabzo>
" Author: Maximilian Bosch <maximilian@mbosch.me>
" Description: nix-instantiate linter for nix files
function! ale_linters#nix#nix#Command(buffer, output, meta) abort
let l:version = a:output[0][22:]
if l:version =~# '^\(2.4\|3\).*'
return 'nix-instantiate --log-format internal-json --parse -'
else
return 'nix-instantiate --parse -'
endif
endfunction
function! ale_linters#nix#nix#Handle(buffer, lines) abort
let l:pattern = '^\(.\+\): \(.\+\), at .*:\(\d\+\):\(\d\+\)$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[3] + 0,
\ 'col': l:match[4] + 0,
\ 'text': l:match[1] . ': ' . l:match[2],
\ 'type': l:match[1] =~# '^error' ? 'E' : 'W',
\})
endfor
if empty(a:lines)
return l:output
endif
if a:lines[0] =~# '^@nix .*'
for l:line in a:lines
if l:line =~# '^@nix .*'
let l:result = json_decode(strpart(l:line, 4))
if has_key(l:result, 'column')
call add(l:output, {
\ 'type': 'E',
\ 'lnum': l:result.line,
\ 'col': l:result.column,
\ 'text': l:result.raw_msg
\})
endif
endif
endfor
else
let l:pattern = '^\(.\+\): \(.\+\) at .*:\(\d\+\):\(\d\+\)$'
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[3] + 0,
\ 'col': l:match[4] + 0,
\ 'text': l:match[1] . ': ' . substitute(l:match[2], ',$', '', ''),
\ 'type': l:match[1] =~# '^error' ? 'E' : 'W',
\})
endfor
endif
return l:output
endfunction
@@ -21,6 +54,10 @@ call ale#linter#Define('nix', {
\ 'name': 'nix',
\ 'output_stream': 'stderr',
\ 'executable': 'nix-instantiate',
\ 'command': 'nix-instantiate --parse -',
\ 'command': {buffer -> ale#command#Run(
\ buffer,
\ 'nix-instantiate --version',
\ function('ale_linters#nix#nix#Command')
\ )},
\ 'callback': 'ale_linters#nix#nix#Handle',
\})

View File

@@ -0,0 +1,16 @@
" Author: jD91mZM2 <me@krake.one>
" Description: rnix-lsp language client
function! ale_linters#nix#rnix_lsp#GetProjectRoot(buffer) abort
" rnix-lsp does not yet use the project root, so getting it right is not
" important
return fnamemodify(a:buffer, ':h')
endfunction
call ale#linter#Define('nix', {
\ 'name': 'rnix_lsp',
\ 'lsp': 'stdio',
\ 'executable': 'rnix-lsp',
\ 'command': '%e',
\ 'project_root': function('ale_linters#nix#rnix_lsp#GetProjectRoot'),
\})

View File

@@ -3,6 +3,7 @@
call ale#Set('objc_ccls_executable', 'ccls')
call ale#Set('objc_ccls_init_options', {})
call ale#Set('c_build_dir', '')
call ale#linter#Define('objc', {
\ 'name': 'ccls',
@@ -10,5 +11,5 @@ call ale#linter#Define('objc', {
\ 'executable': {b -> ale#Var(b, 'objc_ccls_executable')},
\ 'command': '%e',
\ 'project_root': function('ale#handlers#ccls#GetProjectRoot'),
\ 'initialization_options': {b -> ale#Var(b, 'objc_ccls_init_options')},
\ 'initialization_options': {b -> ale#handlers#ccls#GetInitOpts(b, 'objc_ccls_init_options')},
\})

View File

@@ -10,7 +10,7 @@ function! ale_linters#objc#clang#GetCommand(buffer) abort
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
return 'clang -S -x objective-c -fsyntax-only '
\ . '-iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . '-iquote %s:h'
\ . ' ' . ale#Var(a:buffer, 'objc_clang_options') . ' -'
endfunction

View File

@@ -10,7 +10,7 @@ function! ale_linters#objcpp#clang#GetCommand(buffer) abort
" -iquote with the directory the file is in makes #include work for
" headers in the same directory.
return 'clang++ -S -x objective-c++ -fsyntax-only '
\ . '-iquote ' . ale#Escape(fnamemodify(bufname(a:buffer), ':p:h'))
\ . '-iquote %s:h'
\ . ' ' . ale#Var(a:buffer, 'objcpp_clang_options') . ' -'
endfunction

View File

@@ -9,6 +9,6 @@ call ale#linter#Define('ocaml', {
\ 'lsp': 'stdio',
\ 'executable': function('ale#handlers#ols#GetExecutable'),
\ 'command': function('ale#handlers#ols#GetCommand'),
\ 'language_callback': 'ale#handlers#ols#GetLanguage',
\ 'language': function('ale#handlers#ols#GetLanguage'),
\ 'project_root': function('ale#handlers#ols#GetProjectRoot'),
\})

View File

@@ -0,0 +1,58 @@
" Author: Horacio Sanson <hsanson@gmail.com>
call ale#Set('openapi_ibm_validator_executable', 'lint-openapi')
call ale#Set('openapi_ibm_validator_options', '')
function! ale_linters#openapi#ibm_validator#GetCommand(buffer) abort
return '%e' . ale#Pad(ale#Var(a:buffer, 'openapi_ibm_validator_options'))
\ . ' %t'
endfunction
function! ale_linters#openapi#ibm_validator#Handle(buffer, lines) abort
let l:output = []
let l:type = 'E'
let l:message = ''
let l:nr = -1
for l:line in a:lines
let l:match = matchlist(l:line, '^errors$')
if !empty(l:match)
let l:type = 'E'
endif
let l:match = matchlist(l:line, '^warnings$')
if !empty(l:match)
let l:type = 'W'
endif
let l:match = matchlist(l:line, '^ *Message : *\(.\+\)$')
if !empty(l:match)
let l:message = l:match[1]
endif
let l:match = matchlist(l:line, '^ *Line *: *\(\d\+\)$')
if !empty(l:match)
let l:nr = l:match[1]
call add(l:output, {
\ 'lnum': l:nr + 0,
\ 'col': 0,
\ 'text': l:message,
\ 'type': l:type,
\})
endif
endfor
return l:output
endfunction
call ale#linter#Define('openapi', {
\ 'name': 'ibm_validator',
\ 'executable': {b -> ale#Var(b, 'openapi_ibm_validator_executable')},
\ 'command': function('ale_linters#openapi#ibm_validator#GetCommand'),
\ 'callback': 'ale_linters#openapi#ibm_validator#Handle',
\})

View File

@@ -0,0 +1,9 @@
call ale#Set('yaml_yamllint_executable', 'yamllint')
call ale#Set('yaml_yamllint_options', '')
call ale#linter#Define('openapi', {
\ 'name': 'yamllint',
\ 'executable': {b -> ale#Var(b, 'yaml_yamllint_executable')},
\ 'command': function('ale#handlers#yamllint#GetCommand'),
\ 'callback': 'ale#handlers#yamllint#Handle',
\})

View File

@@ -88,7 +88,7 @@ function! ale_linters#perl6#perl6#Handle(buffer, lines) abort
try
let l:json = json_decode(join(a:lines, ''))
catch /E474/
catch /E474\|E491/
call add(l:output, {
\ 'lnum': '1',
\ 'text': 'Received output in the default Perl6 error format. See :ALEDetail for details',

View File

@@ -0,0 +1,32 @@
" Author: Eric Stern <eric@ericstern.com>,
" Arnold Chand <creativenull@outlook.com>
" Description: Intelephense language server integration for ALE
call ale#Set('php_intelephense_executable', 'intelephense')
call ale#Set('php_intelephense_use_global', 1)
call ale#Set('php_intelephense_config', {})
function! ale_linters#php#intelephense#GetProjectRoot(buffer) abort
let l:composer_path = ale#path#FindNearestFile(a:buffer, 'composer.json')
if (!empty(l:composer_path))
return fnamemodify(l:composer_path, ':h')
endif
let l:git_path = ale#path#FindNearestDirectory(a:buffer, '.git')
return !empty(l:git_path) ? fnamemodify(l:git_path, ':h:h') : ''
endfunction
function! ale_linters#php#intelephense#GetInitializationOptions(buffer) abort
return ale#Var(a:buffer, 'php_intelephense_config')
endfunction
call ale#linter#Define('php', {
\ 'name': 'intelephense',
\ 'lsp': 'stdio',
\ 'initialization_options': function('ale_linters#php#intelephense#GetInitializationOptions'),
\ 'executable': {b -> ale#node#FindExecutable(b, 'php_intelephense', [])},
\ 'command': '%e --stdio',
\ 'project_root': function('ale_linters#php#intelephense#GetProjectRoot'),
\})

View File

@@ -39,7 +39,7 @@ function! ale_linters#php#phan#Handle(buffer, lines) abort
let l:pattern = '^Phan error: \(\w\+\): \(.\+\) in \(.\+\) on line \(\d\+\)$'
else
" /path/to/some-filename.php:18 ERRORTYPE message
let l:pattern = '^.*:\(\d\+\)\s\(\w\+\)\s\(.\+\)$'
let l:pattern = '^\(.*\):\(\d\+\)\s\(\w\+\)\s\(.\+\)$'
endif
let l:output = []
@@ -49,13 +49,15 @@ function! ale_linters#php#phan#Handle(buffer, lines) abort
let l:dict = {
\ 'lnum': l:match[4] + 0,
\ 'text': l:match[2],
\ 'filename': l:match[3],
\ 'type': 'W',
\}
else
let l:dict = {
\ 'lnum': l:match[1] + 0,
\ 'text': l:match[3],
\ 'lnum': l:match[2] + 0,
\ 'text': l:match[4],
\ 'type': 'W',
\ 'filename': l:match[1],
\}
endif

View File

@@ -23,7 +23,7 @@ function! ale_linters#php#phpcs#Handle(buffer, lines) abort
" Matches against lines like the following:
"
" /path/to/some-filename.php:18:3: error - Line indented incorrectly; expected 4 spaces, found 2 (Generic.WhiteSpace.ScopeIndent.IncorrectExact)
let l:pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\) - \(.\+\) (\(.\+\))$'
let l:pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\) - \(.\+\) (\(.\+\)).*$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)

View File

@@ -1,8 +1,9 @@
" Author: Matt Brown <https://github.com/muglug>
" Description: plugin for Psalm, static analyzer for PHP
call ale#Set('psalm_langserver_executable', 'psalm-language-server')
call ale#Set('psalm_langserver_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('php_psalm_executable', 'psalm')
call ale#Set('php_psalm_options', '')
call ale#Set('php_psalm_use_global', get(g:, 'ale_use_global_executables', 0))
function! ale_linters#php#psalm#GetProjectRoot(buffer) abort
let l:git_path = ale#path#FindNearestDirectory(a:buffer, '.git')
@@ -10,12 +11,16 @@ function! ale_linters#php#psalm#GetProjectRoot(buffer) abort
return !empty(l:git_path) ? fnamemodify(l:git_path, ':h:h') : ''
endfunction
function! ale_linters#php#psalm#GetCommand(buffer) abort
return '%e --language-server' . ale#Pad(ale#Var(a:buffer, 'php_psalm_options'))
endfunction
call ale#linter#Define('php', {
\ 'name': 'psalm',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#node#FindExecutable(b, 'psalm_langserver', [
\ 'vendor/bin/psalm-language-server',
\ 'executable': {b -> ale#node#FindExecutable(b, 'php_psalm', [
\ 'vendor/bin/psalm',
\ ])},
\ 'command': '%e',
\ 'command': function('ale_linters#php#psalm#GetCommand'),
\ 'project_root': function('ale_linters#php#psalm#GetProjectRoot'),
\})

Some files were not shown because too many files have changed in this diff Show More