minimal extui fuzzy finder for neovim

fix(view): merge opts fn

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