summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustaf Rydholm <gustaf.rydholm@gmail.com>2022-01-17 18:30:51 +0100
committerGustaf Rydholm <gustaf.rydholm@gmail.com>2022-01-17 18:30:51 +0100
commit10e106b8194a4b472cf67b65d92fafd55b23b7e1 (patch)
tree5a929d2abfc89599836d120720c82045ba90cae7
parent473629b4d6e0cbec1c2c6d78f96cef8e85e2e044 (diff)
Update lsp handler
-rw-r--r--lua/config/lsp/handlers.lua51
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