summaryrefslogtreecommitdiff
path: root/lua/clever_f/domain.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/clever_f/domain.lua')
-rw-r--r--lua/clever_f/domain.lua30
1 files changed, 28 insertions, 2 deletions
diff --git a/lua/clever_f/domain.lua b/lua/clever_f/domain.lua
index d7ba040..4d21d56 100644
--- a/lua/clever_f/domain.lua
+++ b/lua/clever_f/domain.lua
@@ -1173,11 +1173,18 @@ local ExplicitRepeatRequest = {}
M.ExplicitRepeatRequest = ExplicitRepeatRequest
register_type("ExplicitRepeatRequest", ExplicitRepeatRequest, function(data)
+ if data.neutral then
+ return "explicit-repeat:neutral"
+ end
return "explicit-repeat:" .. data.descriptor.value
end, function(left, right)
- return left.descriptor == right.descriptor and left.target == right.target
+ return left.neutral == right.neutral
+ and left.descriptor == right.descriptor
+ and left.target == right.target
end)
+local neutral_explicit_repeat_request
+
function ExplicitRepeatRequest.new(descriptor, target)
if ExplicitRepeatRequest.is(descriptor) and target == nil then
return descriptor
@@ -1192,15 +1199,34 @@ function ExplicitRepeatRequest.new(descriptor, target)
})
end
+function ExplicitRepeatRequest.neutral()
+ if neutral_explicit_repeat_request == nil then
+ neutral_explicit_repeat_request = new_record("ExplicitRepeatRequest", {
+ descriptor = nil,
+ effective_descriptor = nil,
+ target = nil,
+ neutral = true,
+ })
+ end
+ return neutral_explicit_repeat_request
+end
+
function ExplicitRepeatRequest.is(value)
return is_record(value, "ExplicitRepeatRequest")
end
+function ExplicitRepeatRequest:is_neutral()
+ return self.neutral
+end
+
function ExplicitRepeatRequest:to_table()
+ if self.neutral then
+ return { neutral = true }
+ end
return {
descriptor = self.descriptor.value,
target = self.target:to_table(),
- neutral = self.neutral,
+ neutral = false,
}
end