-
Notifications
You must be signed in to change notification settings - Fork 115
Description
Currently, the getReferringTiddlers
method of store
(1) (which is used to provide references (2)) uses links provided by Tiddler.prototype.changed
(3) (through TiddlyWiki.prototype.reverseLookup
(4)). The changed
method recognizes wikiwords, bracketed links etc via the config.textPrimitives.tiddlerAnyLinkRegExp
and config.textPrimitives.tiddlerForcedLinkRegExp
(5) RegExps. The latter don't distinguish [[some tiddler##section]]
link-like expressions which can be used in tiddler
and other macros. This causes the situation when some tiddler
's references don't show the tiddler where the transclusion is used (if there's a tiddler named some tiddler##section
then its references list shows the macro-containing tiddler).
So, to fix this, either changed
method or getReferringTiddlers
method sholud be changed. It seems reasonable to change changed
method by adding a helper inside it:
var getTiddlerName = function(linkText) {
var pos = linkText.indexOf(config.textPrimitives.sectionSeparator);
if(pos == -1)
pos = linkText.indexOf(config.textPrimitives.sliceSeparator);
if(pos != -1)
return linkText.substr(0,pos);
return linkText;
}
and use it each time before this.links.pushUnique
(like this: this.links.pushUnique(getTiddlerName(...))
). This way, tiddler.links
will always contain only tiddler names, not sections/slices and the references lists (as well as missing or orphans lists) will be correct.
[1] https://github.com/TiddlyWiki/tiddlywiki/blob/master/js/TiddlyWiki.js#L511
[2] https://github.com/TiddlyWiki/tiddlywiki/blob/master/js/Commands.js#L75
[3] https://github.com/TiddlyWiki/tiddlywiki/blob/master/js/Tiddler.js#L126
[4] https://github.com/TiddlyWiki/tiddlywiki/blob/master/js/TiddlyWiki.js#L520
[5] https://github.com/TiddlyWiki/tiddlywiki/blob/master/js/Config.js#L192