<p>Mutt-ng flexibly allows users to define their own variables. To
avoid conflicts with the standard set and to prevent misleading
- error messages, there's a reserved namespace for them. All
+ error messages, there's a reserved namespace for them: all
user-defined variables must be prefixed with <tt/user_/ and can be
used just like any ordinary configuration or environment
variable.
- <p>For example, to view the manual, users can either define three
+ <p>For example, to view the manual, users can either define two
macros like the following
<tscreen><verb>
macro generic <F1> "!less -r /path/to/manual" "Show manual"
macro pager <F1> "!less -r /path/to/manual" "Show manual"
-macro index <F1> "!less -r /path/to/manual" "Show manual"
</verb></tscreen>
<p>for <tt/generic/, <tt/pager/ and <tt/index/. The alternative is to
define a custom variable like so:
<tscreen><verb>
-set user_manualcmd = '!less -r /path/to_manual"
+set user_manualcmd = '!less -r /path/to_manual'
macro generic <F1> "$user_manualcmd<enter>" "Show manual"
macro pager <F1> "$user_manualcmd<enter>" "Show manual"
macro index <F1> "$user_manualcmd<enter>" "Show manual"
+</verb></tscreen>
+
+ <p>to re-use the command sequence as in:
+
+<tscreen><verb>
+macro index <F2> "$user_manualcmd | grep '\^[ ]\\+~. '" "Show Patterns"
</verb></tscreen>
<p>Using this feature, arbitrary sequences can be defined once and
include to save a variable's value at the beginning of macro
sequence and restore it at end.
+ <p>When the variable is first defined, the first value it gets
+ assigned is also the initial value to which it can be reset using
+ the <tt/reset/ command.
+
+ <p>The complete removal is done via the <tt/unset/ keyword.
+
+ <p>After the following sequence:
+
+<tscreen><verb>
+set user_foo = 42
+set user_foo = 666
+</verb></tscreen>
+
+ <p>the variable <tt>$user_foo</tt> has a current value of 666 and an
+ initial of 42. The query
+
+<tscreen><verb>
+set ?user_foo
+</verb></tscreen>
+
+ <p>will show 666. After doing the reset via
+
+<tscreen><verb>
+reset user_foo
+</verb></tscreen>
+
+ <p>a following query will give 42 as the result. After unsetting it
+ via
+
+<tscreen><verb>
+unset user_foo
+</verb></tscreen>
+
+ <p>any query or operation (except the noted expansion within other
+ statements) will lead to an error message.
+
<sect1>Type Conversions
<p>A note about variable's types during conversion: internally
<tscreen><verb>
set read_inc = 100
set folder = $read_inc
-set $read_inc = $folder
+set read_inc = $folder
set user_magic_number = 42
set folder = $user_magic_number
</verb></tscreen>
and the <tt>˜n</tt> pattern:
<verb>
-color black yellow "~n 10-"
-color red yellow "~n 100-"</verb>
+color index black yellow "~n 10-"
+color index red yellow "~n 100-"</verb>
<p>The rules above mark all messages with a score between 10 and 99
with black and yellow, and messages with a score greater or equal