aboutsummaryrefslogtreecommitdiff
path: root/doc/bugs/inline_page_not_updated_on_removal.mdwn
blob: 7f5e49871abb0053e717b696e7c00e5dfeb2a3de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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 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 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.