diff options
-rw-r--r-- | script-beta/core/completion.lua | 12 | ||||
-rw-r--r-- | script-beta/core/hover/arg.lua | 1 | ||||
-rw-r--r-- | script-beta/provider/init.lua | 9 | ||||
-rw-r--r-- | script-beta/vm/eachRef.lua | 3 | ||||
-rw-r--r-- | test-beta/completion/init.lua | 1 |
5 files changed, 20 insertions, 6 deletions
diff --git a/script-beta/core/completion.lua b/script-beta/core/completion.lua index 3d14779f..8e7dfdf9 100644 --- a/script-beta/core/completion.lua +++ b/script-beta/core/completion.lua @@ -117,8 +117,15 @@ end local function buildFunctionSnip(source) local name = getName(source) - local arg = getArg(source) - return ('%s(%s)'):format(name, arg) + local args = getArg(source) + local id = 0 + args = args:gsub('[^,]+', function (arg) + id = id + 1 + return arg:gsub('^(%s*)(.+)', function (sp, word) + return ('%s${%d:%s}'):format(sp, id, word) + end) + end) + return ('%s(%s)'):format(name, args) end local function buildFunction(results, source, oop, data) @@ -131,6 +138,7 @@ local function buildFunction(results, source, oop, data) snipData.kind = ckind.Snippet snipData.label = snipData.label .. '()' snipData.insertText = buildFunctionSnip(source) + snipData.insertTextFormat = 2 results[#results+1] = snipData end end diff --git a/script-beta/core/hover/arg.lua b/script-beta/core/hover/arg.lua index 983cc84e..9d557e3b 100644 --- a/script-beta/core/hover/arg.lua +++ b/script-beta/core/hover/arg.lua @@ -38,4 +38,5 @@ return function (source, caller) if source.type == 'function' then return asFunction(source, caller) end + return '' end diff --git a/script-beta/provider/init.lua b/script-beta/provider/init.lua index 6faae12e..d6cac333 100644 --- a/script-beta/provider/init.lua +++ b/script-beta/provider/init.lua @@ -312,13 +312,14 @@ proto.on('textDocument/completion', function (params) if not result then return nil end - local items = {} for i, res in ipairs(result) do items[i] = { - label = res.label, - kind = res.kind, - sortText = ('%04d'):format(i), + label = res.label, + kind = res.kind, + sortText = ('%04d'):format(i), + insertText = res.insertText, + insertTextFormat = res.insertTextFormat, } end diff --git a/script-beta/vm/eachRef.lua b/script-beta/vm/eachRef.lua index 972efc2d..4f653e00 100644 --- a/script-beta/vm/eachRef.lua +++ b/script-beta/vm/eachRef.lua @@ -406,6 +406,9 @@ local function ofGlobal(source, callback) end local function ofField(source, callback) + if not source then + return + end local parent = source.parent local key = guide.getKeyName(source) if parent.type == 'tablefield' diff --git a/test-beta/completion/init.lua b/test-beta/completion/init.lua index 9a2957b0..7ce95b84 100644 --- a/test-beta/completion/init.lua +++ b/test-beta/completion/init.lua @@ -134,6 +134,7 @@ ass$ kind = CompletionItemKind.Snippet, documentation = EXISTS, insertText = EXISTS, + insertTextFormat = 2, detail = EXISTS, }, } |