BJ's Flexitype Plugin -- Can it help me be clean & lean?

399 views
Skip to first unread message

@TiddlyTweeter

unread,
Sep 22, 2017, 8:38:50 AM9/22/17
to TiddlyWiki
Has anyone used BJ's useful looking FLEXITYPE PLUGIN?

That plugin basically clears down the \rules pragmas and lets you define new Content Types from ground zero.

I'm thinking of using it to ease AD HOC quick development of Content Types for specific purposes--Like iterative extraction of the best lines from Perry Mason TV scripts.

My questions ...

1 - Is it fully compatible with the latest TW? The version on his site is in TW 5.1.11.

2 - Any feedback from BJ, or anyone, who has used it on how well it works.

Best wishes
Josiah

BJ

unread,
Sep 22, 2017, 12:16:29 PM9/22/17
to TiddlyWiki
Hi Josiah,
I have tried the demo with 5.1.14 and that works ok. You can define numerous different types with this plugin to support different formating to that provided in the core.

This is a general tool that can be configured in many ways, if you have a example of what you want to support I can tell you the best way to do it.

All the best

BJ

@TiddlyTweeter

unread,
Sep 22, 2017, 1:00:10 PM9/22/17
to TiddlyWiki
Ciao BJ

In my mind is the idea of a "Regex Workshop" of sorts. It seems to me that TW could be superb for that. I'm still hazy on the details. But different ways of rendering tiddlers seems central to that.

By which I mean a pragmatic tool that helps (1) develop new layouts and (2) help extractions from the Tiddler text field. But TW native isn't good for that because you can't SEE what is going on easily and what the Regex is actually doing.

But even in a standard Tiddler  the largely undocumented ...

\rules except html

... shows HTML as plain text. That is very helpful when you need to know what is going on when you do extra Regexes into that "empty space".

I'm looking, initially to use your plugin to support that kind of viewing of results, by defining a few different content types to switch between to check .

I'm assuming the plugin wipes down ALL pragma rules so you can then add back as you want or not? Right? And that the JSON configuration file defines what is added back?


I can probably work it out because your documentation seems pretty clear to me.

Let me play with it a bit, now I know for sure its 5.1.14 compliant--and if I hit a problem I'll let you know.

It looks really useful!

Best wishes & thanks
Josiah

@TiddlyTweeter

unread,
Sep 22, 2017, 1:25:02 PM9/22/17
to tiddl...@googlegroups.com
Ciao again BJ

A second part of this is strongly related to THIS thread: https://groups.google.com/forum/#!topic/tiddlywiki/9Lf0YHfMUZk concerning specific markup for "Fountain" screenplay styling, which I think you know about?

This is currently more an open question than a clear request. I'm not expecting a clear answer. Just maybe a few clues :-).

I was kinda wondering if one could use Fountain format regular expressions in ONE go, in one javascript component rather having to make loads of formatting rules by using your plugin?

Mark S. did a bunch of work around the Fountain format but I think, rightly, is shy of the somewhat esoteric complexity of the central TW parsers. Screenplays are pretty simple layout though.

I had wondered if your Flexitype could be used to help on that? On this I'm unclear what to do or how. Any thoughts might help.

Best wishes
Josiah

Jan

unread,
Sep 22, 2017, 3:20:58 PM9/22/17
to tiddl...@googlegroups.com
Hi BJ, Hi Josiah,
thanks for answering BJ and thanks for keeping on track Josiah...
My attempt to format dialogues in the the screenwriting-plugin is "hijacking"  TW's syntax for lists and headlines because I want a syntax that does not need closing tags.
In principle this works, my problem is, that it needs a blank line ( two \n characters) two trigger these elements.
Because this produces the risk that the formatting is broken by forgetting the blank line, I would like to have a modified parser that triggers the elements without a preceding blank line.

I already looked at the modifications for headings and lists but I could not find how to modifiy them to work that way...
It would be great if you could help.

Yours Jan.




Am 22.09.2017 um 19:25 schrieb @TiddlyTweeter:
Ciao again BJ

