Skip to content

Latest commit

 

History

History
2072 lines (1812 loc) · 72.5 KB

changelog.md

File metadata and controls

2072 lines (1812 loc) · 72.5 KB

changelog

Unreleased

  • NEW Reference workspace symbols in comments using [some text](lua://symbolName) syntax
  • FIX Don't do diagnostics when the workspace is not ready
  • FIX Autocompletion for enum values ​​is not available in some cases

3.9.1

2024-5-14

  • revert extension runtime

3.9.0

2024-5-11

  • NEW goto implementation
  • NEW narrow the function prototype based on the parameter type
    ---@overload fun(a: boolean): A
    ---@overload fun(a: number): B
    local function f(...) end
    
    local r1 = f(true) --> r1 is `A`
    local r2 = f(10) --> r2 is `B`

3.8.3

2024-4-23

  • FIX server may crash when the workspace is using a non-English path.

3.8.2

2024-4-23

  • This is a fake version only for the new version of VSCode, with a core of 3.8.0.

3.8.1

2024-4-23

  • This is a fake version only for the old version of VSCode, with a core of 3.7.4. Starting from the next minor version, the version requirement for VSCode will be raised to prevent users still using the old version of VSCode from updating to the new version and experiencing compatibility issues.

3.8.0

2024-4-22

  • NEW supports tuple type (@lizho)

    ---@type [string, number, boolean]
    local t
    
    local x = t[1] --> x is `string`
    local y = t[2] --> y is `number`
    local z = t[3] --> z is `boolean`
  • NEW generic pattern (@fesily)

    ---@generic T
    ---@param t Cat.`T`
    ---@return T
    local function f(t) end
    
    local t = f('Smile') --> t is `Cat.Smile`
  • NEW alias and enums supports attribute partial

    ---@alias Animal Cat
    
    ---@alias(partial) Animal Dog
    
    ---@type Animal
    local animal --> animal is `Cat|Dog` here
    ---@enum(key) ErrorCodes
    local codes1 = {
        OK = 0,
        ERROR = 1,
        FATAL = 2,
    }
    
    ---@enum(key, partial) ErrorCodes
    local codes2 = {
        WARN = 3,
        INFO = 4,
    }
    
    ---@type ErrorCodes
    local code
    
    code = 'ERROR' --> OK
    code = 'WARN'  --> OK
    
  • NEW plugin: add OnTransFormAst interface (@fesily)

  • NEW plugin: add OnNodeCompileFunctionParam interface (@fesily)

  • NEW plugin: add ResolveRequire interface (@Artem Dzhemesiuk)

  • NEW plugin: support multi plugins (@fesily)

    • setting: Lua.runtime.plugin can be string|string[]
    • setting: Lua.runtime.pluginArgs can be string[]|table<string, string>
  • NEW CLI: --doc add option --doc_out_path <PATH> (@Andreas Matthias)

  • NEW CLI: --doc_update, update an existing doc.json without using --doc again (@Andreas Matthias)

  • NEW CLI: --trust_all_plugins, this is potentially unsafe for normal use and meant for usage in CI environments only (@Paul Emmerich)

  • CHG CLI: --check will run plugins (@Daniel Farrell)

  • FIX diagnostic: discard-returns not works in some blocks (@clay-golem)

  • FIX rename in library files

3.7.4

2024-1-5

  • FIX rename to unicode with Lua.runtime.unicodeName = true

3.7.3

2023-11-14

  • FIX can not infer arg type in some cases.

3.7.2

2023-11-9

3.7.1

2023-11-7

3.7.0

2023-8-24

  • NEW support ---@type and --[[@as]] for return statement

  • NEW commandline parameter --force-accept-workspace: allowing the use of the root directory or home directory as the workspace

  • NEW diagnostic: inject-field

  • NEW ---@enum supports attribute key

    ---@enum (key) AnimalType
    local enum = {
      Cat = 1,
      Dog = 2,
    }
    
    ---@param animal userdata
    ---@param atp AnimalType
    ---@return boolean
    local function isAnimalType(animal, atp)
      return API.isAnimalType(animal, enum[atp])
    end
    
    assert(isAnimalType(animal, 'Cat'))
  • NEW ---@class supports attribute exact

    ---@class (exact) Point
    ---@field x number
    ---@field y number
    local m = {}
    m.x = 1 -- OK
    m.y = 2 -- OK
    m.z = 3 -- Warning
  • FIX wrong hover and signature for method with varargs and overloads

  • FIX #2155

  • FIX #2224

  • FIX #2252

  • FIX #2267

3.6.25

2023-7-26

3.6.24

2023-7-21

  • NEW diagnostic: missing-fields
  • FIX shake of codeLens
  • FIX #2145

3.6.23

2023-7-7

  • CHG signature: narrow by inputed literal

3.6.22

2023-6-14

3.6.21

2023-5-24

  • FIX disable ffi plugin

3.6.20

2023-5-23

  • NEW support connecting by socket with --socket=PORT
  • FIX #2113

3.6.19

2023-4-26

3.6.18

2023-3-23

3.6.17

2023-3-9

3.6.13

2023-3-2

  • FIX setting: Lua.addonManager.enable should be true by default
  • FIX failed to publish to Windows

3.6.12

2023-3-2

3.6.11

2023-2-13

3.6.10

2023-2-7

3.6.9

2023-2-2

3.6.8

2023-1-31

  • NEW command lua.exportDocument . VSCode will display this command in the right-click menu
  • CHG setting Lua.workspace.supportScheme has been removed. All schemes are supported if the language id is lua
  • FIX #1831
  • FIX #1838
  • FIX #1841
  • FIX #1851
  • FIX #1855
  • FIX #1857

3.6.7

2023-1-20

3.6.6

2023-1-17

3.6.5

2023-1-16

  • NEW support casting global variables
  • NEW code lens: this feature is disabled by default.
  • NEW settings:
    • Lua.codeLens.enable: Enable code lens.
  • CHG improve memory usage for large libraries
  • CHG definition: supports finding definitions for @class and @alias, since they may be defined multi times
  • CHG rename: supports @field
  • CHG improve patch for .luarc.json
  • CHG ---@meta [name]: once declared name, user can only require this file by declared name. meta file can not be required with name _
  • CHG remove telemetry
  • FIX #831
  • FIX #1729
  • FIX #1737
  • FIX #1751
  • FIX #1767
  • FIX #1796
  • FIX #1805
  • FIX #1808
  • FIX #1811
  • FIX #1824

3.6.4

2022-11-29

  • NEW modify require after renaming files
  • FIX circulation reference in process analysis
    ---@type number
    local x
    
    ---@type number
    local y
    
    x = y
    
    y = x --> Can not infer `y` before
  • FIX #1698
  • FIX #1704
  • FIX #1717

3.6.3

2022-11-14

3.6.2

2022-11-10

3.6.1

2022-11-8

  • FIX wrong diagnostics for pcall and xpcall
  • FIX duplicate fields in table hover
  • FIX description disapeared for overloaded function
  • FIX #1675

3.6.0

2022-11-8

  • NEW supports private/protected/public/package
    • mark in doc.field
      ---@class unit
      ---@field private uuid integer
    • mark with ---@private, ---@protected, ---@public and ---@package
      ---@class unit
      local mt = {}
      
      ---@private
      function mt:init()
      end
      
      ---@protected
      function mt:update()
      end
    • mark by settings Lua.doc.privateName, Lua.doc.protectedName and Lua.doc.packageName
      ---@class unit
      ---@field _uuid integer --> treat as private when `Lua.doc.privateName` has `"_*"`
  • NEW settings:
    • Lua.misc.executablePath: #1557 specify the executable path in VSCode
    • Lua.diagnostics.workspaceEvent: #1626 set the time to trigger workspace diagnostics.
    • Lua.doc.privateName: treat matched fields as private
    • Lua.doc.protectedName: treat matched fields as protected
    • Lua.doc.packageName: treat matched fields as package
  • NEW CLI --doc [path] to make docs. server will generate doc.json and doc.md in LOGPATH. doc.md is generated by doc.json by example code script/cli/doc2md.lua.
  • CHG #1558 detect multi libraries
  • CHG #1458 semantic-tokens: global variable is setted to variable.global
    // color global variables to red
    "editor.semanticTokenColorCustomizations": {
        "rules": {
            "variable.global": "#ff0000"
        }
    }
  • CHG #1177 re-support for symlinks, users need to maintain the correctness of symlinks themselves
  • CHG #1561 infer definitions and types across chain expression
    ---@class myClass
    local myClass = {}
    
    myClass.a.b.c.e.f.g = 1
    
    ---@type myClass
    local class
    
    print(class.a.b.c.e.f.g) --> inferred as integer
  • CHG #1582 the following diagnostics consider overload
    • missing-return
    • missing-return-value
    • redundant-return-value
    • return-type-mismatch
  • CHG workspace-symbol: supports chain fields based on global variables and types. try io.open or iolib.open
  • CHG #1641 if a function only has varargs and has ---@overload, the varargs will be ignored
  • CHG #1575 search definitions by first argument of setmetatable
    ---@class Object
    local obj = setmetatable({
      initValue = 1,
    }, mt)
    
    print(obj.initValue) --> `obj.initValue` is integer
  • CHG #1153 infer type by generic parameters or returns of function
    ---@generic T
    ---@param f fun(x: T)
    ---@return T[]
    local function x(f) end
    
    ---@type fun(x: integer)
    local cb
    
    local arr = x(cb) --> `arr` is inferred as `integer[]`
  • CHG #1201 infer parameter type by expected returned function of parent function
    ---@return fun(x: integer)
    local function f()
        return function (x) --> `x` is inferred as `integer`
        end
    end
  • CHG #1332 infer parameter type when function in table
    ---@class A
    ---@field f fun(x: string)
    
    ---@type A
    local t = {
        f = function (x) end --> `x` is inferred as `string`
    }
  • CHG find reference: respect includeDeclaration (although I don't know how to turn off this option in VSCode)
  • CHG #1344 improve ---@see
  • CHG #1484 setting runtime.special supports fields
    {
      "runtime.special": {
        "sandbox.require": "require"
      }
    }
  • CHG #1533 supports completion with table field of function
  • CHG #1457 infer parameter type by function type
    ---@type fun(x: number)
    local function f(x) --> `x` is inferred as `number`
    end
  • CHG #1663 check parameter types of generic extends
    ---@generic T: string | boolean
    ---@param x T
    ---@return T
    local function f(x)
        return x
    end
    
    local x = f(1) --> Warning: Cannot assign `integer` to parameter `<T:boolean|string>`.
  • CHG #1434 type check: check the fields in table:
    ---@type table<string, string>
    local x
    
    ---@type table<string, number>
    local y
    
    x = y --> Warning: Cannot assign `<string, number>` to `<string, string>`
  • CHG #1374 type check: supports array part in literal table
    ---@type boolean[]
    local t = { 1, 2, 3 } --> Warning: Cannot assign `integer` to `boolean`
  • CHG ---@enum supports runtime values
  • FIX #1479
  • FIX #1480
  • FIX #1567
  • FIX #1593
  • FIX #1595
  • FIX #1599
  • FIX #1606
  • FIX #1608
  • FIX #1637
  • FIX #1640
  • FIX #1642
  • FIX #1662
  • FIX #1672

3.5.6

2022-9-16

3.5.5

2022-9-7

3.5.4

2022-9-6

  • NEW type-formatting: fix wrong indentation of VSCode
  • CHG document-symbol: redesigned to better support for Sticky Scroll feature of VSCode
  • FIX diagnostics.workspaceDelay can not prevent first workspace diagnostic
  • FIX #1476
  • FIX #1490
  • FIX #1493
  • FIX #1499
  • FIX #1526

3.5.3

2022-8-13

3.5.2

2022-8-1

3.5.1

2022-7-26

3.5.0

2022-7-19

  • NEW LuaDoc: ---@operator:
    ---@class fspath
    ---@operator div(string|fspath): fspath
    
    ---@type fspath
    local root
    
    local fileName = root / 'script' / 'main.lua' -- `fileName` is `fspath` here
  • NEW LuaDoc: ---@source:
    -- Also supports absolute path or relative path (based on current file path)
    ---@source file:///xxx.c:50:20
    XXX = 1 -- when finding definitions of `XXX`, returns `file:///xxx.c:50:20` instead here.
  • NEW LuaDoc: ---@enum:
    ---@enum animal
    Animal = {
      Cat = 1,
      Dog = 2,
    }
    
    ---@param x animal
    local function f(x) end
    
    f() -- suggests `Animal.Cat`, `Animal.Dog`, `1`, `2` as the first parameter
  • NEW diagnostics:
    • unknown-operator
    • unreachable-code
  • NEW settings:
    • diagnostics.unusedLocalExclude
  • NEW VSCode: add support for EmmyLuaUnity
  • CHG support multi-type:
    ---@type number, _, boolean
    local a, b, c -- `a` is `number`, `b` is `unknown`, `c` is `boolean`
  • CHG treat _ENV = XXX as local _ENV = XXX
    • _ENV = nil: disable all globals
    • _ENV = {}: allow all globals
    • _ENV = {} ---@type mathlib: only allow globals in mathlib
  • CHG hover: dose not show unknown ---@XXX as description
  • CHG contravariance is allowed at the class declaration
    ---@class BaseClass
    local BaseClass
    
    ---@class MyClass: BaseClass
    local MyClass = BaseClass -- OK!
  • CHG hover: supports path in link
    --![](image.png) --> will convert to `--![](file:///xxxx/image.png)`
    local x
  • CHG signature: only show signatures matching the entered parameters
  • FIX #880
  • FIX #1284
  • FIX #1292
  • FIX #1294
  • FIX #1306
  • FIX #1311
  • FIX #1317
  • FIX #1320
  • FIX #1330
  • FIX #1345
  • FIX #1346
  • FIX #1348

3.4.2

2022-7-6

  • CHG diagnostic: type-check ignores nil in getfield
  • CHG diagnostic: ---@diagnostic disable: <ERR_NAME> can suppress syntax errors
  • CHG completion: completion.callSnippet no longer generate parameter types
  • CHG hover: show ---@type {x: number, y: number} as detail instead of table
  • CHG dose not infer as nil by t.field = nil
  • FIX #1278
  • FIX #1288

3.4.1

2022-7-5

  • NEW settings:
    • type.weakNilCheck
  • CHG allow type contravariance for setmetatable when initializing a class
    ---@class A
    local a = {}
    
    ---@class B: A
    local b = setmetatable({}, { __index = a }) -- OK!
  • FIX #1256
  • FIX #1257
  • FIX #1267
  • FIX #1269
  • FIX #1273
  • FIX #1275
  • FIX #1279

3.4.0

2022-6-29

  • NEW diagnostics:
    • cast-local-type
    • assign-type-mismatch
    • param-type-mismatch
    • unknown-cast-variable
    • cast-type-mismatch
    • missing-return-value
    • redundant-return-value
    • missing-return
    • return-type-mismatch
  • NEW settings:
    • diagnostics.groupSeverity
    • diagnostics.groupFileStatus
    • type.castNumberToInteger
    • type.weakUnionCheck
    • hint.semicolon
  • CHG infer nil as redundant return value
    local function f() end
    local x = f() -- `x` is `nil` instead of `unknown`
  • CHG infer called function by params num
    ---@overload fun(x: number, y: number):string
    ---@overload fun(x: number):number
    ---@return boolean
    local function f() end
    
    local n1 = f()     -- `n1` is `boolean`
    local n2 = f(0)    -- `n2` is `number`
    local n3 = f(0, 0) -- `n3` is `string`
  • CHG semicolons and parentheses can be used in DocTable
    ---@type { (x: number); (y: boolean) }
  • CHG return names and parentheses can be used in DocFunction
    ---@type fun():(x: number, y: number, ...: number)
  • CHG supports ---@return boolean ...
  • CHG improve experience for diagnostics and semantic-tokens
  • FIX diagnostics flash when opening a file
  • FIX sometimes workspace diagnostics are not triggered
  • FIX #1228
  • FIX #1229
  • FIX #1242
  • FIX #1243
  • FIX #1249

3.3.1

2022-6-17

3.3.0

2022-6-15

  • NEW LuaDoc supports `CODE`
    ---@type `CONST.X` | `CONST.Y`
    local x
    
    if x == -- suggest `CONST.X` and `CONST.Y` here
  • CHG infer type by error
    ---@type integer|nil
    local n
    
    if not n then
        error('n is nil')
    end
    
    print(n) -- `n` is `integer` here
  • CHG infer type by t and t.x
    ---@type table|nil
    local t
    
    local s = t and t.x or 1 -- `t` in `t.x` is `table`
  • CHG infer type by type(x)
    local x
    
    if type(x) == 'string' then
        print(x) -- `x` is `string` here
    end
    
    local tp = type(x)
    
    if tp == 'boolean' then
        print(x) -- `x` is `boolean` here
    end
  • CHG infer type by >/</>=/<=
  • FIX with clients that support LSP 3.17 (VSCode), workspace diagnostics are triggered every time when opening a file.
  • FIX #1204
  • FIX #1208

3.2.5

2022-6-9

  • NEW provide config docs in LUA_LANGUAGE_SERVER/doc/
  • FIX #1148
  • FIX #1149
  • FIX #1192

3.2.4

2022-5-25

  • NEW settings:
    • workspace.supportScheme: ["file", "untitled", "git"]
    • diagnostics.disableScheme: ["git"]
  • NEW folding: support folding ---@alias
  • CHG if rootUri or workspaceFolder is set to ROOT or HOME, this extension will refuse to load these directories and show an error message.
  • CHG show warning message when scanning more than 100,000 files.
  • CHG upgrade LSP to 3.17
  • FIX hover: can not union table with other basic types
  • FIX #1125
  • FIX #1131
  • FIX #1134
  • FIX #1141
  • FIX #1144
  • FIX #1150
  • FIX #1155

3.2.3

2022-5-16

  • CHG parse .luarc.json as jsonc. In order to please the editor, it also supports .luarc.jsonc as the file name.
  • CHG dose not load files in symbol links
  • FIX memory leak with symbol links
  • FIX diagnostic: send empty results to every file after startup
  • FIX #1103
  • FIX #1107

3.2.2

2022-4-26

  • FIX diagnostic: unused-function cannot handle recursion correctly
  • FIX #1092
  • FIX #1093
  • FIX runtime errors reported by telemetry, see #1091

3.2.1

2022-4-25

  • FIX broken in VSCode

3.2.0

2022-4-25

  • NEW supports infer of callback parameter
    ---@type string[]
    local t
    
    table.sort(t, function (a, b)
        -- `a` and `b` is `string` here
    end)
  • NEW using ---@overload as class constructor
    ---@class Class
    ---@overload fun():Class
    local mt
    
    local x = mt() --> x is `Class` here
  • NEW add --[[@as type]]
    local x = true
    local y = x--[[@as integer]] -- y is `integer` here
  • NEW add ---@cast
    • ---@cast localname type
    • ---@cast localname +type
    • ---@cast localname -type
    • ---@cast localname +?
    • ---@cast localname -?
  • NEW generic: resolve T[] by table<integer, type> or ---@field [integer] type
  • NEW resolve class[1] by ---@field [integer] type
  • NEW diagnostic: missing-parameter
  • NEW diagnostic: need-check-nil
  • CHG diagnostic: no longer mark redundant-parameter as Unnecessary
  • FIX diagnostic: unused-function does not recognize recursion
  • FIX #1051
  • FIX #1072
  • FIX #1077
  • FIX #1088
  • FIX runtime errors

3.1.0

2022-4-17

  • NEW support find definition in method
  • CHG hint: move to LSP. Its font is now controlled by the client.
  • CHG hover: split local into local / parameter / upvalue / self.
  • CHG hover: added parentheses to some words, such as global / field / class.
  • FIX definition of table<k, v>
  • FIX #994
  • FIX #1057
  • FIX runtime errors reported by telemetry, see #1058

3.0.2

2022-4-15

  • FIX table<string, boolean>[string] -> boolean
  • FIX goto type definition
  • FIX #1050

3.0.1

2022-4-11

3.0.0

2022-4-10

  • CHG break changes
  • CHG diagnostic:
    • type-check: removed for now
    • no-implicit-any: renamed to no-unknown
  • CHG formatter: no longer need --preview
  • CHG LuaDoc: supports ---@type (string|integer)[]
  • FIX semantic: color of function
  • FIX #1027
  • FIX #1028

2.6.8

2022-4-9

  • CHG completion: call snippet shown as Function instead of Snippet when Lua.completion.callSnippet is Replace
  • FIX #976
  • FIX #995
  • FIX #1004
  • FIX #1008
  • FIX #1009
  • FIX #1011
  • FIX #1014
  • FIX #1016
  • FIX #1017
  • FIX runtime errors reported by telemetry

2.6.7

2022-3-9

  • NEW diagnosis report, read more
  • CHG VSCode: 1.65 has built in new Lua syntax files, so this extension no longer provides syntax files, which means you can install other syntax extensions in the marketplace. If you have any suggestions or issues, please open issues here.
  • CHG telemetry: the prompt will only appear in VSCode to avoid repeated prompts in other platforms due to the inability to automatically modify the settings.
  • FIX #965
  • FIX #975

2.6.6

2022-2-21

  • NEW formatter preview, use --preview to enable this feature, read more
  • FIX #958
  • FIX runtime errors

2.6.5

2022-2-17

  • FIX telemetry is not disabled by default (since 2.6.0)
  • FIX #934
  • FIX #952

2.6.4

2022-2-9

2.6.3

2022-1-25

  • FIX new files are not loaded correctly
  • FIX #923
  • FIX #926

2.6.2

2022-1-25

2.6.1

2022-1-24

  • CHG default values of settings:
    • Lua.diagnostics.workspaceDelay: 0 sec -> 3 sec
    • Lua.workspace.maxPreload: 1000 -> 5000
    • Lua.workspace.preloadFileSize: 100 KB -> 500 KB
  • CHG improve performance
  • FIX modify luarc failed
  • FIX library files not recognized correctly
  • FIX #903
  • FIX #906
  • FIX #920

2.6.0

2022-1-13

  • NEW supports multi-workspace in server side, for developers of language clients, please read here to learn more.
  • NEW setting:
    • Lua.hint.arrayIndex
    • Lua.semantic.enable
    • Lua.semantic.variable
    • Lua.semantic.annotation
    • Lua.semantic.keyword
  • CHG completion: improve response speed
  • CHG completion: can be triggered in LuaDoc and strings
  • CHG diagnostic: smoother
  • CHG settings Lua.color.mode removed
  • FIX #876
  • FIX #879
  • FIX #884
  • FIX #885
  • FIX #886
  • FIX #902

2.5.6

2021-12-27

  • CHG diagnostic: now syntax errors in LuaDoc are shown as Warning
  • FIX #863
  • FIX return type of math.floor
  • FIX runtime errors

2.5.5

2021-12-16

  • FIX dose not work in VSCode

2.5.4

2021-12-16

  • FIX #847
  • FIX #848
  • FIX completion: incorrect cache
  • FIX hover: always view string

2.5.3

2021-12-6

2.5.2

2021-12-2

2.5.1

2021-11-29

  • FIX incorrect syntax error

2.5.0

2021-11-29

  • NEW settings:
    • Lua.runtime.pathStrict: not check subdirectories when using runtime.path
    • Lua.hint.await: display await when calling a function marked as async
    • Lua.completion.postfix: the symbol that triggers postfix, default is @
  • NEW add supports for lovr
  • NEW file encoding supports utf16le and utf16be
  • NEW full IntelliSense supports for literal tables, see #720 and #727
  • NEW LuaDoc annotations:
    • ---@async: mark a function as async
    • ---@nodiscard: the return value of the marking function cannot be discarded
  • NEW diagnostics:
    • await-in-sync: check whether calls async function in sync function. disabled by default.
    • not-yieldable: check whether the function supports async functions as parameters. disabled by default.
    • discard-returns: check whether the return value is discarded.
  • NEW locale pt-br, thanks Jeferson Ferreira
  • NEW supports utf-8-offsets
  • NEW supports quickfix for .luarc.json
  • NEW completion postifx: @function, @method, @pcall, @xpcall, @insert, @remove, @concat, ++, ++?
  • CHG LuaDoc:
    • ---@class can be re-declared
    • supports unicode
    • supports ---@param ... number, equivalent to ---@vararg number
    • supports fun(...: string)
    • supports fun(x, y, ...), equivalent to fun(x: any, y: any, ...: any)
  • CHG settings from --configpath, .luarc.json, client no longer prevent subsequent settings, instead they are merged in order
  • CHG no longer asks to trust plugin in VSCode, because VSCode already provides the workspace trust feature
  • CHG skip huge files (>= 10 MB)
  • CHG after using Lua.runtime.nonstandardSymbol to treat // as a comment, // is no longer parsed as an operator

2.4.11

2021-11-25

2.4.10

2021-11-23

2.4.9

2021-11-18

  • CHG for performance reasons, some of the features that are not cost-effective in IntelliSense have been disabled by default, and you can re-enable them through the following settings:

    • Lua.IntelliSense.traceLocalSet
    • Lua.IntelliSense.traceReturn
    • Lua.IntelliSense.traceBeSetted
    • Lua.IntelliSense.traceFieldInject

    read more

2.4.8

2021-11-15

  • FIX incorrect IntelliSense in specific situations
  • FIX #777
  • FIX #778
  • FIX #779
  • FIX #780

2.4.7

2021-10-27

2.4.6

2021-10-26

2.4.5

2021-10-18

  • FIX accidentally load lua files from user workspace

2.4.4

2021-10-15

  • CHG improve .luarc.json
  • FIX #722

2.4.3

2021-10-13

2.4.2

2021-10-8

2.4.1

2021-10-2

  • FIX broken with single file
  • FIX #698
  • FIX #699

2.4.0

2021-10-1

  • NEW loading settings from .luarc.json
  • NEW settings:
    • Lua.diagnostics.libraryFiles
    • Lua.diagnostics.ignoredFiles
    • Lua.completion.showWord
    • Lua.completion.requireSeparator
  • NEW diagnostics:
    • different-requires
  • NEW ---@CustomClass<string, number>
  • NEW supports $/cancelRequest
  • NEW EventEmitter
    --- @class Emit
    --- @field on fun(eventName: string, cb: function)
    --- @field on fun(eventName: '"died"', cb: fun(i: integer))
    --- @field on fun(eventName: '"won"', cb: fun(s: string))
    local emit = {}
    
    emit:on(--[[support autocomplete fr "died" and "won"]])
    
    emit:on("died", function (i)
        -- should be i: integer
    end)
    
    emit:on('won', function (s)
        -- should be s: string
    end)
  • NEW ---@module 'moduleName'
    ---@module 'mylib'
    local lib -- the same as `local lib = require 'mylib'`
  • NEW add supports of skynet
  • CHG hover: improve showing multi defines
  • CHG hover: improve showing multi comments at enums
  • CHG hover: shows method
  • CHG hint: Lua.hint.paramName now supports Disable, Literal and All
  • CHG only search first file by require
  • CHG no longer infer by usage
  • CHG no longer ignore file names case in Windows
  • CHG watching library changes
  • CHG completion: improve misspelling results
  • CHG completion: Lua.completion.displayContext default to 0
  • CHG completion: autoRequire has better inserting position
  • CHG diagnostics:
    • redundant-parameter default severity to Warning
    • redundant-value default severity to Warning
  • CHG infer: more strict of calculation results
  • CHG #663
  • FIX runtime errors
  • FIX hint: may show param-2 as self
  • FIX semantic: may fail when scrolling
  • FIX #647
  • FIX #660
  • FIX #673

2.3.7

2021-8-17

  • CHG improve performance
  • FIX #244

2.3.6

2021-8-9

  • FIX completion: can not find global fields
  • FIX globals and class may lost

2.3.5

2021-8-9

  • CHG improve memory usage
  • CHG completion: call snip triggers signature (VSCode only)
  • FIX completion: may not find results

2.3.4

2021-8-6

  • CHG improve performance
  • FIX #625

2.3.3

2021-7-26

2.3.2

2021-7-21

  • NEW LuaDoc: supports ['string'] as field:
    ---@class keyboard
    ---@field ['!'] number
    ---@field ['?'] number
    ---@field ['#'] number
  • NEW add supports of love2d
  • FIX gitignore pattern \ broken initialization
  • FIX runtime errors

2.3.1

2021-7-19

  • NEW setting Lua.workspace.userThirdParty, add private user third-parth by this setting
  • CHG path in config supports ~/xxxx
  • FIX autoRequire inserted incorrect code
  • FIX autoRequire may provide dumplicated options
  • FIX #606
  • FIX #607

2.3.0

2021-7-16

  • NEW VSCode: click the status bar icon to operate:
    • run workspace diagnostics
  • NEW LuaDoc: supports [1] as field:
    ---@class position
    ---@field [1] number
    ---@field [2] number
    ---@field [3] number
  • NEW hover: view array local array = {'a', 'b', 'c'}:
    local array: {
        [1]: string = "a",
        [2]: string = "b",
        [3]: string = "c",
    }
  • NEW completion: supports enums in fun()
    ---@type fun(x: "'aaa'"|"'bbb'")
    local f
    
    f(--[[show `'aaa'` and `'bbb'` here]])
  • FIX loading workspace may hang
  • FIX debug.getuservalue and debug.setuservalue should not exist in Lua 5.1
  • FIX infer of ---@type class[][]
  • FIX infer of ---@type {}[]
  • FIX completion: displaying @fenv in Lua 5.1
  • FIX completion: incorrect at end of line
  • FIX when a file is renamed, the file will still be loaded even if the new file name has been set to ignore
  • FIX #596
  • FIX #597
  • FIX #598
  • FIX #601

2.2.3

2021-7-9

  • CHG improve auto require
  • CHG will not sleep anymore
  • FIX incorrect doc: debug.getlocal
  • FIX completion: incorrect callback
  • FIX #592

2.2.2

2021-7-9

  • FIX incorrect syntax color
  • FIX incorrect type infer

2.2.1

2021-7-8

  • FIX change setting may failed

2.2.0

2021-7-8

  • NEW detect and apply third-party libraries, including:
    • OpenResty
    • Cocos4.0
    • Jass
  • NEW LuaDoc: supports literal table:
    ---@generic T
    ---@param x T
    ---@return { x: number, y: T, z?: boolean}
    local function f(x) end
    
    local t = f('str')
    -- hovering "t" shows:
    local t: {
        x: number,
        y: string,
        z?: boolean,
    }
  • CHG improve changing config from server side
  • CHG improve hover color
  • CHG improve performance
  • CHG telemetry: sends version of this extension
  • FIX supports for file with LF
  • FIX may infer a custom class as a string

2.1.0

2021-7-2

  • NEW supports local config file, using --configpath="config.json", learn more here
  • NEW goto type definition
  • NEW infer type by callback param:
    ---@param callback fun(value: string)
    local function work(callback)
    end
    
    work(function (value)
        -- value is string here
    end)
  • NEW optional field ---@field name? type
  • CHG #549
  • CHG diagnostics: always ignore the ignored files even if they are opened
  • FIX completion: type() == may does not work

2.0.5

2021-7-1

  • NEW hover and completion reports initialization progress
  • CHG class field consider implicit definition
    ---@class Class
    local mt = {}
    
    function mt:init()
        self.xxx = 1
    end
    
    function mt:func()
        print(self.xxx) -- self.xxx is defined
    end
  • CHG improve performance
  • FIX #580

2.0.4

2021-6-25

2.0.3

2021-6-24

  • CHG improve memory usage
  • FIX some dialog boxes block the initialization process
  • FIX diagnostics undefined-field: blocks main thread
  • FIX #565

2.0.2

2021-6-23

  • NEW supports literal table in pairs
    local t = { a = 1, b = 2, c = 3 }
    for k, v in pairs(t) do
        -- `k` is string and `v` is integer here
    end
  • CHG view local f ---@type fun(x:number):boolean
    ---before
    function f(x: number)
      -> boolean
    ---after
    local f: fun(x: number): boolean
  • FIX #558
  • FIX #567
  • FIX #568
  • FIX #570
  • FIX #571

2.0.1

2021-6-21

2.0.0

2021-6-21

  • NEW implement
  • CHG diagnostics undefined-field, deprecated: default by Opened instead of None
  • CHG setting Lua.runtime.plugin: default by "" instead of ".vscode/lua/plugin.lua" (for security)
  • CHG setting Lua.intelliSense.searchDepth: removed
  • CHG setting Lua.misc.parameters: string array instead of string
  • CHG setting Lua.develop.enable, Lua.develop.debuggerPort, Lua.develop.debuggerWait: removed, use Lua.misc.parameters instead
  • FIX #441
  • FIX #493
  • FIX #531
  • FIX #542
  • FIX #543
  • FIX #553
  • FIX #562
  • FIX #563

1.21.3

2021-6-17

  • NEW supports untrusted workspaces
  • FIX performance issues, thanks to folke

1.21.2

2021-5-18

1.21.1

2021-5-8

1.21.0

2021-5-7

  • NEW setting: completion.showParams
  • NEW LuaDoc: supports multiline comments
  • NEW LuaDoc: tail comments support lua string

1.20.5

2021-4-30

  • NEW setting: completion.autoRequire
  • NEW setting: hover.enumsLimit
  • CHG folding: supports -- #region
  • FIX completion: details may be suspended
  • FIX #522
  • FIX #523

1.20.4

2021-4-13

1.20.3

2021-4-6

1.20.2

2021-4-2

  • CHG LuaDoc: supports ---@param self TYPE
  • CHG completion: does not show suggests after \n, { and ,, unless your setting editor.acceptSuggestionOnEnter is off
  • FIX #482

1.20.1

2021-3-27

  • FIX telemetry window blocks initializing
  • FIX #468

1.20.0

2021-3-27

1.19.1

2021-3-22

  • CHG improve performance
  • FIX #457
  • FIX #458

1.19.0

2021-3-18

  • NEW VSCode: new setting Lua.misc.parameters
  • NEW new setting Lua.runtime.builtin, used to disable some built-in libraries
  • NEW quick fix: disable diagnostic in line/file
  • NEW setting: Lua.runtime.path supports absolute path
  • NEW completion: field in table
---@class A
---@field x number
---@field y number
---@field z number

---@type A
local t = {
    -- provide `x`, `y` and `z` here
}
  • NEW LuaDoc: supports multi-line comment before resume
---this is
---a multi line
---comment
---@alias XXXX
---comment 1
---comment 1
---| '1'
---comment 2
---comment 2
---| '2'

---@param x XXXX
local function f(x)
end

f( -- view comments of `1` and `2` in completion
  • CHG intelli-scense: search from generic param to return
  • CHG intelli-scense: search across vararg
  • CHG text-document-synchronization: refactored
  • CHG diagnostic: improve newline-call
  • CHG completion: improve then .. end
  • CHG improve initialization speed
  • CHG improve performance
  • FIX missed syntax error function m['x']() end
  • FIX #452

1.18.1

2021-3-10

  • CHG semantic-tokens: improve colors of const and close
  • CHG type-formating: improve execution conditions
  • FIX #444

1.18.0

2021-3-9

  • NEW LuaDoc: supports ---@diagnostic disable
  • NEW code-action: convert JSON to Lua
  • NEW completion: provide then .. end snippet
  • NEW type-formating:
    -- press `enter` at $
    local function f() $ end
    -- formating result:
    local function f()
        $
    end
    
    -- as well as
    do $ end
    -- formating result
    do
        $
    end
  • CHG Windows: dose not provide ucrt any more
  • CHG Lua.workspace.library: use path[] instead of <path, true>
  • FIX missed syntax error local a <const>= 1
  • FIX workspace: preload blocked when hitting Lua.workspace.maxPreload
  • FIX #443
  • FIX #445

1.17.4

2021-3-4

1.17.3

2021-3-3

  • CHG intelli-scense: treat V[] as table<integer, V> in pairs
  • FIX completion: detail disappears during continuous input
  • FIX #435
  • FIX #436
  • FIX #437

1.17.2

2021-3-2

  • FIX running in Windows

1.17.1

2021-3-1

  • CHG intelli-scense: improve infer across table<K, V> and V[].
  • CHG intelli-scense: improve infer across pairs and ipairs
  • FIX hover: shows nothing when hovering unknown function
  • FIX #398
  • FIX #421
  • FIX #422

1.17.0

2021-2-24

  • NEW diagnostic: duplicate-set-field
  • NEW diagnostic: no-implicit-any, disabled by default
  • CHG completion: improve field and table
  • CHG improve infer cross ipairs
  • CHG cache globals when loading
  • CHG completion: remove trigger character \n for now, see #401
  • FIX diagnositc: may open file with wrong uri case
  • FIX #406

1.16.1

2021-2-22

  • FIX signature: parameters may be misplaced
  • FIX completion: interface in nested table
  • FIX completion: interface not show after ,
  • FIX #400
  • FIX #402
  • FIX #403
  • FIX #404
  • FIX runtime errors

1.16.0

2021-2-20

  • NEW file encoding supports ansi
  • NEW completion: supports interface, see #384
  • NEW LuaDoc: supports multiple class inheritance: ---@class Food: Burger, Pizza, Pie, Pasta
  • CHG rename table* to tablelib
  • CHG LuaDoc: revert compatible with --@, see #392
  • CHG improve performance
  • FIX missed syntax error f() = 1
  • FIX missed global bit in LuaJIT
  • FIX completion: may insert error text when continuous inputing
  • FIX completion: may insert error text after resolve
  • FIX #349
  • FIX #396

1.15.1

2021-2-18

  • CHG diagnostic: unused-local excludes doc.param
  • CHG definition: excludes values, see #391
  • FIX not works on Linux and macOS

1.15.0

2021-2-9

  • NEW LUNAR YEAR, BE HAPPY!
  • CHG diagnostic: when there are too many errors, the main errors will be displayed first
  • CHG main thread no longer loop sleeps, see #329 #386
  • CHG improve performance

1.14.3

2021-2-8

1.14.2

2021-2-4

1.14.1

2021-2-2

1.14.0

2021-2-2

  • NEW VSCode hint
  • NEW flush cache after 5 min
  • NEW VSCode help semantic color with market theme
  • CHG create/delete/rename files no longer reload workspace
  • CHG LuaDoc: compatible with --@
  • FIX VSCode settings
  • FIX #368
  • FIX #371

1.13.0

2021-1-28

  • NEW VSCode status bar
  • NEW VSCode options in some window
  • CHG performance optimization
  • FIX endless loop

1.12.2

2021-1-27

  • CHG performance optimization
  • FIX modifying the code before loading finish makes confusion
  • FIX signature: not works

1.12.1

2021-1-27

  • FIX endless loop

1.12.0

2021-1-26

  • NEW progress
  • NEW #340: supports ---@type table<string, number>
  • FIX #355
  • FIX #359
  • FIX #361

1.11.2

2021-1-7

  • FIX #345: not works with unexpect args
  • FIX #346: dont modify the cache

1.11.1

2021-1-5

  • CHG performance optimization

1.11.0

2021-1-5

  • NEW Lua.runtime.plugin
  • NEW intelli-scense: improved m.f = function (self) end from self to m
  • CHG performance optimization
  • CHG completion: improve performance of workspace words
  • FIX hover: tail comments may be cutted
  • FIX runtime errors

1.10.0

2021-1-4

  • NEW workspace: supports .dll(.so) in require
  • NEW folding: ---@class, --#region and docs of function
  • NEW diagnostic: count-down-loop
  • CHG supports ~ in command line
  • CHG completion: improve workspace words
  • CHG completion: show words in string
  • CHG completion: split for .. in to for .. ipairs and for ..pairs
  • CHG diagnostic: unused-function checks recursive
  • FIX #339

1.9.0

2020-12-31

  • NEW YEAR! Peace and love!
  • NEW specify path of log and meta by --logpath=xxx and --metapath=XXX in command line
  • NEW completion: worksapce word
  • NEW completion: show words in comment
  • NEW completion: generate function documentation
  • CHG got arg after script name: lua-language-server.exe main.lua --logpath=D:\log --metapath=D:\meta --develop=false
  • FIX runtime errors

1.8.2

2020-12-29

  • CHG performance optimization

1.8.1

2020-12-24

  • FIX telemetry: connect failed caused not working

1.8.0

2020-12-23

  • NEW runtime: support nonstandard symbol
  • NEW diagnostic: close-non-object
  • FIX #318

1.7.4

2020-12-20

  • FIX workspace: preload may failed

1.7.3

2020-12-20

  • FIX luadoc: typo of package.config
  • FIX #310

1.7.2

2020-12-17

  • CHG completion: use custom tabsize
  • FIX #307
  • FIX a lot of runtime errors

1.7.1

2020-12-16

  • NEW setting: diagnostics.neededFileStatus
  • FIX scan workspace may fails
  • FIX quickfix: newline-call failed
  • FIX a lot of other runtime errors

1.7.0

2020-12-16

  • NEW diagnostic: undefined-field
  • NEW telemetry:
  • CHG diagnostic: unused-function ignores function with <close>
  • CHG semantic: not cover local call
  • CHG language client: update to 7.0.0
  • FIX semantic: tokens may not be updated correctly
  • FIX completion: require path broken
  • FIX hover: document uri
  • FIX #291
  • FIX #294

1.6.0

2020-12-14

  • NEW completion: auto require local modules
  • NEW completion: support delegate
  • NEW hover: show function by keyword function
  • NEW code action: swap params
  • CHG standalone: unbind the relative path between binaries and scripts
  • CHG hover: LuaDoc also catchs -- (no need ---)
  • CHG rename: support doc
  • CHG completion: keyword considers expression
  • FIX #297

1.5.0

2020-12-5

  • NEW setting runtime.unicodeName
  • NEW fully supports ---@generic T
  • FIX #274
  • FIX #276
  • FIX #279
  • FIX #280

1.4.0

2020-12-3

  • NEW setting hover.previewFields: limit how many fields are shown in table hover
  • NEW fully supports ---@type Object[]
  • NEW supports ---@see
  • NEW diagnostic unbalanced-assignments
  • CHG resolves infer of string|table
  • CHG unused-local ignores local with ---@class
  • CHG locale file format changes to lua

1.3.0

2020-12-1

  • NEW provides change logs, I think it's good idea for people knowing what's new (bugs)
  • NEW meta files of LuaJIT
  • NEW support completion of type(o) == ?
  • CHG now I think it's a bad idea as it took me nearly an hour to complete the logs started from version 1.0.0
  • FIX closing ignored or library file dose not clean diagnostics
  • FIX searching of t.f1 when t.f1 = t.f2
  • FIX missing signature help of global function

1.2.1

2020-11-27

  • FIX syntaxes tokens: #272

1.2.0

2020-11-27

  • NEW hover shows comments from ---@param and ---@return: #135
  • NEW support LuaDoc as tail comment
  • FIX ---@class inheritance
  • FIX missed syntaxes token: punctuation.definition.parameters.finish.lua

1.1.4

2020-11-25

  • FIX wiered completion suggests for require paths in Linux and macOS: #269

1.1.3

2020-11-25

  • FIX extension not works in Ubuntu: #268

1.1.2

2020-11-24

  • NEW auto completion finds globals from Lua.diagnostics.globals
  • NEW support tail LuaDoc
  • CHG no more Lua.intelliScense.fastGlobal, now globals always fast and accurate
  • CHG LuaDoc supports --- @
  • CHG find reference uses extra Lua.intelliSense.searchDepth
  • CHG diagnostics are limited by 100 in each file
  • FIX library files are under limit of Lua.workspace.maxPreload: #266

1.1.1

2020-11-23

  • NEW auto completion special marks deprecated items
  • FIX diagnostics may push wrong uri in Linux and macOS
  • FIX diagnostics not cleaned up when closing ignored lua file
  • FIX reload workspace remains old caches
  • FIX incorrect hover of local attribute

1.1.0

2020-11-20

  • NEW no longer BETA
  • NEW use meta.lua instead of meta.lni, now you can find the definition of builtin function
  • CHG Lua files outside of workspace no longer launch a new server

1.0.6

2020-11-20

  • NEW diagnostic code-after-break
  • CHG optimize performance
  • CHG updated language client
  • CHG unused-function ignores global functions (may used out of Lua)
  • CHG checks if client supports Lua.completion.enable: #259
  • FIX support for single Lua file
  • FIX #257

1.0.5

2020-11-14

  • NEW LuaDoc supports more EmmyLua

1.0.4

2020-11-12

  • FIX extension not works

1.0.3

2020-11-12

  • NEW server kills itself when disconnecting
  • NEW LuaDoc supports more EmmyLua
  • FIX Lua.diagnostics.enable not works: #251

1.0.2

2020-11-11

  • NEW supports ---| after doc.type
  • CHG lowcase-global ignores globals with ---@class
  • FIX endless loop
  • FIX #244

1.0.1

2020-11-10

  • FIX autocompletion not works.

1.0.0

2020-11-9

  • NEW implementation, NEW start!