51 lines
2.2 KiB
Lua
51 lines
2.2 KiB
Lua
require("mimu.set")
|
|
require("mimu.remap")
|
|
require("mimu.lazy")
|
|
|
|
local augroup = vim.api.nvim_create_augroup
|
|
local MimuGroup = augroup("mimu", {})
|
|
|
|
local autocmd = vim.api.nvim_create_autocmd
|
|
|
|
vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]]
|
|
|
|
autocmd("LspAttach", {
|
|
group = MimuGroup,
|
|
callback = function(e)
|
|
local opts = { buffer = e.buf }
|
|
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
|
|
vim.keymap.set("n", "gr", function() vim.lsp.buf.references() end, opts)
|
|
vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts)
|
|
vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts)
|
|
vim.keymap.set("n", "<leader>vd", function() vim.lsp.diagnostic.open_float() end, opts)
|
|
-- vim.keymap.set("n", "[d", function() vim.lsp.diagnostic.goto_next() end, opts)
|
|
-- vim.keymap.set("n", "]d", function() vim.lsp.diagnostic.goto_prev() end, opts)
|
|
vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts)
|
|
vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts)
|
|
vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
|
|
end
|
|
})
|
|
|
|
autocmd("BufWritePre", {
|
|
pattern = "*.go",
|
|
callback = function()
|
|
local params = vim.lsp.util.make_range_params()
|
|
params.context = { only = { "source.organizeImports" } }
|
|
-- buf_request_sync defaults to a 1000ms timeout. Depending on your
|
|
-- machine and codebase, you may want longer. Add an additional
|
|
-- argument after params if you find that you have to write the file
|
|
-- twice for changes to be saved.
|
|
-- E.g., vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
|
|
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params)
|
|
for cid, res in pairs(result or {}) do
|
|
for _, r in pairs(res.result or {}) do
|
|
if r.edit then
|
|
local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16"
|
|
vim.lsp.util.apply_workspace_edit(r.edit, enc)
|
|
end
|
|
end
|
|
end
|
|
vim.lsp.buf.format({ async = false })
|
|
end
|
|
})
|