A second part of this is strongly related to THIS thread: https://groups.google.com/forum/#!topic/tiddlywiki/9Lf0YHfMUZk concerning specific markup for "Fountain" screenplay styling, which I think you know about?

This is currently more an open question than a clear request. I'm not expecting a clear answer. Just maybe a few clues :-).

I was kinda wondering if one could use Fountain format regular expressions in ONE go, in one javascript component rather having to make loads of formatting rules by using your plugin?

Mark S. did a bunch of work around the Fountain format it but I think, rightly, is sky of the somewhat esoteric complexity of the central TW parsers. Screenplays are pretty simple layout though.


I had wondered if your Flexitype could be used to help on that? On this I'm unclear what to do or how. Any thoughts might help.

Best wishes
Josiah
--
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+...@googlegroups.com.
To post to this group, send email to tiddl...@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/75aa0bf1-0bfd-4e5c-9f62-25d5543ae220%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

BJ

unread,
Sep 22, 2017, 4:56:21 PM9/22/17
to TiddlyWiki
Hi Jan,

with the tw5 parser double lines are used to break the text into blocks BEFORE any rules are applied, it is not possible to modify the rules for this.

 The parser can be given an extra regex, the regex is defined in $:/core/modules/parsers/wikiparser/wikiparser.js as

new RegExp("(" + terminatorRegExpString + "|\\r?\\n\\r?\\n)","mg")

Where terminatorRegExpString can be given as a parameter to the parseBlock() function.

The flexitype plugin could be modified to set the 'terminatorRegExpString'' as a parameter to parserBlock(), see $:/core/modules/parsers/wikiparser/abstractwikiparser.js.

But it could be a challenge to design this regex.

cheers

BJ

Jan

unread,
Sep 23, 2017, 5:44:50 AM9/23/17
to tiddl...@googlegroups.com
Hi  BJ,
looking at the code for your headline-parser I already supposed the double lines where in a preceding level.
I have to admit that my knowledge about TW's parsing and .js is to basic to fully understand the rest of your email.
I think I understood we could write an extra-parser which give Flexitype the ability to parse blocks. This of course would be great.

