···8484 assert(not ismain, "must be called from a coroutine")
8585 self.co = co
86868787+ vim.api.nvim_exec_autocmds("User", { pattern = "ArtioEnter" })
8888+8789 local result = coroutine.yield()
88908991 self:close()
90929191- if result == action_enum.cancel or result ~= action_enum.accept then
9292- if self.on_quit then
9393- self.on_quit()
9393+ while true do
9494+ if result == action_enum.cancel or result ~= action_enum.accept then
9595+ if self.on_quit then
9696+ self.on_quit()
9797+ end
9898+ break
9499 end
9595- return
9696- end
971009898- local current = self.matches[self.idx] and self.matches[self.idx][1]
9999- if not current then
100100- return
101101- end
101101+ local current = self.matches[self.idx] and self.matches[self.idx][1]
102102+ if not current then
103103+ break
104104+ end
102105103103- local item = self.items[current]
104104- if item then
105105- self.on_close(item.v, item.id)
106106+ local item = self.items[current]
107107+ if item then
108108+ self.on_close(item.v, item.id)
109109+ end
110110+111111+ break
106112 end
113113+114114+ vim.api.nvim_exec_autocmds("User", { pattern = "ArtioLeave" })
107115 end)()
108116end
109117