minimal extui fuzzy finder for neovim

fix(view): scope opts to ext buffer/window

+35 -14
+35 -14
lua/artio/view.lua
··· 136 136 137 137 function View:setopts() 138 138 local opts = { 139 - eventignorewin = "all,-FileType,-InsertCharPre,-TextChangedI,-CursorMovedI", 140 - winhighlight = "Normal:ArtioNormal," .. ext_winhl, 141 - laststatus = self.picker.win.hidestatusline and 0 or nil, 142 - filetype = "artio-picker", 143 - buftype = "prompt", 144 - 145 - autocomplete = false, 146 - signcolumn = "no", 147 - wrap = false, 139 + win = { 140 + eventignorewin = "all,-FileType,-InsertCharPre,-TextChangedI,-CursorMovedI", 141 + winhighlight = "Normal:ArtioNormal," .. ext_winhl, 142 + signcolumn = "no", 143 + wrap = false, 144 + }, 145 + buf = { 146 + filetype = "artio-picker", 147 + buftype = "prompt", 148 + autocomplete = false, 149 + }, 150 + g = { 151 + laststatus = self.picker.win.hidestatusline and 0 or nil, 152 + }, 148 153 } 149 154 155 + ---@type table<'win'|'buf'|'g',table<string,any>> 150 156 self.opts = {} 151 157 152 - for name, value in pairs(opts) do 153 - self.opts[name] = vim.api.nvim_get_option_value(name, { scope = "local" }) 154 - vim.api.nvim_set_option_value(name, value, { scope = "local" }) 158 + for level, o in pairs(opts) do 159 + self.opts[level] = self.opts[level] or {} 160 + local props = { 161 + scope = level == "g" and "global" or "local", 162 + buf = level == "buf" and ext.bufs.cmd or nil, 163 + win = level == "win" and ext.wins.cmd or nil, 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 155 170 end 156 171 end 157 172 158 173 function View:revertopts() 159 - for name, value in pairs(self.opts) do 160 - vim.api.nvim_set_option_value(name, value, { scope = "local" }) 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 161 182 end 162 183 end 163 184