minimal extui fuzzy finder for neovim

fix(view): merge opts fn

+11 -21
+11 -21
lua/artio/view.lua
··· 27 ---@class artio.View 28 ---@field picker artio.Picker 29 ---@field closed boolean 30 ---@field win artio.View.win 31 ---@field preview_win integer 32 local View = {} ··· 37 return setmetatable({ 38 picker = picker, 39 closed = false, 40 win = { 41 height = 0, 42 }, ··· 134 135 local ext_winhl = "Search:,CurSearch:,IncSearch:" 136 137 - function View:setopts() 138 local opts = { 139 win = { 140 eventignorewin = "all,-FileType,-InsertCharPre,-TextChangedI,-CursorMovedI", ··· 152 }, 153 } 154 155 - ---@type table<'win'|'buf'|'g',table<string,any>> 156 - self.opts = {} 157 - 158 for level, o in pairs(opts) do 159 self.opts[level] = self.opts[level] or {} 160 local props = { ··· 164 } 165 166 for name, value in pairs(o) do 167 - self.opts[level][name] = vim.api.nvim_get_option_value(name, props) 168 - vim.api.nvim_set_option_value(name, value, props) 169 - end 170 - end 171 - end 172 - 173 - function View:revertopts() 174 - for level, o in pairs(self.opts) do 175 - for name, value in pairs(o) do 176 - vim.api.nvim_set_option_value(name, value, { 177 - scope = level == "g" and "global" or "local", 178 - buf = level == "buf" and ext.bufs.cmd or nil, 179 - win = level == "win" and ext.wins.cmd or nil, 180 - }) 181 end 182 end 183 end ··· 203 ext.check_targets() 204 205 self.prev_show = cmdline.cmdline_show 206 - 207 - self.augroup = vim.api.nvim_create_augroup("artio:view", {}) 208 209 vim.schedule(function() 210 vim.api.nvim_create_autocmd({ "CmdlineLeave", "ModeChanged" }, { ··· 289 vim.cmd.stopinsert() 290 291 -- prepare state 292 - self:revertopts() 293 294 -- reset state 295 self:clear()
··· 27 ---@class artio.View 28 ---@field picker artio.Picker 29 ---@field closed boolean 30 + ---@field opts table<'win'|'buf'|'g',table<string,any>> 31 ---@field win artio.View.win 32 ---@field preview_win integer 33 local View = {} ··· 38 return setmetatable({ 39 picker = picker, 40 closed = false, 41 + opts = {}, 42 win = { 43 height = 0, 44 }, ··· 136 137 local ext_winhl = "Search:,CurSearch:,IncSearch:" 138 139 + ---@param restore? boolean 140 + function View:setopts(restore) 141 local opts = { 142 win = { 143 eventignorewin = "all,-FileType,-InsertCharPre,-TextChangedI,-CursorMovedI", ··· 155 }, 156 } 157 158 for level, o in pairs(opts) do 159 self.opts[level] = self.opts[level] or {} 160 local props = { ··· 164 } 165 166 for name, value in pairs(o) do 167 + if restore then 168 + vim.api.nvim_set_option_value(name, self.opts[level][name], props) 169 + else 170 + self.opts[level][name] = vim.api.nvim_get_option_value(name, props) 171 + vim.api.nvim_set_option_value(name, value, props) 172 + end 173 end 174 end 175 end ··· 195 ext.check_targets() 196 197 self.prev_show = cmdline.cmdline_show 198 199 vim.schedule(function() 200 vim.api.nvim_create_autocmd({ "CmdlineLeave", "ModeChanged" }, { ··· 279 vim.cmd.stopinsert() 280 281 -- prepare state 282 + self:setopts(true) 283 284 -- reset state 285 self:clear()