diff --git a/editions/tw5.com/tiddlers/pragmas/Pragma_ _define.tid b/editions/tw5.com/tiddlers/pragmas/Pragma_ _define.tid index 4f5403e9e..d676aea3d 100644 --- a/editions/tw5.com/tiddlers/pragmas/Pragma_ _define.tid +++ b/editions/tw5.com/tiddlers/pragmas/Pragma_ _define.tid @@ -6,23 +6,25 @@ type: text/vnd.tiddlywiki The ''\define'' [[pragma|Pragmas]] is used to [[define macros|Macro Definitions]]. It is a shortcut syntax for the SetVariableWidget. -The usual form allows macros to span multiple lines: +The usual form allows macros to span multiple lines. ``` \define ([:],[:]...) -\end +\end [] ``` +Note that the `\end` marker can optionally specify the name of the macro to which it relates which allows macro definitions to be nested. + There is also a single line form for shorter macros: ``` \define ([:],[:]...) ``` -The first line of the definition specifies the macro name and any parameters. Each parameter has a name and, optionally, a default value that is used if no value is supplied on a particular call to the macro. The lines that follow contain the text of the macro text (i.e. the snippet represented by the macro name), until `\end` appears on a line by itself: +The first line of the definition specifies the macro name and any parameters. Each parameter has a name and, optionally, a default value that is used if no value is supplied on a particular call to the macro. -For example: +The lines that follow contain the text of the macro text (i.e. the snippet represented by the macro name), until `\end` appears on a line by itself: <$codeblock code={{$:/editions/tw5.com/macro-examples/say-hi}}/> @@ -32,4 +34,18 @@ Alternatively, the entire definition can be presented on a single line without a \define sayhi(name:"Bugs Bunny") Hi, I'm $name$. ``` +Macro definitions can be nested by specifying the name of the macro in the `\end` marker. For example: + +< +\end actions +<$button actions=<>> +$caption$ + +\end special-button + +<> +""">> + A more formal [[presentation|Macro Definition Syntax]] of this syntax is also available.