diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2022-09-20 19:40:25 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2022-09-20 19:40:25 +0800 |
commit | cf9e700078499bd363d00b6601a37c616f2ceae8 (patch) | |
tree | c4c3bccba003e658345e13acd149f9103853fe44 /script/files.lua | |
parent | 33536b0453ec65d1d6abf3db72e057261b2a49be (diff) | |
download | lua-language-server-cf9e700078499bd363d00b6601a37c616f2ceae8.zip |
resolve #1177 re-support for symlinks
users need to maintain the correctness of symlinks themselves
Diffstat (limited to 'script/files.lua')
-rw-r--r-- | script/files.lua | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/script/files.lua b/script/files.lua index 0d15f166..d9e44823 100644 --- a/script/files.lua +++ b/script/files.lua @@ -57,6 +57,18 @@ m.reset() local fileID = util.counter() local uriMap = {} + +---@param path fs.path +---@return fs.path +local function getRealParent(path) + local parent = path:parent_path() + if parent:string() == path:string() then + return path + end + local res = fs.fullpath(path) + return getRealParent(parent) / res:filename() +end + -- 获取文件的真实uri,但不穿透软链接 ---@param uri uri ---@return uri @@ -78,11 +90,16 @@ function m.getRealUri(uri) if uri == ruri then return ruri end + local real = getRealParent(path:parent_path()) / res:filename() + ruri = furi.encode(real:string()) + if uri == ruri then + return ruri + end if not uriMap[uri] then - uriMap[uri] = ruri + uriMap[uri] = true log.warn(('Fix real file uri: %s -> %s'):format(uri, ruri)) end - return uriMap[uri] + return ruri end --- 打开文件 |