diff --git a/editions/tw5.com/tiddlers/macros/syntax/Macro Call Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Macro Call Syntax.tid
index 846200cc9..f070bbeac 100644
--- a/editions/tw5.com/tiddlers/macros/syntax/Macro Call Syntax.tid
+++ b/editions/tw5.com/tiddlers/macros/syntax/Macro Call Syntax.tid
@@ -1,9 +1,13 @@
created: 20150221105732000
modified: 20150221222352000
-tags: [[Macro Syntax]]
+tags: [[Macro Syntax]] $:/deprecated
title: Macro Call Syntax
type: text/vnd.tiddlywiki
+<<.deprecated-since "5.3.0" "Procedure Call Syntax">>
+
+----------
+
<<.preamble """What follows is a formal presentation of the syntax of the WikiText syntax for macro calls, using [[railroad diagrams|Railroad Diagrams]]. A [[simpler overview|Macro Calls in WikiText]] is also available.""">>
<$railroad text="""
diff --git a/editions/tw5.com/tiddlers/macros/syntax/Macro Definition Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Macro Definition Syntax.tid
index 81877b3a5..ecc389d54 100644
--- a/editions/tw5.com/tiddlers/macros/syntax/Macro Definition Syntax.tid
+++ b/editions/tw5.com/tiddlers/macros/syntax/Macro Definition Syntax.tid
@@ -1,9 +1,13 @@
created: 20150220200255000
modified: 20150221222349000
-tags: [[Macro Syntax]]
+tags: [[Macro Syntax]] $:/deprecated
title: Macro Definition Syntax
type: text/vnd.tiddlywiki
+<<.deprecated-since "5.3.0" "Procedure Definition Syntax">>
+
+----------
+
<<.preamble """What follows is a formal presentation of the syntax of the `\define` pragma, using [[railroad diagrams|Railroad Diagrams]]. A [[simpler overview|Macro Definitions in WikiText]] is also available.""">>
<$railroad text="""
diff --git a/editions/tw5.com/tiddlers/macros/syntax/Procedure Call Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Procedure Call Syntax.tid
new file mode 100644
index 000000000..c7ab07644
--- /dev/null
+++ b/editions/tw5.com/tiddlers/macros/syntax/Procedure Call Syntax.tid
@@ -0,0 +1,33 @@
+created: 20240310165023000
+modified: 20240310172648116
+tags: [[Procedure Syntax]]
+title: Procedure Call Syntax
+type: text/vnd.tiddlywiki
+
+<<.preamble """What follows is a formal presentation of the syntax of the WikiText syntax for procedure calls, using [[railroad diagrams|Railroad Diagrams]].""">>
+
+!! procedure-name
+
+<$railroad text="""
+"<<" [[ procedure-name |Procedures]] [: [[whitespace|"Filter Whitespace"]] [:{param-value}] ]">>"
+"""/>
+
+* The [[procedure's|Procedures]] <<.place procedure-name>> is a sequence of non-whitespace characters other than `(` or `>`.
+
+* <<.place whitespace>> denotes a sequence of [[whitespace characters|Filter Whitespace]].
+
+!!! param-value
+
+Each ''individual'' <<.place param-value>> has the following syntax:
+
+<$railroad text="""
+\start none
+\end none
+[: param-name [:[[whitespace|"Filter Whitespace"]]] ":" [:[[whitespace|"Filter Whitespace"]]] ] value [: [[whitespace|"Filter Whitespace"]] ]
+"""/>
+
+* The <<.place param-name>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits (`0`--`9`), hyphens (`-`) and underscores (`_`).
+
+* The <<.place value>> is specified as follows:
+
+<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/>
diff --git a/editions/tw5.com/tiddlers/macros/syntax/Procedure Definition Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Procedure Definition Syntax.tid
new file mode 100644
index 000000000..7a621ee59
--- /dev/null
+++ b/editions/tw5.com/tiddlers/macros/syntax/Procedure Definition Syntax.tid
@@ -0,0 +1,93 @@
+created: 20240310165023000
+modified: 20240310175033730
+tags: [[Procedure Syntax]]
+title: Procedure Definition Syntax
+type: text/vnd.tiddlywiki
+
+<<.preamble """What follows is a formal presentation of the syntax of the [[Pragma: \procedure]], using [[railroad diagrams|Railroad Diagrams]]. """>>
+
+! \procedure
+
+There are 2 types of procedure definitions
+
+* Single line definitions
+* Multi line definitions
+
+!! Single Line
+
+Single line definitions should only be used for very short bodies, where the procedure name, params and the body fit into 1 line terminated with a line-feed.
+
+<$railroad text="""
+"\procedure"
+[[<"space">|"Filter Whitespace"]]
+"procedure-name"
+<"(params)">
+[:[[<"space">|"Filter Whitespace"]]]
+"body"
+"lf"
+"""/>
+
+!! Multi Line
+
+The majority of procedure definitions will have a body, that spans over several lines of wikitext. Those procedure definitions are terminated using the "\end" pragma
+
+<$railroad text="""
+"\procedure"
+[[<"space">|"Filter Whitespace"]]
+"procedure-name"
+<"(params)">
+[:[[<"space">|"Filter Whitespace"]]]
+body
+"\end"
+"""/>
+
+The [[procedure-name|Procedures]] is a sequence of non-whitespace characters other than `(` or `>`.
+
+
+* <<.place procedure-name>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits (`0`--`9`), hyphens (`-`) and underscores (`_`)
+* <<.place body>> is wikitext including [[nested procedures|Pragma: \procedure]]
+* <<.place space>> denotes a sequence of [[whitespace characters|Filter Whitespace]]
+
+!! params
+
+The parameter declaration list <<.place (params)>> has the following syntax:
+
+<$railroad text="""
+\start none
+\end none
+"(" [:"sep"] [:{ parameter "sep" }] ")"
+"""/>
+
+* <<.place sep>> is any sequence of characters that does not match a <<.place param-name>>. Among other things, this includes commas, spaces and linefeeds.
+
+
+Each ''individual'' <<.place parameter>> has the following syntax:
+
+<$railroad text="""
+\start none
+\end none
+"param-name" [: [:[[<"space">|"Filter Whitespace"]]] ":" [:[[<"space">|"Filter Whitespace"]]] default ]
+"""/>
+
+* <<.place param-name>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits (`0`--`9`), hyphens (`-`) and underscores (`_`).
+
+* <<.place default>> is an optional value of a parameter is specified as follows:
+
+<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/>
+
+!! body
+
+The <<.place body>> of the definition has the following syntax:
+
+<$railroad text="""
+\start none
+\end none
+{[[<"wikitext">|WikiText]] "lf"}
+"""/>
+
+* <<.place wikitext>> is any sequence of characters that doesn't terminate the macro definition.
+** If [[nested procedures|Pragma: \procedure]] are used they need to be at the start of the wikitext. There are the same rules as if the wikitext would be in a tiddler.
+** Pragmas need to be before standard wikitext.
+
+* <<.place lf>> denotes a linefeed.
+
diff --git a/editions/tw5.com/tiddlers/macros/syntax/Procedure Syntax.tid b/editions/tw5.com/tiddlers/macros/syntax/Procedure Syntax.tid
new file mode 100644
index 000000000..2ef519fcc
--- /dev/null
+++ b/editions/tw5.com/tiddlers/macros/syntax/Procedure Syntax.tid
@@ -0,0 +1,11 @@
+created: 20240310165023000
+modified: 20240310173318213
+tags: Procedures
+title: Procedure Syntax
+type: text/vnd.tiddlywiki
+
+Plain text description can be found at [[Procedures]]
+
+<>
+
+<<.tip "The railroad boxes in the linked tiddlers can be used to navigate.">>
diff --git a/editions/tw5.com/tiddlers/procedures/Procedures.tid b/editions/tw5.com/tiddlers/procedures/Procedures.tid
index 15b422647..8c80e61f5 100644
--- a/editions/tw5.com/tiddlers/procedures/Procedures.tid
+++ b/editions/tw5.com/tiddlers/procedures/Procedures.tid
@@ -1,5 +1,5 @@
created: 20221007124007426
-modified: 20230419103154329
+modified: 20240310173130052
tags: Concepts Reference
title: Procedures
type: text/vnd.tiddlywiki
@@ -18,11 +18,13 @@ The name wrapped in double angled [[brackets|Brackets]] is used a shorthand way
```
<>
-<>
+<>
```
The parameters that are specified in the procedure call are made available as variables.
+<<.tip """If a procedure has more than 1 parameter, it is highly encouraged to use "named parameters", as shown in the second example above. Even if it is more to type, it will pay off in the long run.""">>
+
!! How Procedures Work
Procedures are implemented as a special kind of [[variable|Variables]]. The only thing that distinguishes them from ordinary variables is the way that the parameters are handled.
@@ -32,4 +34,4 @@ Procedures are implemented as a special kind of [[variable|Variables]]. The only
* [[Procedure Definitions]] describes how to create procedures
* [[Procedure Calls]] describes how to use procedures
* [[Procedure Parameter Handling]] describes how procedure parameters work
-
+* [[Procedure Syntax]] is a formal syntax description using railroad diagrams
diff --git a/editions/tw5.com/tiddlers/system/Deprecated.tid b/editions/tw5.com/tiddlers/system/Deprecated.tid
index d363f07ed..5a7b501e7 100644
--- a/editions/tw5.com/tiddlers/system/Deprecated.tid
+++ b/editions/tw5.com/tiddlers/system/Deprecated.tid
@@ -7,6 +7,6 @@ Deprecated features of TiddlyWiki are those that have been superseded by newer,
Deprecated features will still work, but are not recommended for new content.
-Tiddlers tagged $:/deprecated:
+''Tiddlers tagged'' $:/deprecated:
<>
\ No newline at end of file
diff --git a/editions/tw5.com/tiddlers/system/Deprecated_-_What_does_it_mean.tid b/editions/tw5.com/tiddlers/system/Deprecated_-_What_does_it_mean.tid
index 98fbf6bb0..891e00bca 100644
--- a/editions/tw5.com/tiddlers/system/Deprecated_-_What_does_it_mean.tid
+++ b/editions/tw5.com/tiddlers/system/Deprecated_-_What_does_it_mean.tid
@@ -7,6 +7,3 @@ type: text/vnd.tiddlywiki
Deprecated features are marked with a special warning button. See: [[How to apply custom styles by tag]] for an example.
-''Tiddlers tagged `$:/deprecated`''
-
-><>
\ No newline at end of file
diff --git a/editions/tw5.com/tiddlers/system/wikitext-macros.tid b/editions/tw5.com/tiddlers/system/wikitext-macros.tid
index a978743a4..c09b0d8fe 100644
--- a/editions/tw5.com/tiddlers/system/wikitext-macros.tid
+++ b/editions/tw5.com/tiddlers/system/wikitext-macros.tid
@@ -1,6 +1,6 @@
code-body: yes
created: 20150117184156000
-modified: 20220617122915793
+modified: 20240315144208842
tags: $:/tags/Macro
title: $:/editions/tw5.com/wikitext-macros
type: text/vnd.tiddlywiki
@@ -23,17 +23,19 @@ type: text/vnd.tiddlywiki
\end
\procedure open-tiddler-in-window()
+\whitespace notrim
<$button actions=<> class="tc-btn-invisible tc-tiddlylink">
open ''this'' tiddler in a new window
$button>
\end
\procedure activateEditionWindow(url)
-<$action-sendmessage $message="tm-open-external-window" $param="""$url$""" windowName="_edition" windowFeatures="width=800 height=600" />
+<$action-sendmessage $message="tm-open-external-window" $param=<> windowName="_edition" windowFeatures="width=800 height=600" />
\end
\procedure open-external-window(url)
-<$button actions=<> class="tc-btn-invisible tc-tiddlylink">
+\whitespace notrim
+<$button actions=<> class="tc-btn-invisible tc-tiddlylink">
open the ''example edition'' in a new window
$button>
\end
@@ -63,7 +65,7 @@ type: text/vnd.tiddlywiki