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
|
--
-- LSP client configurations
--
local function inspect_lsp()
local client = vim.lsp.get_clients()[1]
if client == nil then
vim.notify("No LSP client loaded")
return
end
vim.notify(vim.inspect(client.server_capabilities), vim.log.levels.INFO)
end
vim.api.nvim_create_user_command("LspInspect", inspect_lsp, { desc = "Inspect LSP client" })
-- Enable LSP server capabilities if available when attaching, see `:help lsp-attach`
vim.api.nvim_create_autocmd("LspAttach", {
desc = "Enable LSP capabilities",
group = vim.g.dotfiles.augroup,
callback = function(ev)
local client = assert(vim.lsp.get_client_by_id(ev.data.client_id))
if client:supports_method("textDocument/completion") then
vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true })
else
vim.notify("Client " .. client.name .. " does not support completion", vim.log.levels.WARN)
end
if client:supports_method("textDocument/inlayHint") then
vim.lsp.inlay_hint.enable(true, { bufnr = 0 })
else
vim.notify("Client " .. client.name .. " does not support inlay hints", vim.log.levels.WARN)
end
end,
})
vim.api.nvim_create_user_command("LspHintToggle", function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = 0 }), { bufnr = 0 })
end, { desc = "Toggle LSP inlay hints" })
------------------------------------------------------------------------------------------------------------------------
-- Lua
------------------------------------------------------------------------------------------------------------------------
vim.lsp.config("lua_ls", {
on_init = function(client)
-- See Lua language server configuration settings at https://luals.github.io/wiki/settings
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
runtime = {
version = "Lua 5.1",
path = { "?.lua", "?/init.lua" }, -- See `:h lua-module-load`
},
workspace = {
checkThirdParty = false,
library = vim.api.nvim_get_runtime_file("", true), -- Load all folders in 'runtimepath'
},
})
end,
})
vim.lsp.enable("lua_ls")
------------------------------------------------------------------------------------------------------------------------
-- Bash
------------------------------------------------------------------------------------------------------------------------
vim.lsp.enable("bashls")
------------------------------------------------------------------------------------------------------------------------
-- Markdown
------------------------------------------------------------------------------------------------------------------------
vim.lsp.config("marksman", { filetypes = { "markdown" } })
vim.lsp.enable("marksman")
------------------------------------------------------------------------------------------------------------------------
-- Vimscript
------------------------------------------------------------------------------------------------------------------------
vim.lsp.enable("vimls")
|