Skip to content

Releases: JohnnyMorganz/luau-lsp

1.27.0

25 Dec 16:07
Compare
Choose a tag to compare

[1.27.0] - 2023-12-25

Important Note

Heads up! In VSCode, this release changes the registered language ID from lua to luau. If you have any configuration based on the old language ID (e.g. themes / file icons / semantic highlighting overrides / language-specific settings overrides), you may need to update them.

Added

  • Marking an item as @deprecated via documentation comments will now reflect its deprecated status in autocomplete (currently no diagnostics support)

image

  • Show string literal byte length and utf8 characters on hover

image
image

  • Added support for viewing textual bytecode and compiler remarks using commands Luau: Compute Bytecode for file and Luau: Compute Compiler Remarks for file.
    This opens up a new view with bytecode/remarks inlined as comments in the source file
    • Added configuration luau-lsp.bytecode.vectorLib, luau-lsp.bytecode.vectorCtor and luau-lsp.bytecode.vectorType to configure compiler options when generating bytecode
    • Custom editors should handle the luau-lsp/bytecode and luau-lsp/compilerRemarks LSP message to integrate compiler remarks info in their editor
Code_kAxxymJYpX.mp4
  • Added luau-lsp.types.robloxSecurityLevel to select what security level to use for the API types, out of: None, LocalUserSecurity, PluginSecurity and RobloxScriptSecurity
  • Support passing --settings to luau-lsp lsp configuring the default global settings to use

Changed

  • Sync to upstream Luau 0.607
  • Made rename operation fully backed by find all references, to ensure both return results that are consistent with each other
  • Hide return type hints for no-op functions
  • Changed the VSCode registered language and grammar ID from lua to luau. NOTE: this may affect existing custom themes!
  • Renamed script/globalTypes.d.lua to script/globalTypes.d.luau (the old file will be kept temporarily for compatibility)
    • Please update your references to the file in custom scripts
  • Default security level of API types changed from RobloxScriptSecurity to PluginSecurity - set luau-lsp.types.robloxSecurityLevel to RobloxScriptSecurity to see original behaviour
  • Improved warning message when Rojo not found when attempting to generate sourcemap, with option to configure settings to disable autogeneration

Fixed

  • Fixed Find All References / Rename not working on a table property defined inline, such as name in:
local T = {
  name = "string"
}
  • Fixed methods and events showing up in "GetPropertyChangedSignal" autocomplete
  • Fixed requiring a directory containing "init.lua" not working
  • Fixed go to definition on a property of a table that stores a cross-module type value (e.g. the result of a function defined in another module)

Full Changelog: 1.26.0...1.27.0

1.26.0

19 Nov 11:21
Compare
Choose a tag to compare

[1.26.0] - 2023-11-19

Added

  • Added support for documentation comments on table type properties:
type Foo = {
  --- A documentation comment
  map: () -> ()
}
  • We now show the file path in the completion description when auto-requiring files

Changed

  • Sync to upstream Luau 0.604
  • Overhauled command line argument parsing system to be more consistent and flexible
  • Deprioritized loadstring in autocomplete
  • luau-lsp.diagnostics.strictDatamodelTypes now defaults to false on the language server side (note, it was already default false in VSCode).
    Defaulting to true was unintentional. This will affect external language client users (e.g. neovim)
  • Analyze CLI tool now respects luau-lsp.diagnostics.strictDatamodelTypes if set in the provided configuration.
    The flag --no-strict-dm-types still remains for backwards compatibility reasons, but is now deprecated.

Fixed

  • Attempting to rename a generic type parameter now correctly renames it in all locations
  • Fixed renaming a local variable not appropriately renaming any imported types
  • Auto-import requires will now show the full codeblock that will be inserted, rather than just the first line if also inserting a service

1.25.0

14 Oct 12:26
Compare
Choose a tag to compare

[1.25.0] - 2023-10-14

Changed

  • Sync to upstream Luau 0.599
  • Prioritise game:GetService() as the first autocompletion entry when typing game:
  • Code blocks in hover and documentation now use luau as the syntax highlighting

Fixed

  • Do not add line separator in hover when there is no text documentation
  • Fixed init files not working with directory aliases (e.g. require("@dir") or require("@dir/subdir"))

1.24.1

10 Sep 01:01
Compare
Choose a tag to compare

[1.24.1] - 2023-09-09

Changed

  • Sync to upstream Luau 0.594
  • Support autocomplete end on do blocks

Fixed

  • Fixed crash when attempting to Go To Definition of an imported type

1.24.0

26 Aug 18:03
Compare
Choose a tag to compare

[1.24.0] - 2023-08-26

Changed

  • Sync to upstream Luau 0.592
  • Simplified Instance.new and game:GetService calls internally and in the definitions file to reduce complexity issues in the typechecker.

Fixed

  • Fixed cleanup of rojo sourcemap generation process when VSCode exits
  • Fixed color presentations values being unclamped causing errors in other editors
  • Fixed newline not added to separate services and requires when the suggestion imports both at the same time

