76 lines
1.4 KiB
Lua
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,
|
|
-- })
|