Commit Graph

1595 Commits

Author SHA1 Message Date
lucas-str
9fe9f11521 Add support for npm-groovy-lint (#4495)
* Add support for npm-groovy-lint

* Add doc and tests for npm-groovy-lint

* Use ale#util#FuzzyJSONDecode instead of json_decode
2023-05-06 09:02:07 +09:00
Pat Brisbin
61248e1453 Add fourmolu fixer (#4501)
* Add fourmolu fixer

Fourmolu is aversion of Ormolu that supports configuration. This fixer
was modeled after the Ormolu one, but using the "stack executable"
approach of the Brittany and Stylish Haskell fixers.

* Sort supported-tools.md
2023-04-22 22:05:50 +09:00
David le Blanc
41e12fd640 Added column alignment for errors (#4473) 2023-03-31 10:50:48 +09:00
Guillermo R. Roig Carralero
7dbd3c96ac Add support for rustywind fixer (#4477) 2023-03-26 15:38:24 +09:00
Wilson E. Alvarez
e1a0781f9d Fix ale#util#GetBufferContents and propagate use (#4457)
* Use newline characters instead in ale#util#GetBufferContents
* Propagate use of ale#util#GetBufferContents
* Add ale#util#GetContentBuffer test
2023-03-14 20:55:28 +00:00
Daniel Harding
007c5b1152 Clear virtualtext no matter how enabled (#4475)
When toggling ALE off, clear the virtualtext even when g:ale_virtualtext_cursor is 'all'.
2023-03-08 14:47:58 +00:00
w0rp
bb691d6dee #2172 - Expand PATH in the shell for automatic virtualenv 2023-03-07 01:59:11 +00:00
Albert Peschar
6ae26df22b Add deadnix linter (#4443) 2023-03-07 01:31:14 +00:00
Oskar Haarklou Veileborg
c8e9146049 Fix #3616, #3903 - Use proper floating window borders in neovim (#4417)
* Fix #3616, #3903 - Use proper floating window borders in neovim

* Compatibility w. length 6/7 ale_floating_window_border values
2023-02-21 18:25:10 +09:00
w0rp
ae2d47ba83 Attempt to fix auto virtualenv on Windows 2023-02-08 09:44:25 +00:00
w0rp
4c162877e2 #2172 Auto PATH with ale_python_auto_virtualenv
Automatically set `PATH` for some Python linters that seem to need it
when g:ale_python_auto_virtualenv or b:ale_python_auto_virtualenv is
`1`.
2023-02-08 09:11:31 +00:00
w0rp
f2a21c960a Add support for lua-language-server 2023-02-08 01:14:47 +00:00
Nathan Henrie
e1ae009bac Add alejandra for nix (#4435)
- Fixes https://github.com/dense-analysis/ale/issues/4434
2023-02-07 17:24:52 +09:00
Ben Boeckel
116d713f63 diagnostics: support sending ALE output to Neovim's diagnostics API (#4345)
Support replacing ALE's display of problems with sending problems to the Neovim diagnostics API.

:help g:ale_use_neovim_diagnostics_api

Co-authored-by: David Balatero <dbalatero@users.noreply.github.com>
Co-authored-by: Georgi Angelchev <angelchev@live.co.uk>
Co-authored-by: w0rp <devw0rp@gmail.com>
2023-01-29 17:25:09 +00:00
Sean Enck
0af4899605 Add gopls format as a Go fixer 2023-01-28 00:20:29 -07:00
Yining
b6f6d84c25 add: pycln as a python linter and fixer (#4415)
this commit adds pycln as a Python linter and fixer, together with some
tests and documentation. It addresses #4340

pycln repo: https://github.com/hadialqattan/pycln
2023-01-27 10:24:18 +09:00
w0rp
69c1dc8b5f Fix #4413 - Avoid errors for invalid buffers in ale#virtualtext#Clear 2023-01-06 19:02:35 +00:00
w0rp
0f51c3b01b Fix #4410 - Ignore prop_add errors 2023-01-04 15:13:21 +00:00
Leon
1ee863002a Fix #4408 - Trigger floating preview autocommand on BufWinLeave and WinScrolled (#4409) 2022-12-30 18:47:43 +00:00
w0rp
457e0a50f1 Fix #4331 - Shift line 0 errors to line 1 for virtual-text 2022-12-27 23:40:49 +00:00
w0rp
a18472cc58 Close #4401 - Use subtle defaults for virtual-text
Default virtual-text to the Comment highlight group and prefix
virtual-text messages with comment text for each language by default.

Messages can now be formatted with `%type%` to print the error type.

The Vim 9.0 version has been updated in the Docker image to add test
coverage for virtual-text.
2022-12-27 23:11:53 +00:00
w0rp
98b2ef438e #4400 - Remove virtual-text defaults from highlight.vim 2022-12-27 16:24:10 +00:00
w0rp
fe61e00040 Fix #4400 - Separate virtual text highlight groups to avoid errors 2022-12-27 15:36:35 +00:00
w0rp
3cb4f33a9a Fix #4399 - Manage virtual-text state better 2022-12-26 15:56:34 +00:00
w0rp
31010ad1d1 Update ALE to v3.3.0 2022-12-25 20:30:21 +00:00
w0rp
300ea232de Close #4397 - Add human-readable values for g:ale_virtualtext_cursor 2022-12-25 19:29:16 +00:00
w0rp
2ae04b310a Enable ruff for Python by default 2022-12-25 15:13:10 +00:00
Yining
1e398202b9 fix: ruff not registered as fixer (#4393)
this commit fixes the issue reported at:
https://github.com/dense-analysis/ale/issues/4301#issuecomment-1359289391

it also had some code refactored and
tests added for ruff as fixer (missed in PR #4347).
2022-12-22 09:53:01 +09:00
Matheus
5ce2bf84ca Added support for more file types for clang-format. (#4367) 2022-11-25 13:16:16 +00:00
Carl Smedstad
590352304e Fix bug in sqlfluff implementation & implement fixer support (#4365)
* Account for no sqlfluff output

Avoid crashes when there isn't any output from sqlfluff.

* Add supplort for sqlfluff as a fixer
2022-11-23 19:58:49 +09:00
Jeremy Cantrell
4b433e5693 Add raco_fmt fixer for Racket files (#4354)
* Add raco_fmt fixer for Racket files

* Fix command and add test

* Fix quoting
2022-11-07 22:20:25 +09:00
D. Ben Knoble
07bd24d0fd omni: racket should complete at end of keywords (#4352)
Consider a file like
```
 #lang racket
(require racket/gui)
```
Type `Go(eventspace-`.

Pressing <C-x><C-o> to trigger omnicomplete should suggest
```
eventspace-handler-thread
eventspace-shutdown?
eventspace-event-evt
```

It does not (instead producing "top-level" completions, as if
`(eventspace-` wasn't even there).

Debugging, place the cursor on a space _after_. Now
`ale#completion#OmniFunc(1, '')` correctly returns `1`, but when given
`(0, 'eventspace-')` it returns either the empty list or generic
completion results as described above. I'm not entirely sure of the
mechanism, but it seems that `b:ale_completion_info.prefix` is the key,
and that this is set by `ale#completion#GetPrefix`. Calling
`ale#completion#GetPrefix('racket', line('.'), col('.'))` returned `''`!

Now, it returns `eventspace-` and the completions work correctly again.

Ref #4293, #4186, #3870
2022-11-05 16:47:59 +09:00
Yining
483d056528 add: support for ruff as a Python linter and fixer (#4347)
this commit adds ruff as both a Python linter and fixer, together with
some tests and documentation.

ruff repo: https://github.com/charliermarsh/ruff
2022-10-31 21:55:14 +09:00
Ben Boeckel
28cff80652 codespell: fix spelling errors picked out by codespell (#4343) 2022-10-29 20:56:09 +09:00
Nicolas Pauss
951a668b14 cc: fix using '-x c*-header' for header files with GCC. (#4334)
Gcc does not support `x c*-header` when using `-` as input filename,
which is what ALE does.

Rework the feature to only use `-x c*-header` flag when using Clang and
not GCC.

The feature is now also controlled with the variable
`g:ale_c_cc_use_header_lang_flag` and
`g:ale_cpp_cc_use_header_lang_flag`.
2022-10-12 07:05:37 +09:00
Matheus Gabriel Werny de Lima
a33960eb51 Add fixer "css-beautify". Adjust "html-beautify." (#4319)
* Add fixer "css-beautify". Adjust "html-beautify."

* Error fixes.

* Added chars.
2022-09-30 19:24:32 +09:00
Matheus Gabriel Werny de Lima
7dd13afc6c Added file types for dprint. (#4320) 2022-09-30 12:58:44 +09:00
Andreas Doll
915dc415f3 Add pyright config files to project root files list (#4321)
Add configuration files for pyright (JSON and TOML) to list of files
which identify a project root directory. Update documentation
accordingly.

Co-authored-by: Andreas Doll <andreas.doll@posteo.de>
2022-09-30 11:21:09 +09:00
Nicolas Pauss
78942df284 cc: use '-x c*-header' for header files for C and C++ linters. (#4318)
When linting an header file in C or C++, `-x c-header` or
`-x c++-header` should be used instead of `-x c` or `-x c++`.

Using `-x c` or `-x c++` for headers files can lead to unused variables
and functions marked as static inlined as seen in #4096.

Using `-x c-header` or `-x c++-header` solve these issues.

The list of file extensions that are considered as header files can be
configured with the variables `g:ale_c_cc_header_exts` and
`g:ale_cpp_cc_header_exts`.
2022-09-25 09:02:43 +09:00
Dirk Jonker
1458b8749c Deno: find project root using deno.json/deno.jsonc (#4306)
Deno LSP automatically detects config files named deno.json or
deno.jsonc since version 1.18.

For Deno 1.18+ this means that ALE no longer needs to resolve the
project root. However, removing the project root logic from ALE means
breaking changes for people that are still using an older version.
Adding deno.json to the list of looking files to look for will keep the
behavior consistent and compatible with the Deno config file naming
convention.

See also:
https://deno.com/blog/v1.18#auto-discovery-of-the-config-file
2022-09-11 10:57:03 +09:00
Horacio Sanson
9e8920b336 Fix 4155 - Show error when project root not found (#4207) 2022-09-11 10:51:27 +09:00
D. Ben Knoble
e99f262c2f omni: find last racket keyword for completion (#4293)
Otherwise it finds the first keyword, which is usually not relevant to the
cursor position, and incorrectly calculates the completion position.
2022-09-08 16:57:43 +09:00
Magnus Groß
9feba1148c Implement buffer-wide virtual text support (#4289)
* Remove virtual text via types-filter

This is more robust and has the additional sideeffect that it will make
it easier to implement showing virtual text for all warnings
simultaneously.

We definitely do not want to do a call to prop_remove() for every
virtual text as that will cause noticeable lag when many warnings are
present, thus we can use this to remove all virtual text lines with one
call in the future.

Fixes #4294

refs: https://github.com/vim/vim/pull/10945

* Allow virtual text to appear for all warnings of the buffer

This can be enabled with:

let g:ale_virtualtext_cursor = 2

It is implemented both for neovim and vim 9.0.0297.

Note that sometimes it may appear like some warnings are displayed
multiple times. This is not a bug in the virtual text implementation,
but a sideeffect of multiple linters returning similar results.

For example for Rust, the 'cargo' and 'rls' linters appear to be
activated at the same time, but they sometimes return identical errors.
This causes the virtual text to show the same warning twice.

In the future we can mitigate this problem by removing duplicate errors
from our internal location list.

However users can also achieve cleaner warnings simply by activating
only one linter for each language (or multiple unambiguous linters).

For example for Rust, the problem could be solved with:

let g:ale_linters = {'rust': ['analyzer']}

Fixes #2962
Fixes #3666
2022-09-07 19:38:01 +09:00
Magnus Groß
4943b7d39f Fix virtual text for vim 8.2 (#4291)
Regression was introduced in d93bc2baf7

The problem was that we did not handle the edge case where there is no
last popup to close, which caused old vim versions to enter code by
accident that was only supposed to be run by vim 9.

We fix this by guarding the if condition for vim 9.

Fixes #4290
2022-09-06 19:35:13 +09:00
Shaun Duncan
6996d1c14d Allow callbacks for floating preview popups (#4247)
* Add extra config options for virtualtext

* Undo virtualtext changes and move to floating preview

* revert changes to pass hightlight group to floating preview

* rename var

* Document changes

* Add updates based on feedback

* Check for string type and attempt to call the function

* Fix lint errors

Co-authored-by: Shaun Duncan <shaun@speedscale.com>
2022-08-23 20:22:52 +09:00
Magnus Groß
d93bc2baf7 Use native virtual-text for vim9 (#4281)
Our current virtual text implementation for vim emulates it by abusing
the textprop and popupwin feature from vim 8.2 (for more details see
commit 708e810414).
This implementation sometimes is janky, for example the popups may leak
into other vim windows next to the current window.

Luckily, vim just got native virtual-text support as a proper subtype to
the prop_add() function. By using the 'text' option, the text property
automatically becomes virtual text that is appended to the current line
if col is zero.

Note that the prop_add() method now returns negative IDs for virtual
text properties.

This feature was added in vim 9.0.0067, but it got a lot of bugfixes
which is why we only use this new API if vim has at least version
9.0.0214.
However, there are still some minor bugs with vim's native virtual text,
so we might have to bump the version check again in the future.

Also see #3906.

Now with proper virtual text support for both vim and neovim available,
we can tackle #2962 in the future by simply tracking multiple virt-texts
instead of just the last one.

In the future we might also want to disable our virtual text emulation
support for vim, as it is a total hack, but for now we should keep it
for backwards compatibility.
2022-08-23 20:22:14 +09:00
Hongbo Liu
7889983f89 fix #4276: honor b:ale_enabled for hover at cursor (#4277)
* fix #4276: honor b:ale_enabled for hover at cursor

* fix indention
2022-08-18 06:34:34 +09:00
Mo Lawson
233b681029 Add support for syntax_tree fixer (#4268)
This is the library that now powers prettier/plugin-ruby but is also
stands on its own: https://github.com/ruby-syntax-tree/syntax_tree
2022-08-09 21:11:20 +09:00
Nathan Henrie
5063804d44 Add openscad and sca2d support (#4205) 2022-08-07 16:27:17 +09:00
Tomáš Janoušek
e10fcf22dc Prevent buffering of job output and excessive polling (#4259)
When 'close_cb' is set for job_start(), but out_cb or err_cb isn't, vim
buffers data instead of dropping it (in case someone wanted to read and
process it in close_cb), and additionally polls for new data every 10
milliseconds, causing excessive wakeups and CPU usage. Since we don't
read the data anywhere outside of out_cb/err_cb, any LSP that prints an
error to stderr triggers this and vim keeps spinning until :ALEStopAllLSPs.

Fix this by always setting both callbacks, thus dropping any data we're
not interested in.

See https://github.com/vim/vim/issues/10758 for an upstream report of
the excessive polling. It's possible this is intentional, I dunno.

Fixes: b42153eb17 ("Fix #4098 - Clear LSP data when servers crash")
2022-07-26 17:56:12 +09:00