Commit Graph

543 Commits

Author SHA1 Message Date
Michele Campeotto
ed01d95c94 Add missing required LSP field CompletionList.isIncomplete
Strict clients (Zed editor) don't accept completions without this flag.
2025-11-08 11:58:16 -06:00
Michele Campeotto
515e40bd4c Fix unknown field false positive
When attempting to search through a require, analyzer.search-list was
returning nil instead of indeterminate if it could not find the file.

Fixes #89
2025-11-08 11:58:14 -06:00
Phil Hagelberg
b08743f79e Update manual 2025-10-27 18:40:25 -07:00
XeroOl
7036ce5f22 fix push diagnostics sending outdated diagnostics 2025-10-26 14:03:27 -05:00
XeroOl
eb80380ea7 change version to 0.2.3-dev 2025-10-25 15:32:41 -05:00
XeroOl
389de94d09 Release 0.2.2 2025-10-25 15:24:26 -05:00
XeroOl
f5ae8f1803 update to fennel version 1.6.0 2025-10-25 15:18:02 -05:00
XeroOl
148d90a0ba update docs on packaging
the packaging situation has slightly changed since writing the
documentation, so it was out of date.
2025-10-25 14:56:16 -05:00
XeroOl
59b59b98fd meta tests for selflint and release version 2025-10-25 14:12:50 -05:00
XeroOl
6aabd7797f skip some unnecessary jsonrpc shennanigans in non-interactive code
The "initialize" jsonrpc method calls `config.initialize`, so
we can just call it directly.
2025-10-25 13:48:06 -05:00
Michele Campeotto
9ea6a0965b Add documentSymbol support
Implements LSP documentSymbol request to provide a list of all symbols
defined in the current document. Clients use it to show an outline and
allow to jump to the symbol's definition.
2025-10-22 09:55:55 -05:00
Phil Hagelberg
53426c0a3e Don't loop endlessly on EOF in server mode. 2025-10-19 13:32:38 -07:00
Phil Hagelberg
7313599907 Revert "Enable legacy-multival lint on fennel-ls itself and fix self-lints."
This reverts commit bf17771bab.
2025-10-19 13:32:38 -07:00
Michele Campeotto
1061db98d0 Don't drop multisym delimiters at the end of a symbol
added a test for completions
2025-10-19 15:24:33 -05:00
Phil Hagelberg
2b79a0955f Add --fix command to CLI.
If the user declines a fix, it will stop fixing the file it's looking
at and go on to the next one.

If they accept the fix, we have to re-run diagnostics, because fixes
can change offsets and line numbers.

Add tests that invoke the `fennel-ls` executable as a subprocess.
2025-10-12 15:39:49 -07:00
Phil Hagelberg
bf17771bab Enable legacy-multival lint on fennel-ls itself and fix self-lints. 2025-10-07 20:10:11 -07:00
Phil Hagelberg
2b2c31c577 Add legacy-multival/legacy-multival-case lint and fix.
As of Fennel 1.6.0, parens in destructuring is deprecated, and we want
to make it easy for people to convert to using table destructuring
instead since it's optimized to compile to the same thing.
2025-10-07 10:18:04 -07:00
XeroOl
467454f4e2 fennel-ls doesn't support workspace diagnostics 2025-10-03 19:52:22 -05:00
thacuber2a03
91d32f11d9 fix illegal shape of diagnosticProvider in handlers
for now, interFileDependencies and workspaceDiagnostics are enabled
2025-10-03 19:26:46 -05:00
XeroOl
b355e6d144 fix macro handling 2025-09-23 19:49:48 -05:00
XeroOl
03addbf312 prepare for message batching 2025-09-14 18:24:26 -05:00
XeroOl
cd9821cd80 fix fennel-ls#81 2025-08-29 16:09:27 -05:00
XeroOl
5c0894d57d fix vararg issue in compiler environment 2025-08-29 15:41:07 -05:00
XeroOl
ca56679b3d this changes nothing 2025-08-26 01:10:19 -05:00
XeroOl
6b5f787bc9 simplify unknown module code 2025-08-22 19:03:53 -05:00
XeroOl
13b75260b2 fix initialization options ignoring symbol splitting 2025-08-22 19:03:53 -05:00
Rudolf Adamkovič
fe3fd3340d Add empty-do hint 2025-08-16 10:07:19 -07:00
XeroOl
bd81685887 adjust todo comments 2025-08-13 13:06:10 -05:00
XeroOl
dce69a2b24 test that functions don't evaluate to themselves
There was a bug at some point that fennel assumed a function call would
evaluate to the function being called, which is not true.
2025-08-13 13:03:21 -05:00
XeroOl
3c1e01da6f fix selflint issues, and update changelog 2025-08-08 01:16:28 -05:00
XeroOl
bf3f353b8d fix issue with duplicate errors
fixes #75
2025-08-08 01:12:57 -05:00
XeroOl
fce339f506 Clean up lint API - ast instead of range, and no severity
The "other" type lints are still unsolved.

