<!--}}}-->
-<sect>Variable Expansion <!--{{{-->
+<sect>Expansion within variables <!--{{{-->
+
+ <p>Besides just assign static content to variables, there's plenty of
+ ways of adding external and more or less dynamic content.
<sect1>Commands' Output
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"
<p>any query or operation (except the noted expansion within other
statements) will lead to an error message.
+ <sect1>Pre-Defined Variables
+
+ <p>In order to allow users to share one setup over a number of
+ different machines without having to change its contents, there's a
+ number of pre-defined variables. These are prefixed with
+ <tt/muttng_/ and are read-only, i.e. they cannot be set, unset or
+ reset. The reference chapter lists all available variables.
+
+ <p><em> Please consult the local copy of your manual for their
+ values as they may differ from different manual sources.</em> Where
+ the manual is installed in can be queried (already using such a
+ variable) by running:
+
+<tscreen><verb>
+muttng -Q muttng_docdir
+</verb></tscreen>
+
+ <p>To extend the example for viewing the manual via self-defined
+ variables, it can be made more readable and more portable by
+ changing the real path in:
+
+<tscreen><verb>
+set user_manualcmd = '!less -r /path/to_manual'
+</verb></tscreen>
+
+ <p>to:
+
+<tscreen><verb>
+set user_manualcmd = "!less -r $muttng_docdir/manual.txt"
+</verb></tscreen>
+
+ <p>which works everywhere if a manual is installed.
+
+ <p>Please note that by the type of quoting, muttng determines when
+ to expand these values: when it finds double quotes, the value will
+ be expanded during reading the setup files but when it finds single
+ quotes, it'll expand it at runtime as needed.
+
+ <p>For example, the statement
+
+<tscreen><verb>
+folder-hook . "set user_current_folder = $muttng_folder_name"
+</verb></tscreen>
+
+ <p>will be already be translated to the following when reading the
+ startup files:
+
+<tscreen><verb>
+folder-hook . "set user_current_folder = some_folder"
+</verb></tscreen>
+
+ <p>with <tt/some_folder/ being the name of the first folder muttng
+ opens. On the contrary,
+
+<tscreen><verb>
+folder-hook . 'set user_current_folder = $muttng_folder_name'
+</verb></tscreen>
+
+ <p>will be executed at runtime because of the single quotes so that
+ <tt/user_current_folder/ will always have the value of the currently
+ opened folder.
+
+ <p>A more practical example is:
+
+<tscreen><verb>
+folder-hook . 'source ~/.mutt/score-$muttng_folder_name'
+</verb></tscreen>
+
+ <p>which can be used to source files containing score commands
+ depending on the folder the user enters.
+
<sect1>Type Conversions
<p>A note about variable's types during conversion: internally
~L EXPR message is either originated or received by EXPR
~l message is addressed to a known mailing list
~m [MIN]-[MAX] message in the range MIN to MAX *)
+~M multipart messages
~n [MIN]-[MAX] messages with a score in the range MIN to MAX *)
~N new messages
~O old messages