summaryrefslogtreecommitdiff
path: root/script/brave/work.lua
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2020-11-20 21:57:09 +0800
committer最萌小汐 <sumneko@hotmail.com>2020-11-20 21:57:09 +0800
commit4ca61ec457822dd14966afa0752340ae8ce180a1 (patch)
treeae8adb1ad82c717868e551e699fd3cf3bb290089 /script/brave/work.lua
parentc63b2e404d8d2bb984afe3678a5ba2b2836380cc (diff)
downloadlua-language-server-4ca61ec457822dd14966afa0752340ae8ce180a1.zip
no longer beta
Diffstat (limited to 'script/brave/work.lua')
-rw-r--r--script/brave/work.lua60
1 files changed, 60 insertions, 0 deletions
diff --git a/script/brave/work.lua b/script/brave/work.lua
new file mode 100644
index 00000000..5ec8178f
--- /dev/null
+++ b/script/brave/work.lua
@@ -0,0 +1,60 @@
+local brave = require 'brave.brave'
+local parser = require 'parser'
+local fs = require 'bee.filesystem'
+local furi = require 'file-uri'
+local util = require 'utility'
+local thread = require 'bee.thread'
+
+brave.on('loadProto', function ()
+ local jsonrpc = require 'jsonrpc'
+ while true do
+ local proto, err = jsonrpc.decode(io.read, log.error)
+ --log.debug('loaded proto', proto.method)
+ if not proto then
+ brave.push('protoerror', err)
+ return
+ end
+ brave.push('proto', proto)
+ thread.sleep(0.001)
+ end
+end)
+
+brave.on('compile', function (text)
+ local state, err = parser:compile(text, 'lua', 'Lua 5.4')
+ if not state then
+ log.error(err)
+ return
+ end
+ local lines = parser:lines(text)
+ return {
+ root = state.root,
+ value = state.value,
+ errs = state.errs,
+ lines = lines,
+ }
+end)
+
+brave.on('listDirectory', function (uri)
+ local path = fs.path(furi.decode(uri))
+ local uris = {}
+ for child in path:list_directory() do
+ local childUri = furi.encode(child:string())
+ uris[#uris+1] = childUri
+ end
+ return uris
+end)
+
+brave.on('isDirectory', function (uri)
+ local path = fs.path(furi.decode(uri))
+ return fs.is_directory(path)
+end)
+
+brave.on('loadFile', function (uri)
+ local filename = furi.decode(uri)
+ return util.loadFile(filename)
+end)
+
+brave.on('saveFile', function (params)
+ local filename = furi.decode(params.uri)
+ return util.saveFile(filename, params.text)
+end)