Commit Graph

141 Commits

Author SHA1 Message Date
XeroOl
a3dcd92e85 (and) and (or) are covered by unpack diagnostic 2024-02-10 01:06:21 -06:00
XeroOl
a973de5f87 doc comment changes 2024-02-10 01:04:47 -06:00
XeroOl
0e47eee5a4 test: completion edit range testing 2024-02-09 14:15:38 -06:00
XeroOl
68b149b1b6 Update docs 2024-02-09 12:31:07 -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
8a988cb8be Make search-main slightly better when starting at a multival destructure 2024-02-02 02:44:05 -06:00
XeroOl
1c40c93b4d refactor compiler.fnl to share destructure recursion 2024-02-02 02:16:29 -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
6e68552940 Renaming search to search-ast
I think this is a slightly better name, but I'm still not sure what to
call this function.
2024-01-25 00:06:59 -06:00
XeroOl
b2ec7e5a3a Add debug info to the test 2024-01-25 00:06:51 -06:00
XeroOl
a29cbe496e Release 0.1.0 2023-12-06 18:03:12 -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
Phil Hagelberg
f25fd9fd60 Replace fork of Fennel with upstream.
* Rename "customhook-early-" hooks to "pre-"
* Change hook argument order to put scope second.
2023-12-03 16:32:15 -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
XeroOl
a24cb97d5e use bytes instead of utf16 "code units" for --check mode 2023-12-01 14:12:30 -06:00
XeroOl
16e9fbd856 Update fennel to my extra-hooks-6 branch of 1.3.1-dev 2023-12-01 13:56:28 -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
Phil Hagelberg
765b3d784f Change format of --check output to look like compiler errors.
They'll look like this now:

src/fennel-ls/compiler.fnl:123:15 unused definition: ?definition
src/fennel-ls/compiler.fnl:5:52 unused definition: view
src/fennel-ls/compiler.fnl:197:13 unused definition: i
src/fennel-ls/compiler.fnl:271:25 unnecessary : call; use multisym
src/fennel-ls/handlers.fnl:14:10 unused definition: view
src/fennel-ls/handlers.fnl:170:3 unused definition: create-completion-item
src/fennel-ls/language.fnl:187:3 unused definition: does-not-contain?
src/fennel-ls/language.fnl:221:28 unused definition: i
src/fennel-ls/language.fnl:4:51 unused definition: view
src/fennel-ls/language.fnl:171:3 unused definition: past?
src/fennel-ls/language.fnl:208:23 unused definition: i
src/fennel-ls/searcher.fnl:12:4 unnecessary : call; use multisym
src/fennel-ls/state.fnl:23:3 unused definition: get-by-path
src/fennel-ls/state.fnl:12:2 unnecessary : call; use multisym
src/fennel-ls/utils.fnl:15:16 unused definition: i

This has the advantage of making it so that existing tooling will work
with it; for example, Emacs can hyperlink these and jump right to the
code causing the issue.

Use 1-indexed line numbers instead of 0-indexing because Emacs and Vim
expect this.
2023-11-26 10:41:21 -08:00
Phil Hagelberg
4a121f70b0 Add selfcheck make target.
Also cleans up repeated path options in the makefile, and cleans up
warnings where fennel-ls warns on itself.

There were some unused functions; I just put a _ before their name but
that might be a bit silly. Maybe they should be removed? Or just left alone?
2023-11-26 10:41:21 -08:00
XeroOl
b861812b24 Re-enable the : lint, but with better checks 2023-11-26 12:38:20 -06:00
XeroOl
d74c6fbdc0 Disable the method check 2023-11-26 00:42:07 -06:00
Phil Hagelberg
802ff4ab17 Support --check for batch mode diagnostics.
Mostly taken from the separate fennel-lint.fnl file.
2023-11-25 18:16:33 -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
XeroOl
9db2ec7537 Documented initializationOptions
We accept the settings object either from initialize:initializationOptions or
workspace/didChangeConfiguration:settings. The readme now explains this.
2023-08-26 22:31:40 -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
adjuvant
1710649105 Fix textDocument/hover returning invalid message
The `result` key must not be missing in the response.
2023-08-21 12:16:29 -05:00
adjuvant
7c1bbc8c2b json.lua: Allow encoding null values
A similar proposal was already rejected upstream:
https://github.com/rxi/json.lua/pull/6
2023-08-21 12:16:29 -05:00
XeroOl
e7c642e12a don't advertise pull diagnostics if fennel-ls uses push diagnostics 2023-07-20 09:27:19 -05:00
XeroOl
eb1fe781b8 attempt to make the CI more likely to pass 2023-07-20 09:26:36 -05:00
XeroOl
c30c3f35bc attempt 1 to add ci to fennel-ls 2023-07-18 23:57:41 -05:00
XeroOl
3c2bc8c35c refactor compiler.fnl 2023-07-18 23:53:19 -05:00
XeroOl
4b8172ac05 Fix the &as destructuring 2023-07-15 14:35: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