-
Notifications
You must be signed in to change notification settings - Fork 120
Expand file tree
/
Copy pathmethods.lua
More file actions
70 lines (64 loc) · 2.35 KB
/
Copy pathmethods.lua
File metadata and controls
70 lines (64 loc) · 2.35 KB
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
local lsp_methods = {
INITIALIZE = "initialize",
SHUTDOWN = "shutdown",
EXIT = "exit",
CODE_ACTION = "textDocument/codeAction",
EXECUTE_COMMAND = "workspace/executeCommand",
PUBLISH_DIAGNOSTICS = "textDocument/publishDiagnostics",
FORMATTING = "textDocument/formatting",
RANGE_FORMATTING = "textDocument/rangeFormatting",
DID_CHANGE = "textDocument/didChange",
DID_OPEN = "textDocument/didOpen",
DID_CLOSE = "textDocument/didClose",
DID_SAVE = "textDocument/didSave",
HOVER = "textDocument/hover",
COMPLETION = "textDocument/completion",
}
local lsp_methods_keys = vim.tbl_keys(lsp_methods)
for _, k in ipairs(lsp_methods_keys) do
lsp_methods[lsp_methods[k]] = k
end
local internal_methods = {
CODE_ACTION = "NULL_LS_CODE_ACTION",
DIAGNOSTICS = "NULL_LS_DIAGNOSTICS",
DIAGNOSTICS_ON_OPEN = "NULL_LS_DIAGNOSTICS_ON_OPEN",
DIAGNOSTICS_ON_SAVE = "NULL_LS_DIAGNOSTICS_ON_SAVE",
FORMATTING = "NULL_LS_FORMATTING",
RANGE_FORMATTING = "NULL_LS_RANGE_FORMATTING",
HOVER = "NULL_LS_HOVER",
COMPLETION = "NULL_LS_COMPLETION",
}
local internal_methods_keys = vim.tbl_keys(internal_methods)
for _, k in ipairs(internal_methods_keys) do
internal_methods[internal_methods[k]] = k
end
local lsp_to_internal_map = {
[lsp_methods.CODE_ACTION] = internal_methods.CODE_ACTION,
[lsp_methods.FORMATTING] = internal_methods.FORMATTING,
[lsp_methods.RANGE_FORMATTING] = internal_methods.RANGE_FORMATTING,
[lsp_methods.DID_CHANGE] = internal_methods.DIAGNOSTICS,
[lsp_methods.DID_SAVE] = internal_methods.DIAGNOSTICS_ON_SAVE,
[lsp_methods.DID_OPEN] = internal_methods.DIAGNOSTICS_ON_OPEN,
[lsp_methods.HOVER] = internal_methods.HOVER,
[lsp_methods.COMPLETION] = internal_methods.COMPLETION,
}
local overrides = {
[internal_methods.DIAGNOSTICS_ON_OPEN] = {
[internal_methods.DIAGNOSTICS] = true,
[internal_methods.DIAGNOSTICS_ON_SAVE] = true,
},
}
local M = {}
M.lsp = lsp_methods
M.internal = internal_methods
M.map = lsp_to_internal_map
M.overrides = overrides
--- converts an internal null-ls method into its readable name
--- e.g. NULL_LS_FORMATTING > formatting
---@param m string internal method
---@return string
M.get_readable_name = function(m)
assert(internal_methods[m], "failed to get name for method " .. m)
return internal_methods[m]:lower()
end
return M