diff options
author | Gustaf Rydholm <gustaf.rydholm@gmail.com> | 2022-01-17 18:30:51 +0100 |
---|---|---|
committer | Gustaf Rydholm <gustaf.rydholm@gmail.com> | 2022-01-17 18:30:51 +0100 |
commit | 10e106b8194a4b472cf67b65d92fafd55b23b7e1 (patch) | |
tree | 5a929d2abfc89599836d120720c82045ba90cae7 | |
parent | 473629b4d6e0cbec1c2c6d78f96cef8e85e2e044 (diff) |
Update lsp handler
-rw-r--r-- | lua/config/lsp/handlers.lua | 51 |
1 files changed, 38 insertions, 13 deletions
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! * <buffer> - autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight() - autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references() + autocmd CursorHold <buffer> if index(ftToIgnore, &ft) < 0 | lua vim.lsp.buf.document_highlight() + autocmd CursorMoved <buffer> 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", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts) -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts) -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts) -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>f", "<cmd>lua vim.diagnostic.open_float()<CR>", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts) - vim.api.nvim_buf_set_keymap( - bufnr, - "n", - "gl", - '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics({ border = "rounded" })<CR>', - opts - ) - vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts) + vim.api.nvim_buf_set_keymap(bufnr, "n", "gl", "<cmd>lua vim.diagnostic.open_float()<CR>", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>q", "<cmd>lua vim.diagnostic.setloclist()<CR>", 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 |