diff options
author | sumneko <sumneko@hotmail.com> | 2019-05-22 20:46:22 +0800 |
---|---|---|
committer | sumneko <sumneko@hotmail.com> | 2019-05-22 20:46:22 +0800 |
commit | bb8aa605fcde6faee6605e0580817e50e09f79f3 (patch) | |
tree | 01f401b9e355303150239c2e2d74d866d71f01b7 /server | |
parent | de808902586795f0f49badd8df238bb04189c931 (diff) | |
download | lua-language-server-bb8aa605fcde6faee6605e0580817e50e09f79f3.zip |
emmy枚举值也自动处理字符串
Diffstat (limited to 'server')
-rw-r--r-- | server/src/core/completion.lua | 24 | ||||
-rw-r--r-- | server/test/completion/init.lua | 31 |
2 files changed, 49 insertions, 6 deletions
diff --git a/server/src/core/completion.lua b/server/src/core/completion.lua index 9afeec2a..331eb6cc 100644 --- a/server/src/core/completion.lua +++ b/server/src/core/completion.lua @@ -616,11 +616,15 @@ local function searchEnumAsLib(vm, source, word, callback, pos, args, lib) data.documentation = enum.description callback(enum.enum, nil, CompletionItemKind.EnumMember, data) else - local data = buildTextEdit(source.start, source.finish, strSource[1], nil) - data.documentation = enum.description - callback(enum.enum, nil, CompletionItemKind.EnumMember, data) + callback(enum.enum, nil, CompletionItemKind.EnumMember, { + documentation = enum.description + }) end end + else + callback(enum.enum, nil, CompletionItemKind.EnumMember, { + documentation = enum.description + }) end end end @@ -648,9 +652,17 @@ local function searchEnumAsEmmyParams(vm, source, word, callback, pos, args, fun param:eachEnum(function (enum) if matchKey(word, enum) then - callback(enum, nil, CompletionItemKind.EnumMember, { - label = enum, - }) + local strSource = parser:ast(tostring(enum), 'String') + if strSource then + if source.type == 'string' then + local data = buildTextEdit(source.start, source.finish, strSource[1], source[2]) + callback(enum, nil, CompletionItemKind.EnumMember, data) + else + callback(enum, nil, CompletionItemKind.EnumMember) + end + else + callback(enum, nil, CompletionItemKind.EnumMember) + end end end) end diff --git a/server/test/completion/init.lua b/server/test/completion/init.lua index fee69e74..b649e1a8 100644 --- a/server/test/completion/init.lua +++ b/server/test/completion/init.lua @@ -1159,6 +1159,37 @@ f($) } TEST [[ +---@param x string | "'AAA'" | "'BBB'" | "'CCC'" +function f(x) +end + +f('$') +]] +{ + { + label = "AAA", + filterText = 'AAA', + kind = CompletionItemKind.EnumMember, + textEdit = EXISTS, + additionalTextEdits = EXISTS, + }, + { + label = "BBB", + filterText = 'BBB', + kind = CompletionItemKind.EnumMember, + textEdit = EXISTS, + additionalTextEdits = EXISTS, + }, + { + label = "CCC", + filterText = 'CCC', + kind = CompletionItemKind.EnumMember, + textEdit = EXISTS, + additionalTextEdits = EXISTS, + } +} + +TEST [[ ---@param x function | 'function () end' function f(x) end |