From 2ac8d77575926d5c22f1d13f3e48000d579277e3 Mon Sep 17 00:00:00 2001 From: shadmansaleh <13149513+shadmansaleh@users.noreply.github.com> Date: Tue, 14 Feb 2023 22:59:11 +0600 Subject: [PATCH] fix: High cpu usage on O-PENDING mode Mitigation for #967 This happens primarily because of https://github.com/neovim/neovim/issues/22263 To prevent this from affecting lualine. Mode changed event for op-pending mode no longer gets scheduled. As a side effect lualine no longer properly refreshes upon switching to op-pending mode. --- lua/lualine.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lua/lualine.lua b/lua/lualine.lua index a7db85f..05ff719 100644 --- a/lua/lualine.lua +++ b/lua/lualine.lua @@ -337,7 +337,15 @@ local function refresh(opts) -- https://github.com/nvim-lualine/lualine.nvim/issues/755 -- https://github.com/neovim/neovim/issues/19472 -- https://github.com/nvim-lualine/lualine.nvim/issues/791 - if opts.trigger == 'autocmd' and vim.v.event.new_mode ~= 'c' then + if opts.trigger == 'autocmd' and + vim.v.event.new_mode ~= 'c' and + -- scheduling in op-pending mode seems to call the callback forever. + -- so this is restricted in op-pending mode. + -- https://github.com/neovim/neovim/issues/22263 + -- https://github.com/nvim-lualine/lualine.nvim/issues/967 + -- note this breaks mode component while switching to op-pending mode + not vim.tbl_contains({'no', 'nov', 'noV'}, vim.v.event.new_mode) and + not vim.tbl_contains({'no', 'nov', 'noV'}, vim.v.event.old_mode) then opts.trigger = 'autocmd_redired' vim.schedule(function() M.refresh(opts)