diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2019-09-20 17:57:28 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2019-09-20 17:57:28 +0800 |
commit | 8602723c7127e2fd6380c602650de62bd8afad02 (patch) | |
tree | e8a6050024cc9d789b044cb134c4bbc002534500 /server-beta/src | |
parent | 3e4061cfa9e62e6fda785faa72de4b11fa6676ee (diff) | |
download | lua-language-server-8602723c7127e2fd6380c602650de62bd8afad02.zip |
简单的文件管理
Diffstat (limited to 'server-beta/src')
-rw-r--r-- | server-beta/src/files.lua | 41 | ||||
-rw-r--r-- | server-beta/src/proto/init.lua | 13 |
2 files changed, 52 insertions, 2 deletions
diff --git a/server-beta/src/files.lua b/server-beta/src/files.lua new file mode 100644 index 00000000..eaf92ba6 --- /dev/null +++ b/server-beta/src/files.lua @@ -0,0 +1,41 @@ +local platform = require 'bee.platform' + +local m = {} + +m.openMap = {} +m.textMap = {} +m.astMap = {} + +--- 打开文件 +function m.open(uri) + if platform.OS == 'Windows' then + uri = uri:lower() + end + m.openMap[uri] = true +end + +--- 关闭文件 +function m.close(uri) + if platform.OS == 'Windows' then + uri = uri:lower() + end + m.openMap[uri] = nil +end + +--- 设置文件文本 +function m.setText(uri, text) + if platform.OS == 'Windows' then + uri = uri:lower() + end + m.textMap[uri] = text +end + +--- 设置文件语法树 +function m.setAst(uri, ast) + if platform.OS == 'Windows' then + uri = uri:lower() + end + m.astMap[uri] = ast +end + +return m diff --git a/server-beta/src/proto/init.lua b/server-beta/src/proto/init.lua index 6e52fcbe..26fd5df8 100644 --- a/server-beta/src/proto/init.lua +++ b/server-beta/src/proto/init.lua @@ -3,6 +3,7 @@ local util = require 'utility' local cap = require 'proto.capability' local pub = require 'pub' local task = require 'task' +local files = require 'files' proto.on('initialize', function (params) --log.debug(util.dump(params)) @@ -38,10 +39,16 @@ proto.on('textDocument/didOpen', function (params) local doc = params.textDocument local uri = doc.uri local text = doc.text - local state = pub.task('compile', text) + files.open(uri) + files.setText(uri, text) + local ast = pub.task('compile', text) + files.setAst(uri, ast) end) proto.on('textDocument/didClose', function (params) + local doc = params.textDocument + local uri = doc.uri + files.close(uri) end) proto.on('textDocument/didChange', function (params) @@ -49,7 +56,9 @@ proto.on('textDocument/didChange', function (params) local change = params.contentChanges local uri = doc.uri local text = change[1].text - local state = pub.task('compile', text) + files.setText(uri, text) + local ast = pub.task('compile', text) + files.setAst(uri, ast) end) return proto |