summaryrefslogtreecommitdiff
path: root/lua/clever_f/feedback_service.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/clever_f/feedback_service.lua')
-rw-r--r--lua/clever_f/feedback_service.lua21
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