Commit Graph

250 Commits

Author SHA1 Message Date
XeroOl
25375715c7 Restore hovering to globals 2024-03-01 16:48:07 -06:00
XeroOl
66bcfc65e5 fix completions for M style modules 2024-03-01 16:39:46 -06:00
XeroOl
45ab692db4 don't warn for symbols hidden in macros 2024-03-01 14:52:23 -06:00
XeroOl
284983657f continue compilation in broken let statements 2024-03-01 14:51:18 -06:00
XeroOl
186c388344 Change tests to faith 2024-03-01 14:43:26 -06:00
XeroOl
418e04edff fix tests to work again 2024-02-24 00:00:33 -06:00
XeroOl
a7d6122670 Fix completion problem in (if) conditions with no body 2024-02-23 23:52:27 -06:00
XeroOl
44805cd675 Add lint for (values) in non-tail position of a call 2024-02-23 12:25:51 -06:00
XeroOl
6152bed8a6 Move json dependency to fennel-ls/json, to represent that it's a modified version 2024-02-19 21:32:38 -06:00
XeroOl
b8565bd146 More language.fnl changes 2024-02-12 21:41:14 -06:00
XeroOl
d3f6d95c09 change the names to be more different 2024-02-11 23:55:05 -06:00
XeroOl
6f9935a781 Fix renames that cover method calls
That was a tough one to debug! I almost thought it was a bug in fennel,
but it, of course, turned out to be a fennel-ls problem.

When you have a symbol like (foo:bar), fennel compiles it by
"macroexpanding" it to (: foo :bar). When fennel macroexpands a macro,
it tries to clean up the output by giving it a best-guess
bytestart/byteend. Fennel-ls was picking up *both* the accurate
`foo:bar` sym and the best-guess virtual `foo` sym as separate
references to `foo`. When computing the renames, the best-guess values
were getting used, which made the replacement range inaccurate.
2024-02-11 23:45:08 -06:00
XeroOl
be5e167d67 very minor fix for completions 2024-02-11 23:11:45 -06:00
XeroOl
3a3b5d38d6 better multisym search, and hover tests to prove it
The search code is getting messy again. I may have to refactor it at
some point.
2024-02-10 01:07:43 -06:00
XeroOl
0e47eee5a4 test: completion edit range testing 2024-02-09 14:15:38 -06:00
XeroOl
3da1e6304b test: add check for unused diagnostic 2024-02-08 12:26:22 -06:00
XeroOl
b6b51698c4 added "セ" character to unicode tests
Although it was properly handled it before, there were no tests for
the unicode offset conversions that used characters that are 3 bytes
in utf8 and 2 bytes in utf16, so I added one. Now, every single
""type"" of charater is tested.
2024-02-03 01:34:41 -06:00
XeroOl
c1f9d43687 added a test for hovering over multival destructure 2024-02-03 01:31:46 -06:00
XeroOl
25e279eda3 completions textEdit initial code 2024-02-03 01:31:27 -06:00
XeroOl
8b6d905450 make multival definition tracking much better
there should now be no cases where multivals and table destructures are
confused. ie, (local [_ x] (values 1 2)) and (local (_ x) [1 2]) are recognized
as nonsense.
2024-02-02 02:12:30 -06:00
XeroOl
297f6c4fa9 fix set rename issue ~xerool/fennel-ls#8
Now unused variables and var-not-set lints use a different system.

References are now of type:
{:symbol sym :target ast :ref-type (or :read :write :mutate)}
instead of ast.

unused var will warn if all the references are :write references.
2024-01-25 00:06:59 -06:00
XeroOl
01035980b0 factoring 2024-01-25 00:06:59 -06:00
XeroOl
b2ec7e5a3a Add debug info to the test 2024-01-25 00:06:51 -06:00
Phil Hagelberg
5055fd31ef Add diagnostic for var-never-set.
This uses the isvar field from the opts map of the destructure hook.
2023-12-06 17:59:26 -06:00
adjuvant
e4ec4dc9c4 Configuration of extra allowed globals 2023-12-03 16:25:54 -06:00
XeroOl
6329fb6ea3 bad-unpack lint warns about (+ (unpack t))
Also, there's a special message for the .. operator to let people know
about table.concat
2023-12-01 14:13:34 -06:00
Phil Hagelberg
5acaac966e Ensure that defining a function on an arg counts as a reference.
Otherwise you get a warning here saying that t is unused:

    (fn f [t x] (fn t.f []) x)
