thoughts
[ikiwiki.git] / doc / bugs / inline_page_not_updated_on_removal.mdwn
index 5e125f843f4041e34bf0ee38ab98218640bec842..7f5e49871abb0053e717b696e7c00e5dfeb2a3de 100644 (file)
@@ -2,12 +2,31 @@ If a page inlines some other page (such as this page by the bugs page),
 and the page is removed (such as by this page being linked to bugs/done),
 the inlining page is not updated to remove it.
 
-This only happens if the page is removed from the inlined globlist due to
+This only happens if the page is removed from the inlined pagespec due to
 a tag changing; the problem is that once the tag is changed, ikiwiki does
 not know that the page used to match before.
 
+Another example would be a pagespec that allowed only matching new pages:
+
+       newer(1 day)
+
+Obviously, the pages that matches are going to change, and again once they
+do, ikiwiki will no longer know that they matched before, so it won't know
+to remove them from a page that used that to inline them.
+
 To fix, seems I would need to record the actual list of pages that are
 currently included on an inline page, and do a comparison to see if any
-have changed. At first I thought, why not just add them to the dependencies
-explicitly, but that fails because the dependencies globlist fails to match
-when a negated expression like "!tag(bugs/done)" is matched.
+have changed. 
+
+At first I thought, why not just add them to the dependencies
+explicitly, but that failed because the dependencies GlobList failed to match
+when a negated expression like "!tag(bugs/done)" is matched. It is,
+however, doable with PageSpecs:
+
+       (real deps here) or (list of all currently inlined pages here)
+
+However, it's not really clear to me how to _remove_ inlined pages from the
+deps when they stop being inlined for whatever reason. So a separate list
+would be better.
+
+So this is blocked by [[todo/plugin_data_storage]] I suppose.