diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/src/core/definition.lua | 9 | ||||
-rw-r--r-- | server/src/core/implementation.lua | 9 | ||||
-rw-r--r-- | server/src/method/textDocument/completion.lua | 11 |
3 files changed, 17 insertions, 12 deletions
diff --git a/server/src/core/definition.lua b/server/src/core/definition.lua index 9c3f9a2f..44f4813a 100644 --- a/server/src/core/definition.lua +++ b/server/src/core/definition.lua @@ -75,11 +75,11 @@ end local function parseResult(vm, result, lsp) local positions = {} - if result.value.lib then - return positions - end local tp = result.type if tp == 'local' then + if result.value.lib then + return positions + end if result.value.uri ~= vm.uri then parseResultAcrossUri(positions, vm, result) else @@ -94,6 +94,9 @@ local function parseResult(vm, result, lsp) end end elseif tp == 'field' then + if result.value.lib then + return positions + end if result.value.uri ~= vm.uri then parseResultAcrossUri(positions, vm, result) else diff --git a/server/src/core/implementation.lua b/server/src/core/implementation.lua index 8f52cc38..d3681652 100644 --- a/server/src/core/implementation.lua +++ b/server/src/core/implementation.lua @@ -74,11 +74,11 @@ end local function parseResult(vm, result, lsp) local positions = {} - if result.value.lib then - return positions - end local tp = result.type if tp == 'local' then + if result.value.lib then + return positions + end if result.value.uri ~= vm.uri then parseResultAcrossUri(positions, vm, result) else @@ -93,6 +93,9 @@ local function parseResult(vm, result, lsp) end end elseif tp == 'field' then + if result.value.lib then + return positions + end if result.value.uri ~= vm.uri then parseResultAcrossUri(positions, vm, result) else diff --git a/server/src/method/textDocument/completion.lua b/server/src/method/textDocument/completion.lua index 2891b4b2..2e1eb5f0 100644 --- a/server/src/method/textDocument/completion.lua +++ b/server/src/method/textDocument/completion.lua @@ -17,18 +17,17 @@ local function posToRange(lines, start, finish) end local function findStartPos(pos, buf) + local res = pos for i = pos-1, 1, -1 do local c = buf:sub(i, i) if c:find '%a' then - goto CONTINUE + res = i end - if c == '.' then - return nil + if c == '.' or c == ':' then + break end - do return i + 1 end - ::CONTINUE:: end - return pos + return res end return function (lsp, params) |