diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2019-01-21 17:18:18 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2019-01-21 17:18:18 +0800 |
commit | ed21959eea02f2479ec87b6798d38b368542d881 (patch) | |
tree | 8b5c25f416cb0d9de287e88bc86778e1a50474e3 /server/src | |
parent | 3100e00a07bc390514bb57822e02dbc4b0442dea (diff) | |
download | lua-language-server-ed21959eea02f2479ec87b6798d38b368542d881.zip |
修正自动完成的一个bug
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/core/completion.lua | 14 | ||||
-rw-r--r-- | server/src/core/find_result.lua | 8 |
2 files changed, 18 insertions, 4 deletions
diff --git a/server/src/core/completion.lua b/server/src/core/completion.lua index 13a36d94..6c49fbb0 100644 --- a/server/src/core/completion.lua +++ b/server/src/core/completion.lua @@ -547,6 +547,16 @@ local function clearList(list, source) end end +local function isValidResult(result) + if not result then + return false + end + if result.type == 'local' or result.type == 'field' then + return true + end + return false +end + return function (vm, pos, word) local list = {} local callback = makeList(list) @@ -558,10 +568,10 @@ return function (vm, pos, word) searchSpecial(vm, pos, callback) if not inString then local result, source = findResult(vm, pos) - if not result then + if not isValidResult(result) then result, source = findClosePos(vm, pos) end - if result then + if isValidResult(result) then callback = makeList(list, source) searchInResult(result, source, vm, pos, callback) searchAllWords(result.key, vm, callback) diff --git a/server/src/core/find_result.lua b/server/src/core/find_result.lua index ac8dc3f4..e4074879 100644 --- a/server/src/core/find_result.lua +++ b/server/src/core/find_result.lua @@ -5,12 +5,16 @@ local function isContainPos(obj, pos) return false end +local function isValidSource(source) + return source.type ~= 'simple' +end + local function findAtPos(results, pos, level) local res = {} for sources, object in pairs(results.sources) do if sources.type == 'multi-source' then for _, source in ipairs(sources) do - if source.type ~= 'simple' and isContainPos(source, pos) then + if isValidSource(source) and isContainPos(source, pos) then res[#res+1] = { object = object, source = source, @@ -20,7 +24,7 @@ local function findAtPos(results, pos, level) end else local source = sources - if source.type ~= 'simple' and isContainPos(source, pos) then + if isValidSource(source) and isContainPos(source, pos) then res[#res+1] = { object = object, source = source, |