1.23.0

06 Aug 11:10
Compare
Choose a tag to compare

[1.23.0] - 2023-08-06

NOTE: For automatic sourcemap generation users, this release now requires Rojo v7.3.0+ is installed, with rojo sourcemap --watch support

Added

  • Added command luau-lsp.reloadServer to restart the language server without having to reload the workspace

Changed

  • Sync to upstream Luau 0.589
  • Changes to settings which require server restart will now reload the server instead of having to reload the whole VSCode workspace
  • Switch to Rojo rojo sourcemap --watch command for sourcemap autogeneration. Note that on rojo error, you must manually restart sourcemap regeneration. Requires Rojo v7.3.0+

Fixed

  • Reverted change to type checking in 1.22.0 that reduced memory footprint. This should resolve the problems where diagnostics aren't showing with an InternalCompilerError, at the cost of increased memory use if luau-lsp.diagnostics.workspace is enabled.
  • Fixed string require resolution when the string had a secondary extension: Module.mod will be resolved as Module.mod.luau
  • Fixed resolution of directory aliases pointing to relative paths

1.22.1

15 Jul 19:31
Compare
Choose a tag to compare

[1.22.1] - 2023-07-15

Changed

  • Sync to upstream Luau 0.584
  • Removed need for typechecking for operations that don't require the type information (e.g., document link / color)

Fixed

  • Fixed diagnostics not showing when working in a new file with no workspace open
  • Fixed race condition where sometimes the server does not receive user configuration on initial load, falling back to defaults
  • luau-lsp.fflags.override will now be parsed when using CLI analyze settings. Note that the other fflags options are not supported in CLI analyze mode
  • Fixed semantic tokens segfault crash on some tables
  • Fixed duplicate definitions showing in the Go To Definition page
  • Fixed some syntax highlighting inconsistencies
  • Added a temporary fix to "RecursionLimitException" exceptions leaking to the public interface.

1.22.0

30 Jun 14:35
Compare
Choose a tag to compare

[1.22.0] - 2023-06-30

Added

  • Support requiring directories with init.luau (or init.lua) files inside of them. i.e. require("../Directory") resolves to ../Directory/init.luau.
  • The CLI analyze now accepts a parameter --settings=path/to/settings.json which takes in LSP-style settings to configure features such as require settings. Note: this is separate to .luaurc

Changed

  • Significant improvements to memory usage in large workspaces when workspace indexing or diagnostics are enabled
  • Sync to upstream Luau 0.582
  • Deprioritise file or directory aliases over exact paths in autocomplete, since typically aliases start with a prefix (e.g. @)
  • Signature Help is more intelligent about providing information about the best function overload which matches

Fixed

  • Fixed language features not working in new untitled files
  • Fixed incorrect color conversions in the color picker between RGB/HSV/Hex
  • Fixed autoimporting modules not respecting multiline requires
  • Fixed documentation for debug and utf8 library
  • Fixed synthetic typeof() showing up in signature help for builtin tables (e.g. function typeof(string).byte(...))
  • Fixed signature help highlighting for string library
  • Fixed rename symbol on a type definition type NAME = ...
  • Fixed file and directory aliases not being canonicalised to absolute paths causing "Follow Link" to fail when using relative alias paths
  • Don't show directory aliases after the first path segment has been typed
  • Fixed rename symbol not working when triggered at the end of a symbol
  • Fix indentation of autocomplete end when autocompleting inside of a function call

1.21.0

14 Jun 15:50
Compare
Choose a tag to compare

[1.21.0] - 2023-06-14

Deprecated

  • Deprecated luau-lsp.autocompleteEnd setting in favour of luau-lsp.completion.autocompleteEnd

Added

  • Added folding ranges for multi-line function definitions, so long parameter lists can be collapsed
  • Added notification when we detect definitions file changes
  • Added support for auto-requiring modules when autocompleteing a type reference, to allow indexed types: i.e. autocompleting Module in type Foo = Module.Bar
  • Added luau-lsp.require.directoryAliases to map require string prefixes to directories
  • Added tilde expansion to luau-lsp.require.fileAliases (and directoryAliases), mapping ~/foo.lua to a file in your home directory
  • End autocompletion will now work for defined anonymous functions inside of function calls

Changed

  • Sync to upstream Luau 0.580
  • Updated workspace indexing strategy to minimise memory usage. We no longer index ignored files (luau-lsp.ignoreGlobs),
    and there is a setting luau-lsp.index.maxFiles (default: 10,000) to configure the amount of files indexed before backing off.

Fixed

  • When editing in model projects, we now force relative requires, instead of incorrect absolute requires using a "ProjectRoot"

1.20.2

10 May 21:39
Compare
Choose a tag to compare

[1.20.2] - 2023-05-10

Fixed

  • Fixed internal error for LazyType unwrapping