summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/configs/lsp.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/configs/lsp.lua')
-rw-r--r--.config/nvim/lua/configs/lsp.lua48
1 files changed, 48 insertions, 0 deletions
diff --git a/.config/nvim/lua/configs/lsp.lua b/.config/nvim/lua/configs/lsp.lua
new file mode 100644
index 0000000..7acbeba
--- /dev/null
+++ b/.config/nvim/lua/configs/lsp.lua
@@ -0,0 +1,48 @@
+-- Language server for specified languages
+-- Hover with 'K'
+-- Goto definition with :Goto
+-- Open code action with :Codeact
+
+local servers = {
+ "lua_ls", "bashls", "clangd", "marksman", "pyright", "lemminx",
+}
+
+vim.pack.add({
+ {
+ src = "https://github.com/mason-org/mason.nvim.git",
+ version = 'main',
+ },
+ {
+ src = "https://github.com/mason-org/mason-lspconfig.nvim.git",
+ version = 'main',
+ },
+})
+
+require("mason").setup({})
+require("mason-lspconfig").setup({
+ ensure_installed = servers,
+ automatic_installation = true,
+ automatic_enable = true,
+})
+
+-- Key mapping
+-- Hover for definition
+vim.keymap.set('n', 'K', vim.lsp.buf.hover, {})
+
+-- Move to definition
+vim.api.nvim_create_user_command(
+ "Goto",
+ function()
+ vim.lsp.buf.definition()
+ end,
+ {}
+)
+
+-- Code action
+vim.api.nvim_create_user_command(
+ "Codeact",
+ function()
+ vim.lsp.buf.code_action()
+ end,
+ {}
+)