My solution at the moment is to insert the missing double lines via Skeeves replacePragma (http://tiddlystuff.tiddlyspot.com/#ReplacePragma)which also seems to preceed the regular parsing.
\replace /\n!/\n\n!/
\replace /\n:/\n\n:/
\replace /\n{{/\n\n:{{/
\replace /}}/}} /
The disadvantage of this is that this has to be inserted into each Tiddler which has to be modified that way proposition would be much better.

Yours Jan

BJ

unread,
Sep 24, 2017, 6:11:46 AM9/24/17
to TiddlyWiki
I've added a regex parser:

http://flexibility.tiddlyspot.com/

all the best
BJ

On Friday, September 22, 2017 at 2:38:50 PM UTC+2, @TiddlyTweeter wrote:

BJ

unread,
Sep 24, 2017, 6:14:00 AM9/24/17
to TiddlyWiki
I have added the ablility to use single newlines for paragraphs to the flexibility plugin

Jan

unread,
Sep 24, 2017, 6:33:24 AM9/24/17
to tiddl...@googlegroups.com
Great! Thanks!
I will look at that instantly.

Jan

@TiddlyTweeter

unread,
Sep 24, 2017, 7:04:38 AM9/24/17
to TiddlyWiki
Ciao BJ

Brilliant! Thankyou!

I had a quick look and see that you can add the flag "g". 

Will it take the other JavaScript flags like "m" and "i"? Or they are just implicitly enabled already?

Best wishes
Josiah

Jan

unread,
Sep 24, 2017, 7:50:48 AM9/24/17
to tiddl...@googlegroups.com
Hi BJ!

Thanks for the plugin, it seems to be the solution.
At a first step I tried out Flexitype Regex Demo because it seems to be fully compatible with my replacePragma workarround which also solves other issues.

I imported $:/plugins/bj/flexitype and RegxParseParam, inserted my ReplacePragma-rules into testregexdefs
/\n!/\n\n!/
/\n:/\n\n:/
/\n{{/\n\n:{{/
/}}/}} /
 
and set the type of the tiddler to modify to text/vnd.tiddlywiki;flexibility=replace

Should this already work or did I forget something.

Yours Jan
--
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+...@googlegroups.com.
To post to this group, send email to tiddl...@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.

BJ

unread,
Sep 24, 2017, 9:04:53 AM9/24/17
to TiddlyWiki
you also need the tiddler called 'replace'

BJ

unread,
Sep 24, 2017, 9:07:57 AM9/24/17
to TiddlyWiki
also be aware that you have to manually refresh a target tiddler (the one which you want the changes to act on) if you change the regex rules, or the other tiddlers define the flexibility behaviour.

Jan

unread,
Sep 24, 2017, 9:51:34 AM9/24/17
to tiddl...@googlegroups.com
Hello BJ
Thanks again. Importing "replace" did change the rendering.
But at the moment the plugin (or my implementation) seem to have difficulties with the \n.
The replaced \n\n: and \n\n! appear in the rendered Tiddler.

Yours Jan



BJ

unread,
Sep 24, 2017, 10:25:03 AM9/24/17
to TiddlyWiki
yes I need to unescape the '\' - I will probably make do the update tonight.

@TiddlyTweeter

unread,
Sep 24, 2017, 10:55:58 AM9/24/17
to tiddl...@googlegroups.com
Ciao BJ (& Jan)

Couple of teething issues ...

1 - When I edit "testregexdefs" and save it my wiki does an auto refesh and all tiddlers except "testregexdefs" get closed. Is that the expected behaviour?

2 - A sequence of regex stalls at this one ...

/\(.+?\)//g

... is this related to the "escape" problem? If I take that definition out then the sequence completes.

Anyway its looking very hopeful. So thanks!


Best wishes
Josiah

BJ wrote:

@TiddlyTweeter

unread,
Sep 24, 2017, 11:08:57 AM9/24/17
to TiddlyWiki
Ciao BJ

Quick update on point (2) -- if I use a single space in the replace it works. It doesn't with a nul string.

/\(.+?\)/ /g

J.


2 - A sequence of regex stalls at this one ...

/\(.+?\)//g

Best wishes
Josiah

BJ

unread,
Sep 24, 2017, 5:05:00 PM9/24/17
to TiddlyWiki
I cannot reproduce your first issue, can you give details of you setup? (browser, tw plugin etc)

I have put up a new version which fixes issue 2

cheers
BJ

Jan

unread,
Sep 24, 2017, 5:05:18 PM9/24/17
to tiddl...@googlegroups.com
Hi BJ,
Great thanks for your effort, I think you are doing something that helps us all a lot.
For me it is somomething I've been looking for for weeks...

Jan

Jan

unread,
Sep 24, 2017, 6:02:15 PM9/24/17
to tiddl...@googlegroups.com
Hi BJ,
Works like *magic*, thanks a lot.
What's the meaning of the little modal which appears... (shirt <okay>?)
Is it a little hidden Zappaesque message or a testmode-remainder?

...and another more important issue:

At the moment saving a Tiddler with the vnd.tiddlywiki;flexibility=replace type but without text in the textfield produces the red screen of death.

Yours Jan
--
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+...@googlegroups.com.
To post to this group, send email to tiddl...@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.

BJ

unread,
Sep 25, 2017, 1:45:05 AM9/25/17
to TiddlyWiki
I am not seeing this with the latest verision?
can you post the red message here?

Jan

unread,
Sep 25, 2017, 4:39:40 AM9/25/17
to tiddl...@googlegroups.com
Hej BJ
In the actual version this only happens if the tiddler really does not have a text-field at  all. Unfortunately my New-Scene-Button does produce tiddlers without text-field. I will change that but I guess its safer to elimanate that behaviour. Because if it is there this particular red screen is more stubborn than usual.

Internal JavaScript Error
Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser
TypeError: text is undefined

The shirt-modal is still there...

Yours Jan


@TiddlyTweeter

unread,
Sep 25, 2017, 5:39:26 AM9/25/17
to TiddlyWiki
Ciao BJ

On issue 1. Its probably my bad & nothing to do with you. I did a fresh install in a clean TW & now do not have the issue. It may be an interaction with a plugin. I will add them back one by one & if the issue reoccurs I'll alert you.


 BJ wrote:
I cannot reproduce your first issue, can you give details of you setup? (browser, tw plugin etc)
1 - When I edit "testregexdefs" and save it my wiki does an auto refesh and all tiddlers except "testregexdefs" get closed. Is that the expected behaviour?
 
I have put up a new version which fixes issue 2

Thankyou!

J.

Jan

unread,
Sep 25, 2017, 6:08:39 AM9/25/17
to TiddlyWiki
Hello BJ,
I have yet another issue which is related to the setting of the screenplayeditor I am building.
The type vnd.tiddlywiki;flexibility=replace does not work for choosing an EditorTypeMapping like $:/config/EditorTypeMappings/text/vnd.tiddlywiki .
I guess either the ; or the = cause problems here.
For me this would be a little sad because my work on the screenplayeditor (http://storywriting.tiddlyspot.com/) started with applying a textcompletition...
Could you give your type a shorter name? (And could you change the names of replace,
RegxParseParam and testregexdefs to systemtiddlers.)

So thanks for all your work
yours Jan


-------- Weitergeleitete Nachricht --------
Betreff: Re: [tw] Re: BJ's Flexitype Plugin -- Can it help me be clean & lean?
Datum: Mon, 25 Sep 2017 10:39:25 +0200
Von: Jan <lasjo...@googlemail.com>
An: tiddl...@googlegroups.com

@TiddlyTweeter

unread,
Sep 25, 2017, 6:19:53 AM9/25/17
to TiddlyWiki
Ciao Jan & BJ

Jan I believe you can create your own by cloning them with any names you want so long as they reference each other??

Josiah

Jan wrote:
Could you give your type a shorter name? (And could you change the names of replace, RegxParseParam and testregexdefs ...

@TiddlyTweeter

unread,
Sep 25, 2017, 6:53:30 AM9/25/17
to tiddl...@googlegroups.com
Ciao BJ

Great gadget! I'm hitting teething issues that I think are to do with me better understanding what is on & what if off.

I have a text I'm processing using the   text/vnd.tiddlywiki;flexibility=replace  . The input text looks like this ...

:s A RIVER.

:a Were underwater, watching a fat catfish swim along.  

:a This is The Beast.

The regex are ...
1 -- /The Beast/The Monster/g
2 -- /_u:(.+):u_/<span class="mss-in-u">$1<\/span>/g
3 -- /
^:([a-z]+):?(\d*)\s+(.+)\s*$/<p class="mss-s1-$1">$3<\/p>/

Lines 1 & 2 work. Line 3 fails. In looking at the output HTML I see ..

<dl><dd>s A RIVER.</dd><dd>a We’re underwater, watching a fat catfish swim along.  </dd><dd>a This is The Monster.</dd></dl>

I had thought your regex "replace" parser ran BEFORE the standard ones??

Best wishes
Josiah

@TiddlyTweeter

unread,
Sep 25, 2017, 8:09:26 AM9/25/17
to TiddlyWiki
Ciao BJ

in my last post I meant this ...
I have a text I'm processing using the   text/vnd.tiddlywiki;flexibility=replace  . The input text looks like this ... etc
Apologies for any confusion.
J.

@TiddlyTweeter

unread,
Sep 25, 2017, 8:44:59 AM9/25/17
to TiddlyWiki
Ciao BJ & Jan

I agree with Jan if those changes are possible.

I also think it would be fine in the editor to not have "flexibility" as the type but just "fl" or "flex. The reason I ask is the Content Type in the editor is so narrow so you can't see what type it is. ... i.e.

But, maybe the Type box in the editor should actually be widened via CSS? That's something I'll take up on GitHub.

Best wishes
Josiah
Auto Generated Inline Image 1

BJ

unread,
Sep 25, 2017, 10:34:54 AM9/25/17
to TiddlyWiki
the special chars ^$ refer to the beginning and end of the tiddler

BJ

unread,
Sep 25, 2017, 10:36:58 AM9/25/17
to TiddlyWiki
as text/vnd.tiddlywiki is the default you do not need to put it in the type def- i.e. just put ;flexibility=replace

@TiddlyTweeter

unread,
Sep 25, 2017, 11:07:14 AM9/25/17
to tiddl...@googlegroups.com
Ciao BJ

Normally in Regex ^ & $ refer to the beginning and end of a string the regex engine flags the scope of, and that is normally a line. Skeeves ReplacePragma goes that route. That regex works using that syntax, so I was surprised it didn't work here since its the same underlying system? Is it something to do with the status of the "m" flag the difference from Skeeve?

It complicates it a bit to think in terms of ^ $ not being line start and ends--but rather being Tiddler starts & ends. But I see if I can work with it.


Best wishes
Josiah

BJ wrote:
the special chars ^$ refer to the beginning and end of the tiddler

@TiddlyTweeter wrote:

3 -- /^:([a-z]+):?(\d*)\s+(.+)\s*$/<p class="mss-s1-$1">$3<\/p>/
 
Line 3 fails.

BJ

unread,
Sep 25, 2017, 12:50:30 PM9/25/17
to TiddlyWiki
with javascript regexs you need to use the 'm' flag to have ^$ match the begin and end of lines.

@TiddlyTweeter

unread,
Sep 25, 2017, 1:22:18 PM9/25/17
to TiddlyWiki
Ciao BJ

Does your implementation in Flexi Reg support the "m" flag?

One of the advantages of "^" "$" is they are null strings indicating place, not content. So you don't have to explicitly restore them when using replace, unlike explicit actual matches you might have to. So for many situations they are easier to use.

Especially for documents with markup that usually is the first thing on the line,

BJ

unread,
Sep 25, 2017, 1:27:32 PM9/25/17
to TiddlyWiki
yes just add the m flag to your regex

@TiddlyTweeter

unread,
Sep 25, 2017, 1:32:45 PM9/25/17
to TiddlyWiki
Great BJ

Thanks. Great to know your gizmo supports it.

J.

@TiddlyTweeter

unread,
Sep 25, 2017, 3:13:55 PM9/25/17
to TiddlyWiki
Ciao BJ

I just did a long series of test replaces with the "m" flag on for regexes under text/vnd.tiddlywiki;flexibility=replace & its working well.

FYI, I figured out how to make clones of "replace" which will allow me the freedom to develop and play with texts using RegEx at will, creating new regexsets easily. Its a real time-saver.

I truly hope other folk realise how excellent your "Flexible Types" is. I am only just beginning to touch into what you can do with it--which is vast.

Very best wishes
Josiah
 
@TiddlyTweeter wrote:
Thanks. Great to know your gizmo supports it.

BJ wrote:

Jan

unread,
Sep 25, 2017, 3:50:31 PM9/25/17
to tiddl...@googlegroups.com
Hi BJ,
Thanks; this is indeed much shorter...but it still not compatible with the EditorTypeMapping. $:/config/EditorTypeMappings/text/;flexibility=replace will not work.
The textcompletition cannot help with this name...


Jan



Am 25.09.2017 um 16:36 schrieb BJ:
--
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+...@googlegroups.com.
To post to this group, send email to tiddl...@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.

Jan

unread,
Sep 25, 2017, 3:50:49 PM9/25/17
to tiddl...@googlegroups.com
Hi BJ,
Thanks; this is indeed much shorter...but it still not compatible with the EditorTypeMapping. $:/config/EditorTypeMappings/text/;flexibility=replace will not work.
The textcompletition cannot help with this name...

Jan



Am 25.09.2017 um 16:36 schrieb BJ:
--
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+...@googlegroups.com.
To post to this group, send email to tiddl...@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.

BJ

unread,
Sep 25, 2017, 6:07:54 PM9/25/17
to TiddlyWiki
The correct tiddler for editor type mapping is $:/config/EditorTypeMappings/text/vnd.tiddlywiki;flexibility=replace,
but the buttons are controlled in a different manner eg see

$:/core/ui/EditorToolbar/bold

and look at field 'condition' - this determines if the button is show

BJ

unread,
Sep 25, 2017, 6:27:41 PM9/25/17
to TiddlyWiki
one possibility is to change the condition:

[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]

to

[<targetTiddler>!has[type]] [<targetTiddler>regexp:type[text/vnd.tiddlywiki]]

Jan

unread,
Sep 25, 2017, 7:09:06 PM9/25/17
to tiddl...@googlegroups.com
Hi BJ,
thanks for your tipps about the EditorButtons...yet it is something else I want:
If you look at http://storywriting.tiddlyspot.com/ you find the work-in-progress Screenwriting tool I am building.
If you type vvLa in the open Draft it is automatically completed to {{Laurel}} (vv is the trigger because it does not appear in the language and la are the first two letters of a tiddler tagged role).
This is Alain Dutechs comptext code which I truned int a plugin for screenwriting... and it needs a Tiddler mapping the editor to comptext. I hope you see that that you see that at the moment the two things I need the most are not working together.

Yours Jan

BJ

unread,
Sep 26, 2017, 2:34:56 AM9/26/17
to TiddlyWiki
it works when I try it, or I should say in exactly the same way as with 'text/vnd.tiddlywiki'

I see in the type dropdown an incorrect type of "vnd.tiddlywiki;flexibility=replace"
Screenshot - 260917 - 08:27:21.png

Jan

unread,
Sep 26, 2017, 4:08:41 AM9/26/17
to tiddl...@googlegroups.com
Heureka! It works!
Thanks for bugtracking BJ
Jan

@TiddlyTweeter

unread,
Sep 26, 2017, 7:21:05 AM9/26/17
to TiddlyWiki
Ciao BJ

Just wondering if your implementation supports all the JavaScript Regex flags ...

 g - global
 m
- multiline
 i
- ignore case
 y
- sticky
 u
- Unicode code points
Source

Not that I'd ever use "u". But just interested in understanding what's possible.

@TiddlyTweeter

unread,
Sep 26, 2017, 7:47:26 AM9/26/17
to TiddlyWiki
Ciao BJ

One thing I'm wondering is whether its possible to support COMMENTS in the regexs component? For instance ...

/* Fountain replace to standard */
/^(\>)\s*?/:t /m
/^(\!)\s*?/:a /m
... etc
/* Standard replace to out */
/stuff/other-stuff/m
... etc
/* Global div wrap */
/^/<div class="ms-s1">/g
/
$/<\/div>/g

The point being with long sequences commenting would be useful for: (a) documentation of steps; (b) selectively disabling regex during testing.

Just thoughts
Best wishes
Josiah

BJ

unread,
Sep 27, 2017, 6:30:16 AM9/27/17
to TiddlyWiki
I've put up a new version that allows comments:

http://flexibility.tiddlyspot.com/

@TiddlyTweeter

unread,
Sep 27, 2017, 12:29:44 PM9/27/17
to TiddlyWiki
Thanks BJ!

I appreciate what you have done very much.

I been using it with comments successfully the last few hours. Its a godsend.

Jan

unread,
Oct 2, 2017, 9:49:37 AM10/2/17
to tiddl...@googlegroups.com
Hey BJ!
I wanted to thank you once again for building this plugin. I really needed it and it came just ath the right time. I have updated the screenwriting-edition I had done before.
There still is some work to do but i think I will be able to solve all problems now.

So thanks a again!
Jan

PS.
A small desire: Tiddlers without textfield sill cause a red screen with the flexitype-plugin. Though this is seldom I would be happy if the plugin could escape this....
--
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+...@googlegroups.com.
To post to this group, send email to tiddl...@googlegroups.com.
Visit this group at https://groups.google.com/group/tiddlywiki.
Reply all
Reply to author
Forward
0 new messages