1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
local nonil = require 'without-check-nil'
local client = require 'client'
local platform = require 'bee.platform'
local completion = require 'provider.completion'
local define = require 'proto.define'
require 'provider.semantic-tokens'
require 'provider.formatting'
require 'provider.inlay-hint'
local m = {}
local function testFileEvents(initer)
initer.fileOperations = {
didCreate = {
filters = {
{
pattern = {
glob = '**',
--matches = 'file',
options = platform.OS == 'Windows',
}
}
}
},
didDelete = {
filters = {
{
pattern = {
glob = '**',
--matches = 'file',
options = platform.OS == 'Windows',
}
}
}
},
didRename = {
filters = {
{
pattern = {
glob = '**',
--matches = 'file',
options = platform.OS == 'Windows',
}
}
}
},
}
end
m.fillings = {}
local function mergeFillings(provider)
for _, filling in ipairs(m.fillings) do
for k, v in pairs(filling) do
if type(v) == 'table' then
if not provider[k] then
provider[k] = {}
end
for kk, vv in pairs(v) do
provider[k][kk] = vv
end
else
provider[k] = v
end
end
end
end
function m.getProvider()
local provider = {
offsetEncoding = client.getOffsetEncoding(),
-- 文本同步方式
textDocumentSync = {
-- 打开关闭文本时通知
openClose = true,
-- 文本增量更新
change = 2,
},
}
--testFileEvents()
nonil.enable()
if not client.info.capabilities.textDocument.completion.dynamicRegistration
or not client.info.capabilities.workspace.configuration then
provider.completionProvider = {
resolveProvider = true,
triggerCharacters = completion.allWords(),
}
end
nonil.disable()
mergeFillings(provider)
return provider
end
function m.filling(t)
m.fillings[#m.fillings+1] = t
end
return m
|