diff options
Diffstat (limited to 'lua/clever_f')
| -rw-r--r-- | lua/clever_f/feedback_service.lua | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/lua/clever_f/feedback_service.lua b/lua/clever_f/feedback_service.lua index 4d19e6d..b15d1c5 100644 --- a/lua/clever_f/feedback_service.lua +++ b/lua/clever_f/feedback_service.lua @@ -575,12 +575,11 @@ local function register_finalizers(service, record) return owned end -function FeedbackService:request_persistent(specification) - local request = self:build_persistent(specification) +local function materialize_persistent(service, request) if request.window == nil then - fail("persistent feedback window must identify its host window", 2) + fail("persistent feedback window must identify its host window", 3) end - local record = service_records[self] + local record = service_records[service] remove_target_overlays(record, request.window) request.identity = record.host:create_highlight({ group = "CleverFChar", @@ -599,12 +598,24 @@ function FeedbackService:request_persistent(specification) request.window, request.anchor.line ) - request.finalizers = register_finalizers(self, record) + request.finalizers = register_finalizers(service, record) local requests = record.persistent_requests requests[#requests + 1] = request return request end +function FeedbackService:request_persistent(specification) + return materialize_persistent(self, self:build_persistent(specification)) +end + +function FeedbackService:restore_primary(specification) + local restoration = self:build_primary_restoration(specification) + if restoration == nil then + return nil + end + return materialize_persistent(self, restoration) +end + function FeedbackService:persistent_requests() local result = {} for index, request in ipairs(service_records[self].persistent_requests) do |
