Skip to content

Commit bddeb50

Browse files
committed
normalize uri from RPC
fix #1810
1 parent efffa22 commit bddeb50

File tree

6 files changed

+32
-13
lines changed

6 files changed

+32
-13
lines changed

changelog.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# changelog
22

33
## 3.6.7
4+
* `FIX` [#1810]
45
* `FIX` [#1829]
56

7+
[#1810]: https://github.com/sumneko/lua-language-server/issues/1810
68
[#1829]: https://github.com/sumneko/lua-language-server/issues/1829
79

810
## 3.6.6

script/file-uri.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ function m.isValid(uri)
106106
end
107107

108108
function m.normalize(uri)
109-
if uri == '' then
109+
if not m.isValid(uri) then
110110
return uri
111111
end
112112
return m.encode(m.decode(uri))

script/files.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ end
7979
---@return uri
8080
function m.getRealUri(uri)
8181
if platform.OS ~= 'Windows' then
82-
return uri
82+
return furi.normalize(uri)
8383
end
8484
local filename = furi.decode(uri)
8585
-- normalize uri

script/provider/provider.lua

+10-8
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,10 @@ m.register 'initialize' {
114114

115115
if params.workspaceFolders then
116116
for _, folder in ipairs(params.workspaceFolders) do
117-
workspace.create(folder.uri)
117+
workspace.create(files.getRealUri(folder.uri))
118118
end
119119
elseif params.rootUri then
120-
workspace.create(params.rootUri)
120+
workspace.create(files.getRealUri(params.rootUri))
121121
end
122122

123123
local response = {
@@ -249,12 +249,14 @@ m.register 'workspace/didChangeWorkspaceFolders' {
249249
function (params)
250250
log.debug('workspace/didChangeWorkspaceFolders', inspect(params))
251251
for _, folder in ipairs(params.event.added) do
252-
workspace.create(folder.uri)
252+
local uri = files.getRealUri(folder.uri)
253+
workspace.create(uri)
253254
m.updateConfig()
254-
workspace.reload(scope.getScope(folder.uri))
255+
workspace.reload(scope.getScope(uri))
255256
end
256257
for _, folder in ipairs(params.event.removed) do
257-
workspace.remove(folder.uri)
258+
local uri = files.getRealUri(folder.uri)
259+
workspace.remove(uri)
258260
end
259261
end
260262
}
@@ -263,12 +265,12 @@ m.register 'textDocument/didOpen' {
263265
---@async
264266
function (params)
265267
local doc = params.textDocument
266-
local scheme = furi.split(doc.uri)
267-
local supports = config.get(doc.uri, 'Lua.workspace.supportScheme')
268+
local uri = files.getRealUri(doc.uri)
269+
local scheme = furi.split(uri)
270+
local supports = config.get(uri, 'Lua.workspace.supportScheme')
268271
if not util.arrayHas(supports, scheme) then
269272
return
270273
end
271-
local uri = files.getRealUri(doc.uri)
272274
log.debug('didOpen', uri)
273275
local text = doc.text
274276
files.setText(uri, text, true, function (file)

script/workspace/workspace.lua

-3
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@ end
4545

4646
--- 初始化工作区
4747
function m.create(uri)
48-
if furi.isValid(uri) then
49-
uri = furi.normalize(uri)
50-
end
5148
log.info('Workspace create: ', uri)
5249
local scp = scope.createFolder(uri)
5350
m.folders[#m.folders+1] = scp

test/tclient/tests/change-workspace-folder.lua

+18
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,22 @@ lclient():start(function (client)
9898
assert(files.getState(rootUri .. '/ws1/test.lua') == nil)
9999
assert(files.getState(rootUri .. '/ws2/test.lua') == nil)
100100
assert(files.getState(rootUri .. '/ws3/test.lua') ~= nil)
101+
102+
-- normalize uri
103+
client:notify('workspace/didChangeWorkspaceFolders', {
104+
event = {
105+
added = {
106+
{
107+
name = 'ws2',
108+
uri = rootUri .. '%2F%77%73%32'--[[/ws2]],
109+
},
110+
},
111+
removed = {},
112+
},
113+
})
114+
115+
ws.awaitReady(rootUri .. '/ws2')
116+
assert(files.getState(rootUri .. '/ws1/test.lua') == nil)
117+
assert(files.getState(rootUri .. '/ws2/test.lua') ~= nil)
118+
assert(files.getState(rootUri .. '/ws3/test.lua') ~= nil)
101119
end)

0 commit comments

Comments
 (0)