From 5ce0c3b70a58ca2da9084c1e1fbc9f52607fe066 Mon Sep 17 00:00:00 2001 From: Jackson Moore Date: Fri, 4 Sep 2026 12:50:23 +0200 Subject: Fix buffer-scoped event delivery --- lua/clever_f/testing/memory_host.lua | 7 ++++++- tests/run.lua | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lua/clever_f/testing/memory_host.lua b/lua/clever_f/testing/memory_host.lua index 8d92697..4c95721 100644 --- a/lua/clever_f/testing/memory_host.lua +++ b/lua/clever_f/testing/memory_host.lua @@ -909,9 +909,14 @@ end function MemoryHost:_deliver_event_now(name, payload) self:_record("event", { name = name, payload = payload }) local order = list_copy(self._event_registration_order) + local event_buffer = payload.buffer or self._buffer for _, identity in ipairs(order) do local registration = self._event_registrations[identity] - if registration.active and registration.name_set[name] then + local registration_buffer = registration.options.buffer + if registration.active + and registration.name_set[name] + and (registration_buffer == nil or registration_buffer == event_buffer) + then registration.callback(name, payload) end end diff --git a/tests/run.lua b/tests/run.lua index 38edcda..99674a5 100644 --- a/tests/run.lua +++ b/tests/run.lua @@ -6998,6 +6998,22 @@ test("Enabled eager events remove overlays and cancel timers", function() end end) +test("MemoryHost limits scoped events to their buffer", function() + local host = MemoryHost.new({ buffer = "buffer-1" }) + local deliveries = 0 + host:register_events("TextChanged", function() + deliveries = deliveries + 1 + end, { buffer = "buffer-1" }) + + host:deliver_event("TextChanged", {}) + same(1, deliveries) + host:set_buffer("buffer-2") + host:deliver_event("TextChanged", {}) + same(1, deliveries) + host:deliver_event("TextChanged", { buffer = "buffer-1" }) + same(2, deliveries) +end) + for _, item in ipairs(tests) do local ok, failure = xpcall(item.body, debug.traceback) if not ok then -- cgit v1.2.3