summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
authorsumneko <sumneko@hotmail.com>2022-01-27 23:04:53 +0800
committersumneko <sumneko@hotmail.com>2022-01-27 23:04:53 +0800
commite9c319ac7c512b3563101c87d73d959931e1554a (patch)
tree74f6952ca18e70bb847feafdc48fcaddd33be0c1 /script
parent7b19ab02273c60982c45cd3cac768e9e788ad64d (diff)
downloadlua-language-server-e9c319ac7c512b3563101c87d73d959931e1554a.zip
fix ref
Diffstat (limited to 'script')
-rw-r--r--script/files.lua2
-rw-r--r--script/workspace/loading.lua24
2 files changed, 16 insertions, 10 deletions
diff --git a/script/files.lua b/script/files.lua
index 5e86d217..37aef7e1 100644
--- a/script/files.lua
+++ b/script/files.lua
@@ -367,6 +367,7 @@ function m.addRef(uri)
return nil
end
file._ref = (file._ref or 0) + 1
+ log.debug('add ref', uri)
return function ()
m.delRef(uri)
end
@@ -378,6 +379,7 @@ function m.delRef(uri)
return
end
file._ref = (file._ref or 0) - 1
+ log.debug('del ref', uri)
if file._ref <= 0 then
m.remove(uri)
end
diff --git a/script/workspace/loading.lua b/script/workspace/loading.lua
index 2ea981e7..3cdeaad6 100644
--- a/script/workspace/loading.lua
+++ b/script/workspace/loading.lua
@@ -81,22 +81,24 @@ function mt:loadFile(uri, libraryUri)
if files.getFile(uri) then
self.read = self.read + 1
self:update()
- files.addRef(uri)
+ if not self._cache[uri] then
+ files.addRef(uri)
+ end
self._cache[uri] = true
log.info(('Skip loaded file: %s'):format(uri))
else
local content = pub.awaitTask('loadFile', furi.decode(uri))
self.read = self.read + 1
self:update()
- if not self._cache[uri] then
- files.addRef(uri)
- end
- self._cache[uri] = true
if not content then
return
end
log.info(('Preload file at: %s , size = %.3f KB'):format(uri, #content / 1024.0))
files.setText(uri, content, false)
+ if not self._cache[uri] then
+ files.addRef(uri)
+ end
+ self._cache[uri] = true
end
if libraryUri then
log.info('++++As library of:', libraryUri)
@@ -110,22 +112,24 @@ function mt:loadFile(uri, libraryUri)
if files.getFile(uri) then
self.read = self.read + 1
self:update()
- files.addRef(uri)
+ if not self._cache[uri] then
+ files.addRef(uri)
+ end
self._cache[uri] = true
log.info(('Skip loaded file: %s'):format(uri))
else
local content = pub.awaitTask('loadFile', furi.decode(uri))
self.read = self.read + 1
self:update()
- if not self._cache[uri] then
- files.addRef(uri)
- end
- self._cache[uri] = true
if not content then
return
end
log.info(('Preload dll at: %s , size = %.3f KB'):format(uri, #content / 1024.0))
files.saveDll(uri, content)
+ if not self._cache[uri] then
+ files.addRef(uri)
+ end
+ self._cache[uri] = true
end
if libraryUri then
log.info('++++As library of:', libraryUri)