diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2019-09-05 14:19:56 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2019-09-05 14:19:56 +0800 |
commit | f3768e21a732683c181ec17401d7ba63f68b3635 (patch) | |
tree | 19f674d9134d685a75e6fc4b0940a420c6eb0488 | |
parent | 2dd41281796f3a504b5b5e8192bb109e1ffaf178 (diff) | |
download | lua-language-server-f3768e21a732683c181ec17401d7ba63f68b3635.zip |
过滤掉不支持的uri
-rw-r--r-- | server/src/core/hover/hover.lua | 3 | ||||
-rw-r--r-- | server/src/method/textDocument/didChange.lua | 2 | ||||
-rw-r--r-- | server/src/method/workspace/didChangeWatchedFiles.lua | 4 | ||||
-rw-r--r-- | server/src/service.lua | 6 | ||||
-rw-r--r-- | server/src/uri.lua | 2 | ||||
-rw-r--r-- | server/src/workspace.lua | 20 |
6 files changed, 32 insertions, 5 deletions
diff --git a/server/src/core/hover/hover.lua b/server/src/core/hover/hover.lua index ca1e03d4..2ee5cf46 100644 --- a/server/src/core/hover/hover.lua +++ b/server/src/core/hover/hover.lua @@ -298,6 +298,9 @@ local function hoverAsTargetUri(source, lsp) return nil end local path = lsp.workspace:relativePathByUri(uri) + if not path then + return nil + end return { description = ('[%s](%s)'):format(path:string(), uri), } diff --git a/server/src/method/textDocument/didChange.lua b/server/src/method/textDocument/didChange.lua index b2cad74d..82e6c096 100644 --- a/server/src/method/textDocument/didChange.lua +++ b/server/src/method/textDocument/didChange.lua @@ -3,7 +3,7 @@ return function (lsp, params) local change = params.contentChanges if lsp.workspace then local path = lsp.workspace:relativePathByUri(doc.uri) - if not lsp.workspace:isLuaFile(path) then + if not path or not lsp.workspace:isLuaFile(path) then return end if not lsp:isOpen(doc.uri) and lsp.workspace.gitignore(path:string()) then diff --git a/server/src/method/workspace/didChangeWatchedFiles.lua b/server/src/method/workspace/didChangeWatchedFiles.lua index dcca48f1..3ce68924 100644 --- a/server/src/method/workspace/didChangeWatchedFiles.lua +++ b/server/src/method/workspace/didChangeWatchedFiles.lua @@ -14,6 +14,9 @@ return function (lsp, params) local needReset for _, change in ipairs(params.changes) do local path = uric.decode(change.uri) + if not path then + goto CONTINUE + end if change.type == FileChangeType.Created then lsp.workspace:addFile(path) if lsp:getVM(change.uri) then @@ -32,6 +35,7 @@ return function (lsp, params) then lsp:reScanFiles() end + ::CONTINUE:: end -- 缓存过的文件发生变化后,重新计算 if needReset then diff --git a/server/src/service.lua b/server/src/service.lua index 7245b4e7..c763d73a 100644 --- a/server/src/service.lua +++ b/server/src/service.lua @@ -178,6 +178,9 @@ function mt:isLua(uri) return true end local path = self.workspace:absolutePathByUri(uri) + if not path then + return false + end if self.workspace:isLuaFile(path) then return true end @@ -192,6 +195,9 @@ function mt:isIgnored(uri) return true end local path = self.workspace:relativePathByUri(uri) + if not path then + return true + end if self.workspace.gitignore(path:string()) then return true end diff --git a/server/src/uri.lua b/server/src/uri.lua index ec3cdad6..9053447c 100644 --- a/server/src/uri.lua +++ b/server/src/uri.lua @@ -9,7 +9,7 @@ local OS = platform.OS == 'Windows' and 'win32' or 'unix' local function decode(uri) local obj = URI:new(uri) if not obj.filesystem_path then - return '' + return nil end local fullPath = obj:filesystem_path(OS) local path = fs.path(fullPath) diff --git a/server/src/workspace.lua b/server/src/workspace.lua index c5db8c5a..d50deca7 100644 --- a/server/src/workspace.lua +++ b/server/src/workspace.lua @@ -236,7 +236,11 @@ end function mt:findPath(baseUri, searchers) local results = {} - local baseName = getFileName(uric.decode(baseUri)) + local basePath = uric.decode(baseUri) + if not basePath then + return nil + end + local baseName = getFileName(basePath) for filename, uri in pairs(self.files) do if filename ~= baseName then for _, searcher in ipairs(searchers) do @@ -370,8 +374,12 @@ function mt:matchPath(baseUri, input) return nil end first = first:gsub('%W', '%%%1') - local baseName = getFileName(uric.decode(baseUri)) - local rootLen = #self.root:string() + local basePath = uric.decode(baseUri) + if not basePath then + return nil + end + local baseName = getFileName() + local rootLen = #self.root:string(basePath) local map = {} for filename in pairs(self.files) do if filename ~= baseName then @@ -477,6 +485,9 @@ end ---@return path function mt:relativePathByUri(uri) local path = uric.decode(uri) + if not path then + return nil + end local relate = fs.relative(path, self.root) return relate end @@ -485,6 +496,9 @@ end ---@return path function mt:absolutePathByUri(uri) local path = uric.decode(uri) + if not path then + return nil + end return fs.absolute(path) end |