Skip to content

Commit ac3be36

Browse files
committed
improve
1 parent 943b86f commit ac3be36

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

script/core/modifyRequirePath.lua

+1-6
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,8 @@ local function checkConvert(changes, uri, renames)
3131
if type(name) ~= 'string' then
3232
return
3333
end
34-
local uris = rpath.findUrisByRequireName(uri, name)
35-
local ruri = uris and uris[1]
36-
if not ruri then
37-
return
38-
end
3934
for _, rename in ipairs(renames) do
40-
if rename.oldUri == ruri then
35+
if rpath.isMatchedUri(uri, rename.oldUri, name) then
4136
local visibles = rpath.getVisiblePath(uri, furi.decode(rename.newUri))
4237
if #visibles > 0 then
4338
local newName = visibles[1].name

script/files.lua

+1
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,7 @@ function m.compileState(uri)
667667
local ws = require 'workspace'
668668
local prog <close> = progress.create(uri, lang.script.WINDOW_COMPILING, 0.5)
669669
prog:setMessage(ws.getRelativePath(uri))
670+
log.trace('Compile State:', uri)
670671
local clock = os.clock()
671672
local state, err = parser.compile(file.text
672673
, 'Lua'

script/workspace/require-path.lua

+30
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,36 @@ function m.findUrisByRequireName(uri, name)
250250
return mgr:findUrisByRequireName(uri, name)
251251
end
252252

253+
---@param suri uri
254+
---@param uri uri
255+
---@param name string
256+
---@return boolean
257+
function m.isMatchedUri(suri, uri, name)
258+
local searchers = config.get(suri, 'Lua.runtime.path')
259+
local strict = config.get(suri, 'Lua.runtime.pathStrict')
260+
local separator = config.get(suri, 'Lua.completion.requireSeparator')
261+
local path = name:gsub('%' .. separator, '/')
262+
263+
for _, searcher in ipairs(searchers) do
264+
local fspath = searcher:gsub('%?', (path:gsub('%%', '%%%%')))
265+
fspath = workspace.normalize(fspath)
266+
local tail = '/' .. furi.encode(fspath):gsub('^file:[/]*', '')
267+
if util.stringEndWith(uri, tail) then
268+
local parentUri = files.getLibraryUri(suri, uri) or uri
269+
if parentUri == nil or parentUri == '' then
270+
parentUri = furi.encode '/'
271+
end
272+
local relative = uri:sub(#parentUri + 1):sub(1, - #tail)
273+
if not strict
274+
or relative == '/'
275+
or relative == '' then
276+
return true
277+
end
278+
end
279+
end
280+
return false
281+
end
282+
253283
files.watch(function (ev, uri)
254284
for _, scp in ipairs(workspace.folders) do
255285
scp:set('requireManager', nil)

0 commit comments

Comments
 (0)