summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--script/workspace/workspace.lua10
-rw-r--r--test/crossfile/definition.lua12
2 files changed, 15 insertions, 7 deletions
diff --git a/script/workspace/workspace.lua b/script/workspace/workspace.lua
index 72a689c1..5350369e 100644
--- a/script/workspace/workspace.lua
+++ b/script/workspace/workspace.lua
@@ -329,11 +329,7 @@ function m.findUrisByFilePath(path)
if type(path) ~= 'string' then
return {}
end
- local lpath = path:gsub('[/\\]+', '/')
- if lpath:match('^[/\\]')
- or lpath:match('^%a+%:') then
- lpath = furi.encode(lpath)
- end
+ local lpath = furi.encode(path):gsub('^file:///', '')
if platform.OS == 'Windows' then
lpath = lpath:lower()
end
@@ -349,11 +345,11 @@ function m.findUrisByFilePath(path)
if platform.OS ~= 'Windows' then
uri = files.getOriginUri(uri)
end
- local curPath = furi.decode(files.getOriginUri(uri))
- if not curPath:find(lpath, 1, true) then
+ if not uri:find(lpath, 1, true) then
goto CONTINUE
end
local pathLen = #path
+ local curPath = furi.decode(files.getOriginUri(uri))
local curLen = #curPath
local seg = curPath:sub(curLen - pathLen, curLen - pathLen)
if seg == '/' or seg == '\\' or seg == '' then
diff --git a/test/crossfile/definition.lua b/test/crossfile/definition.lua
index fb0e872d..467e6af5 100644
--- a/test/crossfile/definition.lua
+++ b/test/crossfile/definition.lua
@@ -121,6 +121,18 @@ TEST {
TEST {
{
+ path = '@bbb.lua',
+ content = '',
+ target = {0, 0},
+ },
+ {
+ path = 'b.lua',
+ content = 'require "<?@bbb?>"',
+ },
+}
+
+TEST {
+ {
path = 'aaa/bbb.lua',
content = '',
target = {0, 0},