2023-11-26 13:40:20 -06:00
XeroOl
b861812b24 Re-enable the : lint, but with better checks 2023-11-26 12:38:20 -06:00
Phil Hagelberg
c8f9b71057 Add diagnostic warning for unnecessary : call.
When you have a call to the `:` special which could just be a multisym
method call, emit a warning for that.
2023-11-25 18:16:28 -06:00
XeroOl
27d1df23eb Do not warn on fennel rest in function
I kept the test from Tibor Classen's patch, but the code is fixed by
preventing & from ever being a definition, instead of ignoring it only
in the diagnostic.

Co-authored-by: Tibor Claassen <tc@codebeige.net>
2023-11-25 17:55:06 -06:00
XeroOl
824525573a fix a crash
This isn't a great fix, but now finding the definition of a number
doesn't cause a crash.

It used to crash because there's no way to get metadata about the
source-code location of a number.
2023-09-18 17:00:29 -05:00
XeroOl
223976194e textDocument/rename Filter out when symbol references itself
When a symbol is recorded to be its own reference, fennel-ls
accidentally counts the reference twice. That's fine, but we don't want
to replace the same words multiple times
2023-09-16 13:02:14 -05:00
XeroOl
364d02b90d
Better completions for fields of tables
Now it does a two-level-deep search when creating competions for tables,
which means that a completion for module fields have better metadata.
the completion code is a bit of a mess, so I want to look into
refactoring it soon.
2023-09-03 10:23:33 -05:00
adjuvant
31ea7a1039 Allow configuration through initialization options 2023-08-26 20:02:07 -05:00
XeroOl
41a84c5540 fix test for json null 2023-08-21 12:18:26 -05:00
XeroOl
eb1fe781b8 attempt to make the CI more likely to pass 2023-07-20 09:26:36 -05:00
XeroOl
3c2bc8c35c refactor compiler.fnl 2023-07-18 23:53:19 -05:00
XeroOl
ee449df166 Support &as, and ignore & 2023-07-14 10:38:41 -05:00
XeroOl
fe257c061a Add primitive support for renaming 2023-07-13 00:43:16 -05:00
XeroOl
9d534c161f Unused diagnostic now finds functions 2023-07-12 20:43:23 -05:00
XeroOl
5f701d8a6b Remove the word "mock" from the tests so that I feel better about myself
It isn't mocking if you don't call it mocking
2023-07-12 19:07:28 -05:00
XeroOl
1c2a1d3f6a fix bug with top level symbols 2023-07-12 01:29:53 -05:00
XeroOl
b011004988 Support utf16 offsets, and upgrade textdocumentsync to 2 2023-07-12 00:09:30 -05:00
XeroOl
f367914244 shuffle the macro searcher code a little bit ??? 2023-07-09 20:35:04 -05:00
XeroOl
cd37e05e54 Test changes, and fennel-ls now properly negotiates for utf-8 encoding
Unfortunately, fennel-ls still doesn't respect utf-16 rules if the
negotiations fail.
2023-07-09 19:51:20 -05:00
XeroOl
95245726e1 switch more "match" to "case" 2023-07-07 13:40:12 -05:00
XeroOl
21bd635123 treat lambda and λ as function definitions 2023-06-29 12:23:42 -05:00
XeroOl
2c61b5401a Various changes, and fix a searcher crash 2023-06-22 23:28:17 -05:00
XeroOl
3c79f480a8 macro-path and metadata for builtin macros and a couple bug fixes 2023-06-09 01:08:10 -05:00
XeroOl
20b9094592 Added hover and completion for specials
next on the todo list is macros and globals, and then I want to be able
to choose extra globals to add in.
2023-06-03 01:26:07 -05:00
XeroOl
957def8e42 Improve goto-definition 2023-06-02 20:58:02 -05:00
XeroOl
91d4e1e410 Multivals ruining everything 2023-06-02 18:10:35 -05:00
XeroOl
b2c3c04bfe Completions now come with some doc info 2023-06-02 17:34:19 -05:00
XeroOl
a3f787b008 clean up test code 2023-05-29 12:21:36 -05:00
XeroOl
74100ad8ec fix test when running with luajit 2023-05-29 12:19:48 -05:00
XeroOl
5e0a974e30 add some negative test cases for call completions 2023-05-27 21:35:19 -05:00
XeroOl
a1169308d3 completions on multisyms 2023-05-27 21:28:42 -05:00
XeroOl
7f8942fde6 Support completions of x: symbols 2023-05-27 21:10:49 -05:00
XeroOl
deb571092b Only suggest macros/specials in call position
I know that sometimes macros can sometimes take macro/special arguments
in places other than the call position, but I'm not supporting that for
now. If you're writing code like (-> 1 /), the / won't be offered as a
completion suggestion.
2023-05-27 14:14:40 -05:00
XeroOl
a521701dba Fix "unused variable" lint not counting mutating sets as a use 2023-05-26 18:17:15 -05:00
XeroOl
8c33a46d6d fix crash when compiling: (fn undefined.x []) 2023-05-05 16:45:17 -05:00
XeroOl
eab0769b06 Small changes 2023-05-03 00:16:04 -05:00
XeroOl
fbfd7cdaaa Options over LSP
Fennel-ls now can receive options from the language client over the
protocol. Future work still necessary to have project-local files.
2023-05-02 23:55:37 -05:00
XeroOl
f0b6a2672d textDocument/references, and an unused var lint 2023-04-14 16:18:10 -05:00
XeroOl
f157313133 test refactoring 2023-03-27 20:56:03 -05:00
XeroOl
33d080f6c6 Changed test framework to not require outside deps 2023-03-23 14:55:06 -05:00
XeroOl
2eb99a7283 Update fennel to version 1.3.1
There is a new fennel branch on my fork of fennel called extra-hooks-3
which is up to date with fennel 1.3.1 and has the extra hooks necessary
for the server.

