diff options
Diffstat (limited to 'lua/clever_f/domain.lua')
| -rw-r--r-- | lua/clever_f/domain.lua | 30 |
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 |
