From 10e106b8194a4b472cf67b65d92fafd55b23b7e1 Mon Sep 17 00:00:00 2001 From: Gustaf Rydholm Date: Mon, 17 Jan 2022 18:30:51 +0100 Subject: Update lsp handler --- lua/config/lsp/handlers.lua | 51 +++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 13 deletions(-) (limited to 'lua') diff --git a/lua/config/lsp/handlers.lua b/lua/config/lsp/handlers.lua index 3dcf0dc..6c49978 100644 --- a/lua/config/lsp/handlers.lua +++ b/lua/config/lsp/handlers.lua @@ -51,37 +51,31 @@ local function lsp_highlight_document(client) if client.resolved_capabilities.document_highlight then vim.api.nvim_exec( [[ + let ftToIgnore = ['html'] augroup lsp_document_highlight autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - autocmd CursorMoved lua vim.lsp.buf.clear_references() + autocmd CursorHold if index(ftToIgnore, &ft) < 0 | lua vim.lsp.buf.document_highlight() + autocmd CursorMoved if index(ftToIgnore, &ft) < 0 | lua vim.lsp.buf.clear_references() augroup END ]], false ) end end - local function lsp_keymaps(bufnr) local opts = { noremap = true, silent = true } vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "lua vim.lsp.buf.implementation()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "", "lua vim.lsp.buf.signature_help()", opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "", "lua vim.lsp.buf.signature_help()", opts) -- vim.api.nvim_buf_set_keymap(bufnr, "n", "rn", "lua vim.lsp.buf.rename()", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) -- vim.api.nvim_buf_set_keymap(bufnr, "n", "ca", "lua vim.lsp.buf.code_action()", opts) -- vim.api.nvim_buf_set_keymap(bufnr, "n", "f", "lua vim.diagnostic.open_float()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", 'lua vim.diagnostic.goto_prev({ border = "rounded" })', opts) - vim.api.nvim_buf_set_keymap( - bufnr, - "n", - "gl", - 'lua vim.lsp.diagnostic.show_line_diagnostics({ border = "rounded" })', - opts - ) - vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", 'lua vim.diagnostic.goto_next({ border = "rounded" })', opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", 'lua vim.diagnostic.goto_prev({ border = "rounded" })', opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", 'lua vim.diagnostic.goto_next({ border = "rounded" })', opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "gl", "lua vim.diagnostic.open_float()", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "q", "lua vim.diagnostic.setloclist()", opts) vim.cmd([[ command! Format execute 'lua vim.lsp.buf.formatting()' ]]) end @@ -103,4 +97,35 @@ end M.capabilities = cmp_nvim_lsp.update_capabilities(capabilities) +function M.enable_format_on_save() + vim.cmd([[ + augroup format_on_save + autocmd! + autocmd BufWritePre * lua vim.lsp.buf.formatting_sync() + augroup end + ]]) + vim.notify("Enabled format on save") +end + +function M.disable_format_on_save() + M.remove_augroup("format_on_save") + vim.notify("Disabled format on save") +end + +function M.toggle_format_on_save() + if vim.fn.exists("#format_on_save#BufWritePre") == 0 then + M.enable_format_on_save() + else + M.disable_format_on_save() + end +end + +function M.remove_augroup(name) + if vim.fn.exists("#" .. name) == 1 then + vim.cmd("au! " .. name) + end +end + +vim.cmd([[ command! LspToggleAutoFormat execute 'lua require("user.lsp.handlers").toggle_format_on_save()' ]]) + return M -- cgit v1.2.3-70-g09d2