diff --git a/init.lua b/init.lua index cdc6467..83a7efa 100644 --- a/init.lua +++ b/init.lua @@ -282,135 +282,109 @@ cmp.setup({ }), }) ---- LSP ---- -vim.g.lsp_loaded = false -vim.api.nvim_create_autocmd({ "FileType" }, { - pattern = { - "c", - "cpp", - "dot", - "go", - "javascript", - "json", - "latex", - "lua", - "python", - "rust", - "terraform", - "tex", - "toml", - "typescript", - "typst", - }, - callback = function() - if vim.g.lsp_loaded == true then - return - end - vim.g.lsp_loaded = true - vim.cmd("packadd nvim-lspconfig") - vim.cmd("packadd lsp_lines.nvim") - -- vim.cmd("packadd lsp-timeout.nvim") +vim.cmd("packadd nvim-lspconfig") +vim.cmd("packadd lsp_lines.nvim") +-- vim.cmd("packadd lsp-timeout.nvim") - local lsp = require("lspconfig") - -- Use an on_attach function to only map the following keys - -- after the language server attaches to the current buffer - local on_lsp_attach = function(_client, _bufnr) - vim.keymap.set("n", "gD", vim.lsp.buf.declaration) - vim.keymap.set("n", "gd", vim.lsp.buf.definition) - vim.keymap.set("n", "K", vim.lsp.buf.hover) - vim.keymap.set("n", "gi", vim.lsp.buf.implementation) - vim.keymap.set("n", "", vim.lsp.buf.signature_help) - vim.keymap.set("n", "D", vim.lsp.buf.type_definition) - vim.keymap.set("n", "rn", vim.lsp.buf.rename) - vim.keymap.set("n", "ca", vim.lsp.buf.code_action) - vim.keymap.set("n", "gr", vim.lsp.buf.references) - vim.keymap.set("n", "e", vim.diagnostic.open_float) - vim.keymap.set("n", "[d", vim.diagnostic.goto_prev) - vim.keymap.set("n", "]d", vim.diagnostic.goto_next) - vim.keymap.set("n", "q", vim.diagnostic.setloclist) - -- vim.keymap.segcjk("n", "", function() - -- vim.lsp.buf.format({ async = true }) - -- end) - end +local lsp = require("lspconfig") +-- Use an on_attach function to only map the following keys +-- after the language server attaches to the current buffer +local on_lsp_attach = function(_client, _bufnr) + vim.keymap.set("n", "gD", vim.lsp.buf.declaration) + vim.keymap.set("n", "gd", vim.lsp.buf.definition) + vim.keymap.set("n", "K", vim.lsp.buf.hover) + vim.keymap.set("n", "gi", vim.lsp.buf.implementation) + vim.keymap.set("n", "", vim.lsp.buf.signature_help) + vim.keymap.set("n", "D", vim.lsp.buf.type_definition) + vim.keymap.set("n", "rn", vim.lsp.buf.rename) + vim.keymap.set("n", "ca", vim.lsp.buf.code_action) + vim.keymap.set("n", "gr", vim.lsp.buf.references) + vim.keymap.set("n", "e", vim.diagnostic.open_float) + vim.keymap.set("n", "[d", vim.diagnostic.goto_prev) + vim.keymap.set("n", "]d", vim.diagnostic.goto_next) + vim.keymap.set("n", "q", vim.diagnostic.setloclist) + -- vim.keymap.segcjk("n", "", function() + -- vim.lsp.buf.format({ async = true }) + -- end) +end - -- Use a loop to conveniently call 'setup' on multiple servers and - -- map buffer local keybindings when the language server attaches - local servers = { - clangd = { - filetypes = { "c", "cpp" } - }, - dotls = {}, - eslint = {}, - gopls = {}, - jsonls = {}, - kotlin_language_server = {}, - lua_ls = { - settings = { - Lua = { - runtime = { version = "LuaJIT" }, - diagnostics = { - globals = { "vim" }, - unusedLocalExclude = { "_*" }, - }, - workspace = { - checkThirdParty = false, - library = vim.api.nvim_get_runtime_file("", true), - }, - telemetry = { enable = false }, - }, +-- Use a loop to conveniently call 'setup' on multiple servers and +-- map buffer local keybindings when the language server attaches +local servers = { + clangd = { + filetypes = { "c", "cpp" } + }, + dotls = {}, + eslint = {}, + gopls = {}, + jsonls = {}, + kotlin_language_server = {}, + lua_ls = { + settings = { + Lua = { + runtime = { version = "LuaJIT" }, + diagnostics = { + globals = { "vim" }, + unusedLocalExclude = { "_*" }, }, + workspace = { + checkThirdParty = false, + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { enable = false }, }, - pylsp = {}, - rust_analyzer = { - settings = { - ['rust-analyzer'] = { - cargo = { - features = "all" - } - } + }, + }, + pylsp = {}, + rust_analyzer = { + settings = { + ['rust-analyzer'] = { + cargo = { + features = "all" } - }, - taplo = {}, - texlab = {}, - tflint = {}, - tsserver = {}, - biome = { - cmd = { "pnpm", "exec", "biome", "lsp-proxy" } - }, - typst_lsp = {}, - } - - local capabilities = require("cmp_nvim_lsp").default_capabilities() - lsp.util.default_config = vim.tbl_deep_extend("force", lsp.util.default_config, { capabilities = capabilities }) - for server, add_to_config in pairs(servers) do - local config = { - on_attach = on_lsp_attach, - flags = { - debounce_text_changes = 150, - }, } - for k, v in pairs(add_to_config) do - config[k] = v - end - lsp[server].setup(config) - end - vim.cmd("LspStart") + } + }, + taplo = {}, + texlab = {}, + tflint = {}, + tsserver = {}, + biome = { + cmd = { "pnpm", "exec", "biome", "lsp-proxy" } + }, + typst_lsp = {}, +} - ---- lsp_lines - require("lsp_lines").setup() - -- Disable virtual_text since it's redundant due to lsp_lines. - vim.diagnostic.config({ - virtual_text = false, - }) +local capabilities = require("cmp_nvim_lsp").default_capabilities() +lsp.util.default_config = vim.tbl_deep_extend("force", lsp.util.default_config, { capabilities = capabilities }) +for server, add_to_config in pairs(servers) do + local config = { + on_attach = on_lsp_attach, + flags = { + debounce_text_changes = 150, + }, + } + for k, v in pairs(add_to_config) do + config[k] = v + end + lsp[server].setup(config) +end +vim.cmd("LspStart") - ---- lsp-timeout - -- vim.g["lsp-timeout-config"] = { - -- stopTimeout = 1000 * 60 * 5, -- ms, timeout before stopping all LSP servers - -- startTimeout = 1000 * 2, -- ms, timeout before restart - -- silent = false -- true to suppress notifications - -- } - end, +---- lsp_lines +require("lsp_lines").setup() +-- Disable virtual_text since it's redundant due to lsp_lines. +vim.diagnostic.config({ + virtual_text = false, }) +---- lsp-timeout +-- vim.g["lsp-timeout-config"] = { +-- stopTimeout = 1000 * 60 * 5, -- ms, timeout before stopping all LSP servers +-- startTimeout = 1000 * 2, -- ms, timeout before restart +-- silent = false -- true to suppress notifications +-- } + -- -- Auto format on save -- vim.api.nvim_create_autocmd({ "BufWritePre" }, { -- callback = function()