@jypre If I may suggest, you have “gotten yourself in a knot”, as did I some time ago trying to understand these changes based only on GitHub notes.
Please let me be straight. I speak from a good level of understanding on this subject and hope this helps you resolve your quandaries.
- I have not as yet found any serious issues.
This is simply not true.
You just can’t use the parameters widget within it, because that is a widget, and functions are filters. We have never been able to put widgets in filters.
Any value can be accessed in a filter, variable, field tiddler are all available and the parameters can be defined and set to defaults inside the (p1:"VALUE")
(just like define macros) and they can be referenced as variables within the function or as <paramname>
in filters.
The substitute operator helps here to replace the deprecated $var$, <<__var__>>
and $(var)$
in procedures as well. See below.
- We can now use a filter like a variable by using
<<functionname>>
as a custom operator [function[functionname]]
or [functionname[]]
and more with parameters.
- I too was not happy with only the first value being returned but now I see its value and how to get around it with
+[join[]]
or +[format:titlelist[]join[]]
Procedures replace macros and blending deprecated macros and procedures is surely not what you should be doing, but its fun to explore.
Now let us consider procedures
There are technical reasons, I don’t understand, but they replaced macros \define macroname
so we would be able to do without them, but we need to keep them for backward compatibility. The thing they do not want us using macros for is the substitution the $(varname)$
and $paramname$
, and <<__var__>>
is replaced with <<var>>
now.
- The old macro definition is ONLY deprecated and you can use them. Use them until you learn how to do without them.
- Research of mine show you can use $parameters widget in transclusions, $macrocall to call procedures and
$transclude $variable=
to call macros. With logical limitations (only) when it comes to some additional features.
Despite taking these “parameter forms” away from the \procedure
and only passing parameters that can be used as variables inside the procedure, procedures have added flexibility now through the provision of the $parameters widget, the new backticks for attribute values (Which do have $(var/param)$
) and more. And you still have access to anything you can reference in wikitext as you can with macros.
- Add to that the genesis widget, custom widgets, custom operators.
We are leaps ahead in 5.3.x than we have ever being.