Skip to content

Commit d783e15

Browse files
nvim: suppport lsp settings/flags per language server setup
1 parent 0eed225 commit d783e15

1 file changed

Lines changed: 161 additions & 17 deletions

File tree

.config/cvim/settings/nvim_lspconfig.lua

Lines changed: 161 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,15 @@ local function setup_keybinding_when_lspserver_attach_to_buffer()
5656
})
5757
end
5858

59-
local function setup_lsp(vim_lsp, client_lsp_capabilities, lsp_name)
59+
local function setup_lsp(vim_lsp, lsp_name, client_lsp_capabilities, settings, flags)
6060
-- Extend config for a language
6161
vim_lsp.config(lsp_name,{
6262
-- Enable LSP with additional completion capabilities
6363
capabilities = client_lsp_capabilities,
64+
-- LSP setting
65+
settings = settings,
66+
-- LSP flags
67+
flags = flags,
6468
})
6569

6670
-- Enable the config
@@ -86,35 +90,175 @@ local function config()
8690
-- the LSP client support so that the LSP server can serve those completion canditates
8791
local client_lsp_cmp_capabilities = cmp.default_capabilities()
8892

89-
-- Python
90-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "ruff")
91-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "pylsp")
93+
-- python
94+
setup_lsp(
95+
vim_lsp,
96+
"ruff",
97+
client_lsp_cmp_capabilities,
98+
{},
99+
{
100+
debounce_text_changes = 200
101+
}
102+
)
103+
setup_lsp(
104+
vim_lsp,
105+
"pylsp",
106+
client_lsp_cmp_capabilities,
107+
{
108+
black = { enabled = false },
109+
autopep8 = { enabled = false },
110+
yapf = { enabled = false },
111+
-- linter options
112+
pylint = { enabled = false, executable = "pylint" },
113+
ruff = { enabled = true },
114+
pyflakes = { enabled = false },
115+
pycodestyle = { enabled = false },
116+
-- type checker
117+
pylsp_mypy = {
118+
enabled = true,
119+
overrides = { "--python-executable", py_path, true },
120+
report_progress = true,
121+
live_mode = false
122+
},
123+
-- auto-completion options
124+
jedi_completion = { fuzzy = true },
125+
-- import sorting
126+
isort = { enabled = false },
127+
},
128+
{
129+
debounce_text_changes = 200
130+
}
131+
)
92132
-- vimL
93-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "vimls")
133+
setup_lsp(
134+
vim_lsp,
135+
"vimls",
136+
client_lsp_cmp_capabilities,
137+
{},
138+
{
139+
debounce_text_changes = 200
140+
}
141+
)
94142
-- terraform
95-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "terraformls")
143+
setup_lsp(
144+
vim_lsp,
145+
"terraformls",
146+
client_lsp_cmp_capabilities,
147+
{},
148+
{
149+
debounce_text_changes = 200
150+
}
151+
)
96152
-- rust
97-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "rust_analyzer")
153+
setup_lsp(
154+
vim_lsp,
155+
"rust_analyzer",
156+
client_lsp_cmp_capabilities,
157+
{},
158+
{
159+
debounce_text_changes = 200
160+
}
161+
)
98162
-- markdown
99-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "marksman")
163+
setup_lsp(
164+
vim_lsp,
165+
"marksman",
166+
client_lsp_cmp_capabilities,
167+
{},
168+
{
169+
debounce_text_changes = 200
170+
}
171+
)
100172
-- lua
101-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "lua_ls")
173+
setup_lsp(
174+
vim_lsp,
175+
"lua_ls",
176+
client_lsp_cmp_capabilities,
177+
{},
178+
{
179+
debounce_text_changes = 200
180+
}
181+
)
102182
-- latex
103-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "ltex")
183+
setup_lsp(
184+
vim_lsp,
185+
"ltex",
186+
client_lsp_cmp_capabilities,
187+
{},
188+
{
189+
debounce_text_changes = 200
190+
}
191+
)
104192
-- json
105-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "jsonls")
193+
setup_lsp(
194+
vim_lsp,
195+
"jsonls",
196+
client_lsp_cmp_capabilities,
197+
{},
198+
{
199+
debounce_text_changes = 200
200+
}
201+
)
106202
-- yaml
107-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "yamlls")
203+
setup_lsp(
204+
vim_lsp,
205+
"yamlls",
206+
client_lsp_cmp_capabilities,
207+
{},
208+
{
209+
debounce_text_changes = 200
210+
}
211+
)
108212
-- html
109-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "html")
213+
setup_lsp(
214+
vim_lsp,
215+
"html",
216+
client_lsp_cmp_capabilities,
217+
{},
218+
{
219+
debounce_text_changes = 200
220+
}
221+
)
110222
-- dockerfile
111-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "dockerls")
223+
setup_lsp(
224+
vim_lsp,
225+
"dockerls",
226+
client_lsp_cmp_capabilities,
227+
{},
228+
{
229+
debounce_text_changes = 200
230+
}
231+
)
112232
-- clojure
113-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "clojure_lsp")
233+
setup_lsp(
234+
vim_lsp,
235+
"clojure_lsp",
236+
client_lsp_cmp_capabilities,
237+
{},
238+
{
239+
debounce_text_changes = 200
240+
}
241+
)
114242
-- astrojs
115-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, "astro")
243+
setup_lsp(
244+
vim_lsp,
245+
"astro",
246+
client_lsp_cmp_capabilities,
247+
{},
248+
{
249+
debounce_text_changes = 200
250+
}
251+
)
116252
-- harper-js
117-
setup_lsp(vim_lsp, client_lsp_cmp_capabilities, 'harper_ls')
253+
setup_lsp(
254+
vim_lsp,
255+
'harper_ls',
256+
client_lsp_cmp_capabilities,
257+
{},
258+
{
259+
debounce_text_changes = 200
260+
}
261+
)
118262

119263
mapping_diagnostics()
120264
setup_keybinding_when_lspserver_attach_to_buffer()

0 commit comments

Comments
 (0)