notes/.config/nvim/after/plugin/lsp.lua
2023-11-19 18:34:50 -08:00

76 lines
1.4 KiB
Lua

local lsp = require("lsp-zero")
local lspconfig = require("lspconfig")
local cmp = require("cmp")
lsp.preset("recommended")
require("mason").setup()
lsp.ensure_installed({
"tsserver",
"eslint",
"rust_analyzer",
"volar",
})
cmp.setup({
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
})
lsp.set_preferences({
suggest_lsp_servers = false,
sign_icons = {
error = "E",
warn = "W",
hint = "H",
info = "I",
},
})
-- function that is used with keybinding cm to toggle autocompletion
Mode = require("cmp.types").cmp.TriggerEvent.TextChanged
function SetAutoCmp(mode)
if mode then
cmp.setup({
completion = {
autocomplete = { Mode },
},
})
Mode = false
else
cmp.setup({
completion = {
autocomplete = Mode,
},
})
Mode = require("cmp.types").cmp.TriggerEvent.TextChanged
end
end
SetAutoCmp(Mode)
lsp.setup()
vim.diagnostic.config({
virtual_text = true,
})
-- LSP Specific Settings
-- Volar TypeScript Config (turn off for Vue with Vanilla JS)
-- require("mason-lspconfig").setup_handlers({
-- function(server_name)
-- local server_config = {}
-- if server_name == "volar" then
-- server_config.filetypes = { "vue", "typescript", "javascript" }
-- lspconfig.tsserver.setup({
-- ["disabled"] = true,
-- })
-- lspconfig.volar.setup({
-- settings = {
-- ["volar.takeOverMode.enabled"] = true,
-- },
-- })
-- end
-- lspconfig[server_name].setup(server_config)
-- end,
-- })