Co-authored-by: Phil Hagelberg <phil@hagelb.org>
2025-08-07 23:30:12 -05:00
Phil Hagelberg
de784e91ad Add zero-indexed lint. 2025-08-07 23:01:23 -05:00
XeroOl
a366e5996d rewrite diagnostics to support pull diagnostics 2025-08-07 22:57:07 -05:00
XeroOl
c127c54937 sort text for completions
some cursed heuristics for completions, because nvim-cmp kept getting
them wrong. nvim-cmp actually prioritizes kind over sort text, so it
will still get it wrong, but I'm hoping that having a correct sort-text
helps other editors.
2025-08-01 19:28:23 -05:00
XeroOl
1fb27f876b minor refactor 2025-07-30 17:12:15 -05:00
XeroOl
08e5d38b57 special? and op? shouldn't be in the compiler if we're not using them 2025-07-30 16:39:53 -05:00
XeroOl
38cfd9a249 tricky macro hidden scope completions
it's hard to tell which scope something is in. This makes completions a
little better but it misses docs during good completion
2025-07-30 15:59:43 -05:00
XeroOl
dfa42610f7 fix __pairs on older lua 2025-07-30 14:54:37 -05:00
XeroOl
9aba5baef2 pass in custom compiler environment 2025-07-30 14:45:19 -05:00
XeroOl
735d8d5663 suppress warnings during tests 2025-07-30 14:25:55 -05:00
XeroOl
ce2b390f8d defeat grep, and make FENNEL depend on vendor instead of file presence 2025-07-30 14:24:53 -05:00
XeroOl
4167e02c30 save a line 2025-07-30 13:57:05 -05:00
XeroOl
48b4653a70 triggerCharacters 2025-07-30 13:49:41 -05:00
XeroOl
2a23d2f950 fix completion scope bug and fix completion macro call special case and add completions for nil and false and true and improve completion test speeds
I did a lot in one big commit.

fix bug where (each [foo (ipairs [])] |)  wouldn't suggest foo
fix bug with (doto foo |) wouldn't suggest specials and macros, even though it expands to | in a call position
completions for true, false, nil, .nan, .inf
docs for true, false, nil
clarify error message when passing a folder to --lint
improved test performance for completion tests
2025-07-30 00:29:32 -05:00
XeroOl
1733cbab94 compiler environment docs 2025-07-30 00:24:43 -05:00
XeroOl
27a7548453 fix max argument lint 2025-07-29 23:41:23 -05:00
XeroOl
c78f5411bf insert/replace completion support
LSP protocol describes two types of completion: insert, and replace.
It turns out its really easy to support this. The hard part is just
checking if the client actually wants it.
2025-07-26 19:21:26 -05:00
XeroOl
0828820097 completions no longer suggest invalid fields 2025-07-26 19:10:41 -05:00
XeroOl
251a7789a4 add undocumented :compiler-instruction-limit setting
Not sure if I want to keep this, but you can now configure fennel-ls
to cap how long it allows the compiler to compile each top level form.
It will stay undocumented for now.
2025-07-23 23:51:05 -05:00