From a45503b95752055e19186b75a4f9874cd39aa834 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 22 Oct 2025 08:40:02 +0200 Subject: [PATCH] feat(picker.finder): added assertions that finder is still running when receiving results --- lua/snacks/picker/core/finder.lua | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lua/snacks/picker/core/finder.lua b/lua/snacks/picker/core/finder.lua index 1144b993..d5bb7911 100644 --- a/lua/snacks/picker/core/finder.lua +++ b/lua/snacks/picker/core/finder.lua @@ -141,6 +141,8 @@ function M:run(picker) return end + local running = true + collectgarbage("stop") -- moar speed ---@cast finder snacks.picker.finder.async ---@diagnostic disable-next-line: await-in-sync @@ -151,6 +153,18 @@ function M:run(picker) if #self.items >= limit then return self.task:abort() end + if not running then + Snacks.debug.backtrace({ + "Finder yielded after done. This is a bug.", + ("- aborted: `%s`"):format(self.task:aborted() or false), + "", + "# Backtrace", + }, { + level = vim.log.levels.ERROR, + title = "Snacks Picker Finder", + }) + return + end add(item) picker.matcher.task:resume() yield = yield or Async.yielder(YIELD_FIND) @@ -162,6 +176,7 @@ function M:run(picker) picker.matcher.task:resume() picker:update() end + running = false end) end