web commit by JoshTriplett
[ikiwiki] / doc / bugs / inline_page_not_updated_on_removal.mdwn
1 If a page inlines some other page (such as this page by the bugs page), 
2 and the page is removed (such as by this page being linked to bugs/done),
3 the inlining page is not updated to remove it.
4
5 This only happens if the page is removed from the inlined pagespec due to
6 a tag changing; the problem is that once the tag is changed, ikiwiki does
7 not know that the page used to match before.
8
9 Another example would be a pagespec that allowed only matching new pages:
10
11         newer(1 day)
12
13 Obviously, the pages that matches are going to change, and again once they
14 do, ikiwiki will no longer know that they matched before, so it won't know
15 to remove them from a page that used that to inline them.
16
17 To fix, seems I would need to record the actual list of pages that are
18 currently included on an inline page, and do a comparison to see if any
19 have changed. 
20
21 At first I thought, why not just add them to the dependencies
22 explicitly, but that failed because the dependencies GlobList failed to match
23 when a negated expression like "!tag(bugs/done)" is matched. It is,
24 however, doable with PageSpecs:
25
26         (real deps here) or (list of all currently inlined pages here)
27
28 However, it's not really clear to me how to _remove_ inlined pages from the
29 deps when they stop being inlined for whatever reason. So a separate list
30 would be better.
31
32 So this is blocked by [[todo/plugin_data_storage]] I suppose.