diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2020-11-20 21:57:09 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2020-11-20 21:57:09 +0800 |
commit | 4ca61ec457822dd14966afa0752340ae8ce180a1 (patch) | |
tree | ae8adb1ad82c717868e551e699fd3cf3bb290089 /script/provider/capability.lua | |
parent | c63b2e404d8d2bb984afe3678a5ba2b2836380cc (diff) | |
download | lua-language-server-4ca61ec457822dd14966afa0752340ae8ce180a1.zip |
no longer beta
Diffstat (limited to 'script/provider/capability.lua')
-rw-r--r-- | script/provider/capability.lua | 61 |
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 |