navigator.lua/lua/navigator/formatting.lua

37 lines
1.3 KiB
Lua
Raw Normal View History

2021-06-17 14:49:13 +00:00
-- https://github.com/wention/dotfiles/blob/master/.config/nvim/lua/config/lsp.lua
-- https://github.com/lukas-reineke/dotfiles/blob/master/vim/lua/lsp/handlers.lua
local mk_handler = require"navigator.util".mk_handler
2021-06-17 14:49:13 +00:00
return {
format_hdl = mk_handler(function(err, result, ctx, cfg) -- FIXME: bufnr is nil
2021-06-17 14:49:13 +00:00
if err ~= nil or result == nil then
return
end
local util = require "navigator.util"
local log = util.log
2021-06-17 14:49:13 +00:00
-- If the buffer hasn't been modified before the formatting has finished,
-- update the buffer
2021-09-23 00:41:28 +00:00
-- if not vim.api.nvim_buf_get_option(ctx.bufnr, 'modified') then
2021-09-27 00:55:43 +00:00
vim.defer_fn(function()
2021-09-23 00:41:28 +00:00
log('fmt callback')
2021-09-27 00:55:43 +00:00
if ctx.bufnr == vim.api.nvim_get_current_buf()
or not vim.api.nvim_buf_get_option(ctx.bufnr, 'modified') then
2021-06-17 14:49:13 +00:00
2021-09-27 00:55:43 +00:00
local view = vim.fn.winsaveview()
vim.lsp.util.apply_text_edits(result, ctx.bufnr)
vim.fn.winrestview(view)
-- FIXME: commented out as a workaround
-- if bufnr == vim.api.nvim_get_current_buf() then
vim.api.nvim_command('noautocmd :update')
-- Trigger post-formatting autocommand which can be used to refresh gitgutter
vim.api.nvim_command('silent doautocmd <nomodeline> User FormatterPost')
-- end
end
end, 100)
end)
2021-06-17 14:49:13 +00:00
}