From 5f7ed814c727f9f1fc0265d46013b0f9c91e8d61 Mon Sep 17 00:00:00 2001 From: Jackson Moore Date: Fri, 4 Sep 2026 11:10:30 +0200 Subject: Resolve fixed lowercase direction --- lua/clever_f/repeat_resolver.lua | 3 +++ tests/run.lua | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lua/clever_f/repeat_resolver.lua b/lua/clever_f/repeat_resolver.lua index 64c8b56..f897179 100644 --- a/lua/clever_f/repeat_resolver.lua +++ b/lua/clever_f/repeat_resolver.lua @@ -210,6 +210,9 @@ function M.primary_direction(stored_descriptor, pressed_key, fix_key_direction) end return domain.Descriptor.swap(stored) end + if domain.Descriptor.is_lowercase(pressed) then + return domain.Descriptor.lowercase(stored) + end return nil end diff --git a/tests/run.lua b/tests/run.lua index d88de73..7a77ea2 100644 --- a/tests/run.lua +++ b/tests/run.lua @@ -4024,6 +4024,24 @@ test("Relative upper-case keys swap the stored descriptor", function() end end) +test("Fixed lower-case keys use the lower-case stored form", function() + fresh_sequence_state() + local host = MemoryHost.new({ + configuration = { fix_key_direction = true }, + }) + local resolver = repeat_resolver.new({ policy = policy.new(host) }) + + for _, stored in ipairs({ "f", "F", "t", "T" }) do + for _, pressed in ipairs({ "f", "t" }) do + same( + domain.Descriptor.lowercase(stored), + resolver:resolve_primary_direction(stored, pressed), + stored .. "/" .. pressed + ) + end + end +end) + for _, item in ipairs(tests) do local ok, failure = xpcall(item.body, debug.traceback) if not ok then -- cgit v1.2.3