Also, some of the error messages need to be updated to match with fennel
1.3.1's changes.
2023-02-22 23:36:14 -06:00
XeroOl
a13483185b
Refactoring and test for path settings 2022-09-23 00:03:10 -05:00
XeroOl
a86c52f33a
Add settings (untested / undocumented) 2022-09-22 00:44:10 -05:00
XeroOl
566b475ff8
refactoring and starting to implement settings 2022-09-21 21:26:55 -05:00
XeroOl
cd4358a4b7
Parse errors are on the correct line number now 2022-09-18 13:05:35 -05:00
XeroOl
5c4d0530f8
consider which part of a multisym the cursor is on
For goto-definition and hovering.
2022-09-17 20:01:25 -05:00
XeroOl
05aa1f7408
Added test for :: crash 2022-09-17 09:24:59 -05:00
XeroOl
06a6e8c7ea
Remove error response when hovering over nothing 2022-09-07 21:19:36 -05:00
XeroOl
0d8b927929
goto-definition with injected fields (fn a.b []) 2022-09-03 12:52:34 -05:00
XeroOl
b2540e53cb
Fixed indirect table field completions 2022-09-03 12:00:46 -05:00
XeroOl
6b642f1d9b
Refactor :?definition to :definition 2022-09-02 18:20:09 -05:00
XeroOl
3cab59622c
The parser is more robust under error 2022-09-01 23:20:38 -05:00
XeroOl
89eb07c064
adjust parents, and take advantage of hooks for better completions 2022-09-01 01:03:59 -05:00
XeroOl
b9d084fada
Upgrade fennel to ~xerool/fennel for extra hooks 2022-09-01 01:02:19 -05:00
XeroOl
69fcd63fad
goto definition understands (let) 2022-08-30 22:30:39 -05:00
XeroOl
82d7913c45
rewrite of find-symbol in preparation for completions 2022-08-28 00:40:46 -05:00
XeroOl
3eeba96188
Refactoring / documentation comments / small fixes 2022-08-24 23:12:28 -05:00
XeroOl
33e938b8db
More README changes 2022-08-20 22:05:09 -05:00
XeroOl
a09035dabc
Refactor 2022-08-19 09:43:58 -05:00
XeroOl
22b4235073
Adds support for hovering over symbols 2022-08-14 23:06:28 -05:00
XeroOl
c2cd1e50fe
Improved goto-definition sifting destructures 2022-08-13 14:20:40 -05:00
XeroOl
44e7158e7d
Somehow even more refactoring 2022-08-09 01:20:58 -05:00
XeroOl
e57833f1e5
more refactoring churn for no reason 2022-08-08 18:11:20 -05:00
XeroOl
f610201b9d
Big refactoring 2022-08-07 22:46:34 -05:00
XeroOl
80d4455ed3
find definition is more advanced but more brittle 2022-08-07 18:47:18 -05:00
XeroOl
61947d3219
Goto definiton for destructuring 2022-08-04 00:33:50 -05:00
XeroOl
42850a76e0
Refactoring 2022-08-02 22:54:29 -05:00
XeroOl
4847179afd
Created a compiler plugin, local go-to-definition 2022-08-02 18:18:03 -05:00
XeroOl
052f9a67d0
reduce the prevelance of penlight 2022-08-01 18:21:27 -05:00
XeroOl
680e4a6485
More progress on the language server 2022-08-01 13:09:05 -05:00
XeroOl
db59350a1c
go-to-definition for require with fixed module name 2022-07-30 23:58:12 -05:00
XeroOl
3c91ad0680
More progress 2022-07-30 01:30:01 -05:00
XeroOl
9815dae79d
Test rework, and more file tests 2022-07-29 00:08:14 -05:00
XeroOl
792713ab2a
more content 2022-07-28 19:11:18 -05:00