summaryrefslogtreecommitdiff
path: root/lua/clever_f/repeat_resolver.lua
diff options
context:
space:
mode:
authorJackson Moore <jacksonmoore@tuta.io>2026-09-04 11:11:22 +0200
committerJackson Moore <jacksonmoore@tuta.io>2026-09-04 11:11:22 +0200
commitb544bbdf40214e9601aaff374b9f1ee2723e2189 (patch)
tree6a9e9ebdf96d85bfc2301187ed5ef9ffdc49962e /lua/clever_f/repeat_resolver.lua
parent4c3258c8c8ce623a9b6381bd408792d3f713e54a (diff)
Verify reverse request matrix
Diffstat (limited to 'lua/clever_f/repeat_resolver.lua')
-rw-r--r--lua/clever_f/repeat_resolver.lua22
1 files changed, 13 insertions, 9 deletions
diff --git a/lua/clever_f/repeat_resolver.lua b/lua/clever_f/repeat_resolver.lua
index 6b2b2f6..5f6a160 100644
--- a/lua/clever_f/repeat_resolver.lua
+++ b/lua/clever_f/repeat_resolver.lua
@@ -198,22 +198,26 @@ local function sampled_fixed_direction(resolver)
return fixed
end
-function M.primary_direction(stored_descriptor, pressed_key, fix_key_direction)
+function M.reverse_request(stored_descriptor, pressed_key, fix_key_direction)
local stored = domain.Descriptor.from_string(stored_descriptor)
local pressed = domain.Descriptor.from_string(pressed_key)
if type(fix_key_direction) ~= "boolean" then
fail("fix_key_direction must be a Boolean", 2)
end
- if not fix_key_direction then
- if domain.Descriptor.is_lowercase(pressed) then
- return stored
- end
- return domain.Descriptor.swap(stored)
+
+ local reverse = domain.Descriptor.is_uppercase(pressed)
+ if fix_key_direction and domain.Descriptor.is_uppercase(stored) then
+ reverse = not reverse
end
- if domain.Descriptor.is_lowercase(pressed) then
- return domain.Descriptor.lowercase(stored)
+ return reverse
+end
+
+function M.primary_direction(stored_descriptor, pressed_key, fix_key_direction)
+ local stored = domain.Descriptor.from_string(stored_descriptor)
+ if M.reverse_request(stored, pressed_key, fix_key_direction) then
+ return domain.Descriptor.swap(stored)
end
- return domain.Descriptor.uppercase(stored)
+ return stored
end
M.resolve_primary_direction = M.primary_direction