summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/src/core/completion.lua9
-rw-r--r--server/src/workspace.lua2
-rw-r--r--server/test/crossfile/completion.lua44
-rw-r--r--server/test/document_symbol/init.lua26
4 files changed, 66 insertions, 15 deletions
diff --git a/server/src/core/completion.lua b/server/src/core/completion.lua
index cdb68580..29a3637e 100644
--- a/server/src/core/completion.lua
+++ b/server/src/core/completion.lua
@@ -257,7 +257,14 @@ local function searchInArg(vm, inCall, inString, callback)
end
for _, v in ipairs(results) do
if v ~= inString[1] then
- callback(v, CompletionItemKind.File)
+ local sep = inString[1]:find('[^%w_][%w_]-$')
+ local insertText
+ if sep then
+ --v = v:sub(sep+1)
+ end
+ callback(v, CompletionItemKind.File, {
+ insertText = insertText,
+ })
end
end
end
diff --git a/server/src/workspace.lua b/server/src/workspace.lua
index 9e9c03d2..aaa9a47d 100644
--- a/server/src/workspace.lua
+++ b/server/src/workspace.lua
@@ -181,7 +181,7 @@ function mt:matchPath(baseUri, input)
local list = self:convertPathAsRequire(filename, start + 1)
if list then
for _, str in ipairs(list) do
- if #str >= #input then
+ if #str >= #input and str:sub(1, #input) == input then
if not map[str]
or similarity(filename, baseName) > similarity(map[str], baseName)
then
diff --git a/server/test/crossfile/completion.lua b/server/test/crossfile/completion.lua
index f136a057..da4c1d7d 100644
--- a/server/test/crossfile/completion.lua
+++ b/server/test/crossfile/completion.lua
@@ -194,6 +194,50 @@ TEST {
TEST {
{
+ path = 'abc.lua',
+ content = '',
+ },
+ {
+ path = 'abc/init.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "abc.i@"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'abc.init',
+ kind = CompletionItemKind.File,
+ },
+ }
+}
+
+TEST {
+ {
+ path = 'core/core.lua',
+ content = '',
+ },
+ {
+ path = 'core/xxx.lua',
+ content = '',
+ },
+ {
+ path = 'test.lua',
+ content = 'require "core.co@"',
+ main = true,
+ },
+ completion = {
+ {
+ label = 'core.core',
+ kind = CompletionItemKind.File,
+ },
+ }
+}
+
+TEST {
+ {
path = 'x000.lua',
content = '',
},
diff --git a/server/test/document_symbol/init.lua b/server/test/document_symbol/init.lua
index 684e5449..746ec108 100644
--- a/server/test/document_symbol/init.lua
+++ b/server/test/document_symbol/init.lua
@@ -84,16 +84,16 @@ end
}
}
-TEST [[
-return function ()
-end
-]]
-{
- [1] = {
- name = '',
- detail = 'function f()',
- kind = SymbolKind.Function,
- range = {8, 22},
- selectionRange = {8, 8},
- }
-}
+--TEST [[
+--return function ()
+--end
+--]]
+--{
+-- [1] = {
+-- name = '',
+-- detail = 'function f()',
+-- kind = SymbolKind.Function,
+-- range = {8, 22},
+-- selectionRange = {8, 8},
+-- }
+--}