summaryrefslogtreecommitdiff
path: root/script/provider/capability.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/provider/capability.lua
parentc63b2e404d8d2bb984afe3678a5ba2b2836380cc (diff)
downloadlua-language-server-4ca61ec457822dd14966afa0752340ae8ce180a1.zip
no longer beta
Diffstat (limited to 'script/provider/capability.lua')
-rw-r--r--script/provider/capability.lua61
1 files changed, 61 insertions, 0 deletions
diff --git a/script/provider/capability.lua b/script/provider/capability.lua
new file mode 100644
index 00000000..23ec27b0
--- /dev/null
+++ b/script/provider/capability.lua
@@ -0,0 +1,61 @@
+local sp = require 'bee.subprocess'
+local nonil = require 'without-check-nil'
+local client = require 'provider.client'
+
+local m = {}
+
+local function allWords()
+ local str = [[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.:('"[,#*@| ]]
+ local list = {}
+ for c in str:gmatch '.' do
+ list[#list+1] = c
+ end
+ return list
+end
+
+function m.getIniter()
+ local initer = {
+ -- 文本同步方式
+ textDocumentSync = {
+ -- 打开关闭文本时通知
+ openClose = true,
+ -- 文本改变时完全通知 TODO 支持差量更新(2)
+ change = 1,
+ },
+
+ hoverProvider = true,
+ definitionProvider = true,
+ referencesProvider = true,
+ renameProvider = {
+ prepareProvider = true,
+ },
+ documentSymbolProvider = true,
+ workspaceSymbolProvider = true,
+ documentHighlightProvider = true,
+ codeActionProvider = true,
+ signatureHelpProvider = {
+ triggerCharacters = { '(', ',' },
+ },
+ executeCommandProvider = {
+ commands = {
+ 'lua.removeSpace:' .. sp:get_id(),
+ 'lua.solve:' .. sp:get_id(),
+ },
+ }
+ --documentOnTypeFormattingProvider = {
+ -- firstTriggerCharacter = '}',
+ --},
+ }
+
+ nonil.enable()
+ if not client.info.capabilities.textDocument.completion.dynamicRegistration then
+ initer.completionProvider = {
+ triggerCharacters = allWords(),
+ }
+ end
+ nonil.disable()
+
+ return initer
+end
+
+return m