fennel-ls/changelog.md

4.9 KiB

Changelog

UNRELEASED / ???

Features

  • Signature help support.
  • Provide human readable code actions titles.
  • Add --help and --version command line flags.
  • Support providing improved completion kinds to clients.
  • Support highlighting references to the symbol under the cursor in the current file.
  • Support loading external docsets from disk.
  • Extract TIC-80 docs to external docset.
  • Support :lua-version settings like "lua5.4" rather than requiring "lua54".
  • Support "union" in :lua-version for globals present in any Lua version.
  • Support "intersection" in :lua-version for globals present in every Lua version.
  • Show the kind of thing being completed better.
  • Add lints for unnecessary tset and do.
  • Add lint for replacing match with case when possible.
  • Ignore unused locals if they end in underscore.
  • Settings file: flsproject.fnl. Settings are now editor agnostic.
  • Support :intersection as a Lua version; only includes globals present in every Lua.
  • Support better completions. The eglot client is no longer a special case.

Changes

  • Packaging scripts for nix and luarocks have been removed so they can be kept in downstream repositories.

Bug Fixes

  • (set (. x y) z) wasn't being analyzed properly.
  • (local {: unknown-field} (require :module)) lint warns about the unknown field when accessed via destructuring.

0.1.3 / 2024-06-27

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

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

0.1.2 / 2024-03-03

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

0.1.1 / 2024-02-19

Features

  • Add Nix(OS) 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

0.1.0 / 2023-12-06

Initial Features

  • Completion: works across files, and works with table fields

  • Hover: works across files, and works with table fields

  • Go-To Definition: works across files, and works with table fields

  • Go-To References: only same-file; lexical variables only

  • Rename: only same-file; lexical variables only

  • Diagnostics:

    • Compiler Errors
    • Unused Definitions
    • Unused Mutability with var
    • Unknown Module Field
    • Unnecessary : form
    • Unpack into operator
  • Supports functions/values you define, and fennel builtins / macros

  • Limited support for some of lua's builtins

Info

  • Uses bundled fennel 1.4.0-dev
  • executes macro code in the macro sandbox
    • infinite loop macros will freeze fennel-ls
    • fennel-ls will have trouble working with macros that require disabled sandbox
  • There was a security issue in previous versions of fennel-ls regarding macro sandboxing