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
104
105
106
107
108
109
110
111
|
-- NOTE: a table or true to enable, false to disable
return {
lua_ls = {
settings = {
diagnostics = { globals = { 'vim' } },
telemetry = { enabled = false },
hint = { enable = true },
workspace = {
library = {
[vim.fn.expand('$VIMRUNTIME/lua')] = true,
[vim.fn.stdpath('config') .. '/lua'] = true,
},
},
},
}, -- lua
clangd = {
cmd = {
'clangd',
'--background-index',
'--clang-tidy',
'--header-insertion=iwyu',
'--completion-style=detailed',
'--function-arg-placeholders',
'--fallback-style=llvm',
},
root_dir = function(filename)
return require('lspconfig/util').root_pattern(
'.clang-tidy',
'.clang-format',
'compile_commands.json',
'.git'
)(filename) or vim.fn.getcwd()
end,
init_options = {
usePlaceholders = true,
completeUnimported = true,
clangdFileStatus = true,
},
}, -- c/cpp
neocmake = {
root_dir = function(filename)
return require('lspconfig/util').root_pattern(
'CMakePresets.json',
'CTestConfig.cmake',
'build',
'cmake',
'.git' -- NOTE: git is last due to monorepos (so it tries to use build/cmake first)
)(filename) or vim.fn.getcwd()
end,
},
pyright = {
settings = {
python = {
pythonPath = '~/python/venv/bin/python',
},
},
}, -- python
bashls = true, -- bash
taplo = true, -- toml
lemminx = true, -- xml
yamlls = true, -- yaml
jsonls = true, -- json
html = true, -- html
cssls = true, -- css
ts_ls = true, -- javascript/typescript
-- marksman = true, -- Markdown LSP
markdown_oxide = true, -- Markdown LSP but better
gopls = {
cmd = { 'gopls' },
filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' },
root_dir = function(filename)
return require('lspconfig/util').root_pattern('go.work', 'go.mod', '.git')(filename)
end,
settings = {
gopls = {
gofumpt = true,
codelenses = {
gc_details = false,
generate = true,
regenerate_cgo = true,
run_govulncheck = true,
test = true,
tidy = true,
upgrade_dependency = true,
vendor = true,
},
hints = {
assignVariableTypes = false,
compositeLiteralFields = false,
compositeLiteralTypes = true,
constantValues = true,
functionTypeParameters = true,
parameterNames = false,
rangeVariableTypes = true,
},
analyses = {
fieldalignment = true,
nilness = true,
unusedparams = true,
unusedwrite = true,
useany = true,
},
usePlaceholders = false,
completeUnimported = true,
staticcheck = true,
directoryFilters = { '-.git', '-.vscode', '-.idea', '-.vscode-test', '-node_modules' },
semanticTokens = true,
},
},
}, -- Go LSP
}
|