From d6134deb06cd737901c11a827a021c5f0b58abe6 Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Mon, 9 Sep 2024 14:45:14 -0500 Subject: fix(nvim): fix buffer flash/redraw on formatexpr --- nvim/.config/nvim/lua/plugins/conform.lua | 9 ++++----- nvim/.config/nvim/lua/tobyvin/keymaps.lua | 21 ++++++++------------- 2 files changed, 12 insertions(+), 18 deletions(-) (limited to 'nvim/.config') diff --git a/nvim/.config/nvim/lua/plugins/conform.lua b/nvim/.config/nvim/lua/plugins/conform.lua index 494c30d..8046a30 100644 --- a/nvim/.config/nvim/lua/plugins/conform.lua +++ b/nvim/.config/nvim/lua/plugins/conform.lua @@ -81,10 +81,6 @@ local M = { function M:init() U.formatexpr = function(...) - if not pcall(require, "fidget.progress") then - return require("conform").formatexpr(...) - end - local bufnr = vim.api.nvim_get_current_buf() local handle = require("fidget.progress").handle.create({ title = "Formatting", @@ -92,7 +88,7 @@ function M:init() lsp_client = { name = "conform" }, }) - local err = require("conform").formatexpr() + local err = require("conform").formatexpr(...) if err == 1 then handle.message = "Failed" else @@ -100,6 +96,9 @@ function M:init() end handle:finish() + + -- HACK: fixes text flashing/rerendering on buffers without a formatter + vim.cmd.sleep("1m") return err end diff --git a/nvim/.config/nvim/lua/tobyvin/keymaps.lua b/nvim/.config/nvim/lua/tobyvin/keymaps.lua index 84a71b2..caa7b49 100644 --- a/nvim/.config/nvim/lua/tobyvin/keymaps.lua +++ b/nvim/.config/nvim/lua/tobyvin/keymaps.lua @@ -23,21 +23,16 @@ vim.keymap.set("n", "grr", vim.lsp.buf.references, { desc = "vim.lsp.buf.referen vim.keymap.set("i", "", vim.lsp.buf.signature_help, { desc = "vim.lsp.buf.signature_help()" }) vim.keymap.set("o", "o", function() - local v_left = vim.api.nvim_buf_get_mark(0, "<") - local v_right = vim.api.nvim_buf_get_mark(0, ">") + local vl = vim.api.nvim_buf_get_mark(0, "<") + local vr = vim.api.nvim_buf_get_mark(0, ">") local cursor = vim.fn.winsaveview() vim.cmd.normal({ "ggVG", bang = true, mods = { keepjumps = true } }) - if cursor and not string.find(vim.v.operator, "[cd]") then - vim.defer_fn(function() - vim.fn.winrestview(cursor) - if pcall(vim.api.nvim_buf_set_mark, 0, "<", v_left[1], v_left[2], {}) then - pcall(vim.api.nvim_buf_set_mark, 0, "<", -1, -1, {}) - end - if pcall(vim.api.nvim_buf_set_mark, 0, ">", v_right[1], v_right[2], {}) then - pcall(vim.api.nvim_buf_set_mark, 0, ">", -1, -1, {}) - end - end, 0) - end + vim.schedule(function() + vim.fn.winrestview(cursor) + local _, max_lnum = unpack(vim.fn.getpos("$")) + vim.api.nvim_buf_set_mark(0, "<", math.min(vl[1], max_lnum), vl[2], {}) + vim.api.nvim_buf_set_mark(0, ">", math.min(vr[1], max_lnum), vr[2], {}) + end) end, { desc = "buffer text object" }) vim.keymap.set("i", "", function() -- cgit v1.2.3-70-g09d2