summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/clever_f/feedback_service.lua12
-rw-r--r--tests/run.lua23
2 files changed, 35 insertions, 0 deletions
diff --git a/lua/clever_f/feedback_service.lua b/lua/clever_f/feedback_service.lua
index f066a08..80824af 100644
--- a/lua/clever_f/feedback_service.lua
+++ b/lua/clever_f/feedback_service.lua
@@ -124,6 +124,18 @@ function FeedbackService:evaluate_feature_links()
source = "colorscheme",
applied = false,
}
+ else
+ record.host:define_highlight_group(
+ group,
+ { link = rule.target },
+ { default = true }
+ )
+ results[group] = {
+ group = group,
+ target = rule.target,
+ source = "fallback",
+ applied = true,
+ }
end
end
end
diff --git a/tests/run.lua b/tests/run.lua
index e1c7e78..b3ba0dd 100644
--- a/tests/run.lua
+++ b/tests/run.lua
@@ -4335,6 +4335,29 @@ test("Feature link evaluation preserves colorscheme CleverF groups", function()
end
end)
+test("Missing feature groups receive fallback links", function()
+ local host = MemoryHost.new()
+ local feedback = feedback_service.new(host)
+
+ local results = feedback:evaluate_feature_links()
+ same("fallback", results.CleverFCursor.source)
+ truthy(results.CleverFCursor.applied)
+ local groups = host:highlight_groups()
+ same(results.CleverFCursor.target, groups.CleverFCursor.link)
+
+ local fallback_definition
+ for _, operation in ipairs(host:operations()) do
+ if operation.operation == "define_highlight_group"
+ and operation.name == "CleverFCursor"
+ then
+ fallback_definition = operation
+ end
+ end
+ truthy(fallback_definition ~= nil)
+ truthy(fallback_definition.options.default)
+ same(nil, fallback_definition.options.force)
+end)
+
for _, item in ipairs(tests) do
local ok, failure = xpcall(item.body, debug.traceback)
if not ok then