Commit Graph

39 Commits

Author SHA1 Message Date
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
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
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
XeroOl
3c1e01da6f fix selflint issues, and update changelog 2025-08-08 01:16:28 -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
XeroOl
0817af9488 New nested-associative-operator lint
I want to also get like (if a (if b c)) at some point, but this lint
only covers the ones where flattening fixes it always.
2025-07-17 16:37:44 -05:00
XeroOl
5a2e6ef091 fix ci and add more changelog 2025-07-16 22:50:18 -05:00
XeroOl
8811454456 split mismatched-argument-count lint into not-enough-arguments and too-many-arguments 2025-07-15 22:56:20 -05:00
XeroOl
4671d50234 new lint invalid-flsproject-settings, and completely rewrite the way settings get checked 2025-07-15 00:57:06 -05:00
XeroOl
dbc596d10f add stuff to changelog 2025-07-12 20:21:15 -05:00
XeroOl
3ce8cb9157 add lints to changelog 2025-07-12 16:44:32 -05:00
XeroOl
772d59fff1 more changes to the linting system 2025-07-11 18:22:16 -05:00
XeroOl
6826c7584d maintenance of makefile and tools 2025-06-28 00:47:15 -05:00
XeroOl
e355534d8d Release 0.2.1
= 0.2.1 =

== Bug Fixes ==
* Fixed a path issue finding external docsets
* Fixed failing tests in 0.2.0
2025-06-06 12:44:08 -05:00
Phil Hagelberg
552b03b983 Release 0.2.0 2025-06-03 21:24:42 -07:00
XeroOl
3f1c2ea361 clean up some tests, restore (fn M.method []) completion handling 2025-04-23 23:42:29 -05:00
Michele Campeotto
627a02e2c0 Implement basic signatureHelp feature.
This implements the simple form of the signatureHelp feature, which only
displays the signature of the function being typed, without indication
of the active argument.

Active argument detection, while accounting for destructuring to support
each and for special forms turned out to be more involved than expected
and is left for a follow up patch.
2025-03-21 10:42:13 -07:00
Michele Campeotto
b1986395cf Provide human readable code action descriptions
These strings will be displayed in a menu for the user to select.

The error codes, in addition to not being human readable sentences,
describe the issue being reported, not the solution that will be
applied.

The code action response only includes the human readable string, so the
tests need to check for that. I considered adding a custom field but
decided against going out of spec.
2025-03-11 08:58:18 -07:00
Phil Hagelberg
66bc08a616 Remove luarocks packaging files. 2025-03-09 12:34:15 -07:00
Michele Campeotto
3200483011 Add --help and --version flags 2025-03-07 08:42:59 -08:00
Phil Hagelberg
1c2f5364be Use match-try instead of case-try to avoid a where clause.
Add changelog entry.
2025-03-02 09:01:35 -08:00
Phil Hagelberg
670f7d108b Only generate lua manual docs; move tic80/love2d to other repo.
https://git.sr.ht/~technomancy/fennel-ls-docsets
2025-02-28 02:30:55 -08:00
Phil Hagelberg
d23d36a414 Support :union as lua-version setting. 2025-02-26 23:09:11 -08:00
Phil Hagelberg
4020437c6d Update changelog. 2025-02-26 01:42:12 -08:00
Phil Hagelberg
f6fecd7b0b Dates in the changelog. 2025-02-25 01:08:23 -08:00
Phil Hagelberg
78da9c2edc Add support for :intersection as lua version.
This will only accept globals which are present in every Lua version
from 5.1-5.4. Using this for selflint currently fails, so let's fix
that next.
2025-02-25 01:08:07 -08:00
Phil Hagelberg
2edb9c4df5 Update to fennel 1.5.3 2025-02-16 17:20:32 -08:00
XeroOl
a24753c45d update changelog 2024-07-08 10:49:04 -05:00
XeroOl
e5b50a25dc Release 0.1.3
== Features ==
* Updated to fennel 1.5.0
* Better results when syntax errors are present
* Docs for each Lua version: 5.1 through 5.4
* Docs for TIC-80

== Changes ==
* --check is now --lint

== Bug Fixes ==
* Solved a case where there were duplicate completion candidates
* Special workaround for Eglot to be able to complete multisyms
    To be honest, this isn't even Eglot's fault; the LSP specification leaves it ambiguous
    [Eglot's issue](https://github.com/joaotavora/eglot/issues/402)
    [LSP's issue](https://github.com/microsoft/language-server-protocol/issues/648)
    [fennel-mode can't fix it on their end](188ee04e86)

== Misc ==
* Switch json libraries from rxi/json.lua to dkjson
* Lots of refactoring and renaming things
* You can now build fennel-ls with no vendored dependencies if you want
* Building is more reproducible now! `tools/get-deps.fnl` will reproducibly get all the deps, instead of you needing to trust me
* faith updated to 0.2.0
2024-06-27 01:01:34 -05:00
XeroOl
5476eaf096 update fennel to 1.5.0 2024-06-27 00:58:35 -05:00
XeroOl
12ef05eef3 More CI tests 2024-06-23 16:11:00 -05:00
XeroOl
944f57cc08 No duplicate scope completions 2024-04-30 21:42:00 -05:00
XeroOl
146c994991 Release 0.1.2
== Features ==
* Completions and docs for `coroutine`, `debug`, `io`, `math`, `os`, `string`, `table`, `utf8` and their fields.
* Global metadata can follow locals: With `(local p print)`, looking up `p` will show `print`'s information.
* New lint for erroneous calls to (values) that are in a position that would get truncated immediately.
* Upgrade to Fennel 1.4.2

== Bug Fixes ==
* `(-?> x)` and similar macros no longer give a warning (even in fennel 1.4.1 before my -?> patch landed)
* Fixed off-by-one when measuring the cursor position on a multisym. For example, `table|.insert` (where `|` is the cursor) will correctly give information about `table` instead of `insert`.
* Can give completions in the contexts "(let [x " and "(if ", which previously failed to compile.
* Fields added to a table via `(fn t.field [] ...)` now properly appear in completions
* `(include)` is now treated like `(require)`

== Misc ==
* Switched testing framework to faith
* Tests abstract out the filesystem
* Tests use the "|" character to mark the cursor, instead of manually specifying coordinates
2024-03-03 23:26:04 -06:00
XeroOl
9e4ca548e3 Release 0.1.1
=== Features ===
* Add [Nix(OS)](https://nixos.org) support
* Add LuaRocks build support
* Upgrade to Fennel 1.4.1, the first release of fennel that is compatible with fennel-ls without patches.
* Added a lint for operators with no arguments, such as (+)
* `textEdit` field is present in completions

=== Bug Fixes ===
* Fix bug with renaming variables in method calls
* Lots of work to improve multival tracking
* --check gives a nonzero exit code when lints are found
2024-02-20 00:05:41 -06:00
grenewode
112132cc5a feat: add nix(os) packaging &development support
* Adds `/flake.nix`, which allows the package to be installed & developed
  easily by most NixOS users.
* Adds `/default.nix`, which is an older way that some Nix(OS) users
  may expect software to be packaged.
* Adds `/nix/**/*.nix`, which defines various additional helpers used by
  `/flake.nix` and `/default.nix`.
* Updates `.gitignore` to include `/result`, which is the default output
  location when the package is built using

  `nix flake build .` or `nix-build .`
2024-02-19 23:14:52 -06:00
XeroOl
21500707de updated changelog and fixed lint 2024-02-16 23:29:50 -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
a29cbe496e Release 0.1.0 2023-12-06 18:03:12 -06:00