diff options
Diffstat (limited to 'lua/clever_f/acquisition_service.lua')
| -rw-r--r-- | lua/clever_f/acquisition_service.lua | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lua/clever_f/acquisition_service.lua b/lua/clever_f/acquisition_service.lua index a81c501..52b3949 100644 --- a/lua/clever_f/acquisition_service.lua +++ b/lua/clever_f/acquisition_service.lua @@ -20,6 +20,7 @@ M.RepeatedDirection = { SAME = "same", } M.PROMPT = "clever-f: " +M.PREVIOUS_INPUT_NOT_FOUND = "Previous input not found." local request_records = setmetatable({}, { __mode = "k" }) local result_records = setmetatable({}, { __mode = "k" }) @@ -142,6 +143,7 @@ function AcquisitionResult.new(request, options) previous_input_trigger = options.previous_input_trigger, previous_target_source = options.previous_target_source, cached_target = options.cached_target, + missing_previous_input = options.missing_previous_input == true, completed = outcome ~= nil or target ~= nil, } return result @@ -187,6 +189,7 @@ function TemporaryResourceScope.new(request, feedback) previous_input_trigger = nil, previous_target_source = nil, cached_target = nil, + missing_previous_input = false, outcome = nil, } return scope @@ -238,6 +241,13 @@ function TemporaryResourceScope:set_cached_target(context, target) return set_scope_resource(self, "cached_target", target) end +function TemporaryResourceScope:set_missing_previous_input(missing) + if type(missing) ~= "boolean" then + fail("missing previous-input state must be a Boolean", 2) + end + return set_scope_resource(self, "missing_previous_input", missing) +end + function TemporaryResourceScope:set_outcome(outcome) if not domain.ActionOutcome.is(outcome) then fail("temporary resource scope outcome must be an ActionOutcome", 2) @@ -639,6 +649,10 @@ function AcquisitionService:acquire(descriptor, context, position, count, macro_ scope:set_cached_target(source, cached_target) if cached_target ~= nil then target = cached_target + else + target = nil + scope:set_missing_previous_input(true) + record.host:emit_diagnostic("error", M.PREVIOUS_INPUT_NOT_FOUND) end end scope:set_resolved_target(target) @@ -647,6 +661,7 @@ function AcquisitionService:acquire(descriptor, context, position, count, macro_ previous_input_trigger = trigger, previous_target_source = scope.previous_target_source, cached_target = scope.cached_target, + missing_previous_input = scope.missing_previous_input, }) end |
