@@ -40,15 +40,9 @@ function server.load_rust_analyzer_settings(_, opts)
40
40
end
41
41
42
42
--- @return lsp.ClientCapabilities
43
- local function make_rustaceanvim_capabilities ()
43
+ function server . create_client_capabilities ()
44
44
local capabilities = vim .lsp .protocol .make_client_capabilities ()
45
45
46
- if vim .fn .has (' nvim-0.10.0' ) == 1 then
47
- -- snippets
48
- -- This will also be added if cmp_nvim_lsp is detected.
49
- capabilities .textDocument .completion .completionItem .snippetSupport = true
50
- end
51
-
52
46
-- send actions with hover request
53
47
capabilities .experimental = {
54
48
hoverActions = true ,
@@ -76,57 +70,12 @@ local function make_rustaceanvim_capabilities()
76
70
table.insert (experimental_commands , ' rust-analyzer.debugSingle' )
77
71
end
78
72
73
+ --- @diagnostic disable-next-line : inject-field
79
74
capabilities .experimental .commands = {
80
75
commands = experimental_commands ,
81
76
}
82
77
83
78
return capabilities
84
79
end
85
80
86
- --- @param mod_name string
87
- --- @param callback fun ( mod : table ): lsp.ClientCapabilities
88
- --- @return lsp.ClientCapabilities
89
- local function mk_capabilities_if_available (mod_name , callback )
90
- local available , mod = pcall (require , mod_name )
91
- if available and type (mod ) == ' table' then
92
- local ok , capabilities = pcall (callback , mod )
93
- if ok then
94
- return capabilities
95
- end
96
- end
97
- return {}
98
- end
99
-
100
- --- @return lsp.ClientCapabilities
101
- function server .create_client_capabilities ()
102
- local rs_capabilities = make_rustaceanvim_capabilities ()
103
- local blink_capabilities = mk_capabilities_if_available (' blink.cmp' , function (blink )
104
- return blink .get_lsp_capabilities ()
105
- end )
106
- local cmp_capabilities = mk_capabilities_if_available (' cmp_nvim_lsp' , function (cmp_nvim_lsp )
107
- return cmp_nvim_lsp .default_capabilities ()
108
- end )
109
- local selection_range_capabilities = mk_capabilities_if_available (' lsp-selection-range' , function (lsp_selection_range )
110
- return lsp_selection_range .update_capabilities {}
111
- end )
112
- local folding_range_capabilities = mk_capabilities_if_available (' ufo' , function (_ )
113
- return {
114
- textDocument = {
115
- foldingRange = {
116
- dynamicRegistration = false ,
117
- lineFoldingOnly = true ,
118
- },
119
- },
120
- }
121
- end )
122
- return vim .tbl_deep_extend (
123
- ' force' ,
124
- rs_capabilities ,
125
- blink_capabilities ,
126
- cmp_capabilities ,
127
- selection_range_capabilities ,
128
- folding_range_capabilities
129
- )
130
- end
131
-
132
81
return server
0 commit comments