Your code works fine when I put it in a new tiddler on tiddlywiki.com. Has
your screen width perhaps dropped below 1440px?
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send
Hi Jeremy,
Wishing you a rapid recovery!
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send an email
to tiddlywiki+unsubscr...@googlegroups.com.
To post to this group, send
To get unique values only, use *each*:
$list filter=[each[topic1]get[topic1]] [each[topic2]get[topic2]]
[each[topic3]get[topic3]] +[sort[title]]/
Most filter operators remove duplicates automatically, but *get* doesn't.
Duplicates are automatically removed from a sequence of filter runs, such
Hi Måns,
I suspect the only way to achieve this at present is to use a JavaScript
macro.
You can generate the desired string via *$list
filter=[list[ThisTiddler!!listfield]]{{!!title}} /$list*. And if you
define a macro *m* with that as its value, you can then say *$macrocall
$name=m
This is a fascinating topic. I've raised issue 1538
https://github.com/Jermolene/TiddlyWiki5/issues/1538 for it on GitHub.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send
Hi Måns,
It's all a question of what's parsed when. Macros are just a simple text
substitution system. They know nothing about WikiText: the only special
notation they know about is *$param$* and *$(var)$*. And their results are
not parsed as WikiText either, unless they happen to be returned
Hi Bill,
Use the technique shown at http://tiddlywiki.com/#ExternalImages.
You need a special tiddler to represent the PDF within your wiki. Let's say
this tiddler is called *CoolPDF*. Set its type to *application/pdf*, and
add a field called *_canonical_uri* (with an initial underscore) with
Hi Alan,
Macro parameters are *not* parsed as WikiText until they are returned to a
WikiText context. They're just inert strings of characters. This means your
JavaScript is receiving strings that start with *{{* and end with *}}*.
Only once the macro call has returned will its result be
Hi Henry,
Filters can indeed be used in the Advanced Search tiddler, but only on its
Filter tab. That tab is an excellent way to learn about filters.
(The Standard tab, System tab and Shadows tab of Advanced Search simply
search for text in those three categories of tiddlers.)
You may like to
Very true, although it's then harder to make the address be a link.
And you wouldn't need the angle brackets – they're really only there to
delimit the address in ordinary prose. The typographical styling of the
code element would be a sufficient delimiter.
– æ
--
You received this message
The hard line breaks are not actually relevant: you can get the same
effect without them.
When a sequence of letters and digits (and hyphens and dollar signs)
immediately follows a left angle bracket, TiddlyWiki treats this as the
start of an opening tag.
*michaelabcde/michael* thus gets
Hi Erwan,
Feel free to index http://ae-railroad.tiddlyspot.com/ if you wish, although
there may be little point, as that plugin will be directly documented on
tiddlywiki.com in a few days' time when 5.1.8 is released.
The other tiddlyspots I've published are temporary and not worth indexing.
Hi Michael,
Is there a way to make the text in a single box (single railroad car?)
multi-line?
I'd asked myself the same question, but the answer is: not without
rewriting most of the underlying library
https://github.com/tabatkins/railroad-diagrams.
What you *can* do is break a large
Hi Dmitry,
There's a *new journal* button in the Tools tab of the sidebar. It creates
a new tiddler with today's date as its title. The Control Panel lets you adjust
the exact format http://tiddlywiki.com/#Creating%20journal%20tiddlers of
the title.
Putting *{{!!created}}* in the title
Are you sure about that?
Positive. If you don't believe me, look at the code in filters/list.js.
It starts by retrieving an array of titles from the list field. *list*
without an exclamation mark simply returns that array. But negated *list*
iterates over its input titles, i.e. *tag[foo]* in
A very interesting link – thank you, Mario.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send an email
to tiddlywiki+unsubscr...@googlegroups.com.
To post to this group,
I guess it was not intended to operate on a list of tiddlers.
It's implemented like any other filter operator, taking an input list and
producing an output list.
I think it should rather be *[has[type]each[type]get[type]*... not
returning blanks.
But *get* never returns blanks, although
One othe related oddity of the *list* operator is that it behaves very
differently when negated:
* *[list[t!!f]]* is absolute, and outputs the titles listed in field *f* of
tiddler *t*
* *[tag[foo]!list[t!!f]]* is relative, and outputs any foo-tagged titles
that are not listed in field *f* of
In fact, the concept of unpacking a list into an array is so useful that
maybe
it deserves its own unsuffixed operator.
And come to think of it, that operator already exists: it's
*list[tiddler!!field]*. What's needed is the reverse of that, so that the
parameter (*tiddler!!field*) can be
Hi Alan,
It's interesting you mention this, because I was on the verge of posting
something to the Dev group about this yesterday.
The *get* operator will output a list of the values in a specified field in
its input tiddlers: *[tag[Example]get[my-field]]*. But the output can
contain
Interesting.
Why is *get* special, such that *[get[type]]* doesn't mean
*[each[type]get[type]*?
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send an email
to
*addTiddler* appears to also update existing tiddlers, and only those
fields handed down in the fields object. When a field is explicitly
declared as *undefined* or *null*, it is deleted.
*addTiddler* either just accepts its parameter as a tiddler, or it
constructs a new tiddler using its
I couldn't quite decipher how *addTiddler *circumvents this.
I don't think it does. The tiddler constructor function freezes the
tiddler's map of fields and the value of each field. *addTiddler*
constructs an entirely new tiddler and slots it into the wiki's map of
tiddlers, replacing the
Anyhow, updating a tiddler essentially means deleting the old one and
overwriting it with another.
Yes. The *setText* method of the wiki object is perhaps the simplest case
of this.
Would be good if there were some instructions on how to handle
*getCreationFields
*and
There are coding conventions in TW which to the beginner JS programmer
may find puzzling. For example in Tobias' example plugin we have a line
which says tid = tid
The actual line is:
*tid = tid || GettingStarted*
That's conceptually similar to the less puzzling line:
*tid = tid + 1*
Hi Jon,
You could enclose {{mytiddler}} in a div and then style that.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send an email
to tiddlywiki+unsubscr...@googlegroups.com.
Hi Mat,
I think Jeremy talked about JSONP in one of the three or four most recent
hangouts. I recall him describing it as really horrible or words to that
effect :)
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this
Hi Mat,
If it hadn't been for the space between } } which I initially assumed was
a typo, I wouldn't have figured out what is happening.
Yes, it's cryptic stuff. I agree that any documentation that uses this
example should explain it a bit more.
– æ
--
You received this message because you
Hi Tobias,
I'd be inclined to make the same suggestion as I have to Danielo...
I was trying to follow the instructions at
http://tiddlywiki.com/#PluginMechanism: *Plugin authors are encouraged to
provide special information and documentation tiddlers that TiddlyWiki can
include as plugin
Also, this is TW5, not TWC.
Sorry, how stupid of me! All I can say is: it was late at night when I
posted.
I'll start a new TW5 thread for any further discussion that would have
appeared in this one.
– æ
--
You received this message because you are subscribed to the Google Groups
You may not have seen this thread:
https://groups.google.com/forum/#!topic/TiddlyWiki/b57cfTZoI5w
… because I goofed and typed [TWC] instead of [TW5] in the title.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this
Picking up on Tobias's comment at
https://groups.google.com/forum/#!topic/TiddlyWiki/b57cfTZoI5w:
Maybe the documentation for plugins in Jermolene's repository (i.e. plugins
that are version-linked to the core, such as KaTeX and railroad) should be
held centrally on tiddlywiki.com.
In the
Out of interest, I've just tried minifying a couple of large JS files from
the core (boot.js and wiki,js) and a couple of small ones (addprefix.js and
textparser.js).
The result in each case was just under half the size of the original file.
– æ
--
You received this message because you are
By the way, this discussion should really be in the TW5 thread I created
after it was pointed out that I'd labelled this one TWC…
https://groups.google.com/forum/#!topic/tiddlywiki/p-xfq5Jxq4I
I suggest we move over there.
– æ
--
You received this message because you are subscribed to the
An even better example would be something like:
*\define concat(1 2 3 4 5) $1$$2$$3$$4$$5$*
*concat abc{{ Getting Started } }def*
making it clearer that there's nothing special about *{{* and *}}* being
first and last in the macro's result string.
A counterexample would also be good:
Hi Mario,
Thank you for filling in some gaps in my knowledge of the *vnd.* and *x-*
prefixes.
Do you think, the railroad grammar should be a tiddlywiki mime type, or
should it have its own mime type. eg: text/x-railroad .. as long as it is
experimental.
I don't mind. An x- type would be
So x-types will definitely break some user content, when it's changed to
vnd. later on.
There's no technical reason why we couldn't support both. More than one
MIME type can be attached to the same TiddlyWiki parser module.
As it is based on EBNF, imo it should be a real subset of EBNF.
So one could take tiddler content and convert it to full EBNF with a
simple converter.
More on this! While converting EBNF to a railroad diagram is non-trivial,
it would be pretty easy to go the other way. It would just need an
additional pragma for specifying the name of the rule (i.e. the
Hi Matthew,
The problem (if you can call it that) is that if the only time a tiddler
is referenced is as part of a filtered list, then it shows up as an orphan.
Coincidentally, I'm currently revising the documentation of all the filter
operators, and I've noticed a very similar problem. The
$:/core/Filters/Orphans
http://www.google.com/url?q=http%3A%2F%2Ftiddlywiki.com%2F%23%2524%253A%252Fcore%252FFilters%252FOrphanssa=Dsntz=1usg=AFQjCNGUYLEDQgIE5-fIbWEROK-8Q5M98A
That tiddler is only used for populating the dropdown list on the Filter
tab of Advanced Search.
Variable Parameter
I've done some more work on the railroad plugin.
You can now store a diagram's notation in a dedicated tiddler of type
*text/vnd.tiddlywiki.railroad*, and simply transclude that tiddler to
wherever you want the diagram to show up. The explicit *$railroad* widget
is still supported, of course,
Hi Joerg,
You can do this either way. The template could say:
*! {{!!title}}{{!!text}}*
(The template itself then displays a recursive transclusion error, but
that's normal in such cases: the template's text is including itself, ad
infinitum.)
Or you could use a macro:
*\define
Hi Jörg,
$transclude/
Or, as I suggested, *{{!!text}}*, which avoids the need for an explicit
widget, and is very slightly shorter :)
Is there a way to avoid the 'Recursive transclusion error in transclude
widget' error message in the template itself?
Not really, because when you view the
Tobias's method is the most idiomatic, because it uses a filter to select
the chapters.
Furthermore, you could wrap it up in a macro and pass any desired chapter
filter as a parameter. Very nice.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki
Thanks, Tobias. That seems like an elegant solution.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send an email
to tiddlywiki+unsubscr...@googlegroups.com.
To post to this
Hi Mat,
There will be tiddlers that are difficult to find, as exemplified by the
tiddler Tagging http://tiddlywiki.com/#Tagging and someone curious about
how to use tags and therefore searches tags.
Part of the difficulty is the word-stemming issue that Mario has mentioned.
At present, the
Hi Mario,
Adding a tag to a tiddler *means* filing the tiddler under that tag, as a
child to a parent, a many-to-one link. This is true even for tags that are
just temporary markers or spur-of-the-moment annotations. Whether a user
chooses to make any further use of that filing mechanism is up
Hi Birthe,
Error:NS_ERROR_DOM_BAD_URI: Access to restricted URI denied.
Same here. In fact this seems to be normal – the error is mentioned at
http://tiddlywiki.com/#Saving%20on%20TiddlySpot.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
The rationale can be found in a thread from mid-2013 here:
https://groups.google.com/forum/#!topic/tiddlywikidev/dLn04Z4Vl5w
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it,
Here is a table with an optional middle row. (Change *text=y* to
*text=x* to reveal it.)
table
trtdJanuary/tdtd2015/td/tr
*$reveal default=x type=match
text=ytrtdFebruary/tdtd2016/td/tr/$reveal*
trtdMarch/tdtd2017/td/tr
/table
But if you try this, you'll find that it generates *span
Regarding the parent–child relationship, notice how the core
table-of-contents macro assumes that tags are pointers to parent tiddlers.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails
this magick-voodoo-wikitext-kungfu
It's staggeringly powerful, but it also comes close to being a write-only
language. The necessary mechanisms have to be created using the existing
mechanisms every time, which leads to a low signal-to-noise ratio.
Have you considered spending some time
Hi Danielo,
Add the list field to the tiddler that represents the parent level in the
contents.
A good example is http://tiddlywiki.com/#Reference.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop
Hi Felix,
That's the sort of thing: a system that would offer more readable syntax
for higher-level programming operations (for, if, concat, etc) that are
needed over and over again.
TiddlyWiki itself is already a kind of templating system, by virtue of its
variables and transclusions.
In my
Hi Mat,
there are simply different ways of thinking
And people have different requirements as to what they want to be able to
extract from a wiki.
Now, how should I tag this tiddler?
A key decision is whether you want people other than yourself to be able to
find the tiddler. There's a
Hi Andrew,
Your replies are showing up as separate threads from the messages you're
replying to. Or at least they are in the Google Groups web interface.
Something at your end is adding a *[tw]* prefix to the subject lines.
– æ
--
You received this message because you are subscribed to the
Hi Andrew,
My humble apologies, then. It's not a big problem :)
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send an email
to tiddlywiki+unsubscr...@googlegroups.com.
To
Hi Terenor,
I think this falls into the category of global search and replace, which is
a feature that's on the roadmap.
But Stephan Hradek has an example called RenameTags at
http://tw5magick.tiddlyspot.com/.
developing plugins is daunting. Is there a step by step guide with
pointers to
Hi Tobias,
To figure this out, I added *$text text=items* just before *$list
filter=items/*. This revealed that *items* contains strings like
*[field:type[{{$:/library/sjcl.js!!type}}]sort[]]*, which are invalid
filters.
So the problem is that the *currentGroup* variable stores the syntax of
Hi Mat,
Like Andrew, I'm not sure I entirely understand your list.
hidepill:foo
A field is a name–value pair. I believe you're suggesting a field whose
*name* is *hidepill:foo*. What would the *value* of this field be? And what
would the placeholder *foo* be replaced by in practice?
I think
Hi BJ,
Yes, that seems to be the solution, i.e. simplifying the invalid
*[…[{{…}}]]* to the correct *[…{…}]* syntax for a filter sep.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails
Hi Alan,
Yes, I sometimes find that a bit frustrating, too.
The underlying search function in the TiddlyWiki code has an option to
treat the entire search term literally. However, the search filter operator
(as used by the sidebar search system) provides no way to set this option.
In the
Hi Felix,
A drag and drop from the demo site would certainly be much easier. I should
have read to the end of your GitHub readme :)
At least the Node.js info I've given may help someone else with a similar
question some day.
– æ
--
You received this message because you are subscribed to the
Hi Branimir,
You're very welcome.
Note, if it's not already obvious, that the diagrams' colours, line
thicknesses, etc can be adjusted via CSS. The plugin contains a default CSS
tiddler.
Do people like the default colour scheme? It's simply what came with the
underlying diagram library, but
Hi Tobias,
Thanks for those CSS suggestions. They're great improvements, that make the
diagrams feel much less heavy and clunky.
It's a bit of a bummer that the text is actually controlled via stroke
and stroke-width
Eh? It's an SVG text element, controlled by normal CSS font properties.
Hi Tobias,
You've got /styles instead of /style at the end of in the catlist macro.
I'm impressed by the speed with which you create these complicated macros.
You write them in far less time than it takes me to understand what you've
written! Do you find these sort of macros easy to read if
The federation techniques that Jeremy discussed in a recent hangout are
probably the only plausible way to allow a collection of TiddlyWikis to
function as a forum.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this
Hi Mat,
I think the easiest way to do this is to use Node.js. (If there's an easier
way, I'm sure someone else will soon let us know :)
Download a copy of Jeremy's repository by clicking Download ZIP at
https://github.com/Jermolene/TiddlyWiki5/tree/master and unzip it.
Then do the same for
Awesome, Jeremy. Many thanks.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send an email
to tiddlywiki+unsubscr...@googlegroups.com.
To post to this group, send email to
Further to my previous comment, I've just discovered that `[backlinks[]]`
and `[all[orphans]]` don't take account of most automated links.
For instance, if I have a tiddler whose text is
my-macro [[Target]]
then the Target tiddler has an empty References list and shows up on the
Orphans
Hi Tobias,
Your alink macro would be really handy for use in the TiddlyWiki
documentation. It would significantly reduce the file size, because we have
lots of links of the form `[[…|…]]` (and we will be acquiring more over
time).
The main drawback is that it's not understood by important
I've just added a feature that I think greatly improves the readability of
the railroad diagrams. Where the diagram loops back on itself, it now has
an arrow to make it clear that the track runs from right to left at that
point.
http://ae-railroad.tiddlyspot.com/
The arrow can be turned off
Give your tiddler a list-before field, but leave its value empty.
The techniques available are the same as described for tag ordering at
http://tiddlywiki.com/#Tagging
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this
Hi Tobias,
that looks like poor use of double square brackets to me...
Let me suggest a less abstract example, then. Your tb5 site offers a macro
for colouring text http://tb5.tiddlyspot.com/#Colored%20Text. One can
easily imagine passing a whole sentence, e.g. a warning message, to this
Agreed. In fact I almost mentioned that in my initial reply.
TemplateOrder sounds almost mystical :)
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To unsubscribe from this group and stop receiving emails from it, send an email
to
Indeed. But the author of the JavaScript library underlying the widget was
aiming to reproduce the appearance of the railroad diagrams on the JSON site
http://www.json.org/, and those lack arrows. So the widget makes the
arrows optional.
– æ
--
You received this message because you are
Hi Tobias,
They could even be shorter, if that's feasible.
Good idea – done.
The shorter arrow also means I no longer need to artificially increase the
height of the backward arc to avoid a cramped appearance.
– æ
--
You received this message because you are subscribed to the Google Groups
Hi Tobias,
Sorry if I misunderstood. I got the impression we were talking slightly at
cross-purposes, so felt the need to clarify further. But we're in agreement.
Manual link isn't bad.
– æ
--
You received this message because you are subscribed to the Google Groups
TiddlyWiki group.
To
On further reflection, the problem of backlinks and orphans is not as
important as I initially thought. Links that are automatically generated by
a filter-based widget will normally always be links to *existing* tiddlers,
otherwise the filter wouldn't have selected them. So these links can be
Hi Tobias,
So long as (part of?) a macro parameter is declared via double square
brackets, that may be achieved.
How so? While it's possible to use double square brackets to delimit a
macro parameter, these are merely an alternative for quotes. They have no
link semantics.
For example,
there are many, many updates to the documentation
And be aware that further changes* to the documentation of filter syntax
are in the pipeline – including a thorough overhaul of the step-by-step
introduction – but my incompetence with the Git command line meant that
these narrowly missed
Hi Tobias,
That is utterly brilliant. My own contribution was pathetic in comparison :)
What you've done there also serves as a great practical example for
intermediate users of how to use some of the more advanced TiddlyWiki
techniques. I'm sure I will learn a lot from it.
– æ
--
You
Hi Rich,
On your videos the start point on all videos is actually 00:00:00 and you
are Jumping Playback to specific point. If you play a Tiddler once it
starts at the correct spot and stops correctly if you hit the Replay button
it starts at 00:00:00.
Interestingly, I get that effect on
Hi Rich,
Sorry for the delay in replying, but pleased you figured things out.
Switching the order of parameters to a macro is merely a matter of
switching their order within the parentheses on the \define line.
If you need to include the (double quote) character when you pass a value
to a
According to http://tiddlywiki.com/#ColourPalettes:
By convention, each [[theme|Themes]] provides a default colour palette in
the tiddler [[$:/config/DefaultPalette]]. Thus, setting the tiddler
[[$:/theme]] to the string `$:/config/DefaultPalette` will revert to the
palette packaged with the
Jed has produced a superb interface there.
I am flumoxed and think there is a simple space issue in the code.
Could you expand on that thought?
I've had another look at the JavaScript of the youtube-embed macro, and
can't see anything wrong with it. I've added some comments to it (on
But on further investigation…
You were right, Rich. There was a mistake in the embed macro. I'd missed
off the closing dollar sign of $start$ and $end$. This was causing the
youtube-embed JavaScript macro to receive the strings $start and $end
as its parameters, wreaking havoc.
Bizarrely,
Well, I've put together a working example at
http://aelocson-test-1.tiddlyspot.com. This contains a new macro for
embedding the hangout videos. Hopefully it's not too hard to follow.
Things are less messy now. You no longer need to define youtubeid at the
start of each hangout tiddler.
Hi Stephan,
That's a brilliant suggestion.
For anyone interested in the future, here's a tested example:
\define m1(x) 1($x$)
\define m2(y) 2($y$)
\define m3(z) 3($z$)
$set name=m2result value=m3 abc
m2result and
$macrocall $name=m1 x=abc/ and
$macrocall $name=m1 x=m2result/
/$set
… which
Hi Rich,
Glad to help. A good next step would be to macro-ify the remaining markup
for each topic in a hangout.
Add a tiddler called $:/.rich/macros/topic with the $:/tags/Macro tag
and the following content:
\define topic(description, time, minSec)
yt $time$ $minSec$ ''---'' $description$
I couldn't resist the temptation to put a JavaScript macro together, so
I've er… put a JavaScript macro together :)
This simplifies usage of the topic and topiclink macros, described in
my previous post, to just this:
topic Q A Start 00:01:25
topiclink Eric Discusses how he creates the Wiki
Go to https://github.com/Jermolene/TiddlyWiki5 and click 34 releases near
the centre of the top of the page. That gives you a list of all the
releases. Click on a particular version number, and you'll find a link
labelled n releases to master since this tag. Click that link to get a
nice list
In the previous Tiddlers Macro Example I would define the youtubeid at
the start of the Tiddler and it would be used in only that Tiddler. Do I
still do that?
Yes, you do. Each hangout tiddler needs to start with
\define hangoutprefix() TwHo#73
\define youtubeid() EU-H0xhga08
to set up its
Hi Rich,
There's an example of a YouTube macro here:
http://tiddlywiki.com/#Formatting%20text%20in%20TiddlyWiki
But you might like to try this as an experiment: Create a new system
tiddler on your Hangouts wiki. Call it something like
$:/.rich/macros/youtube - the dot before rich will keep
94 matches
Mail list logo