On Fri, Dec 12, 2008 at 09:20:56AM -0600, Kyle Wheeler wrote: > > That said, even when I run 'set my_curdir="^"' in mutt after muttrc > > has been read, my_curdir is still empty. > > Really? When I do it, my_curdir becomes "^". Test it like this: > > set ?my_curdir
My previous statement was incorrect. When I run set my_curdir="^" it does indeed contain "^". HOWEVER, when I have the following: folder-hook . set my_curdir="^" macro index,pager S "<save-message>$my_archdir/$my_curdir<enter>" and hit 'S', Mutt says: Create /mnt/data/storage/mail/boxes/? ([yes]/no) indicating that, at least in the context of the macro, my_curdir was empty. Is this because when reading the rc file, mutt did not actually run the folder-hook because no folder is loaded until after the rc file is loaded, and then the usage of my_curdir in the macro gets evaluated at a point when that variable has not yet been defined? > Your macro has an additional problem: it wouldn't work even if > my_curdir WAS correctly being set! You see, variable expansion is > evaluated at the time the macro is established! I figured that might be a problem. I switched to the folder-hook because I thought that might get reevaluated every time the hook was run. Is that true, or do I also need to escape variables in hooks as well? Speaking of variable escaping: > If you want the variable to be re-interpreted every the macro is > triggered, you'd have to do this: > > macro index,pager S "<save-message>\$my_archdir<enter>" I tried the following (never mind in this case if the folder-hook doesn't actually give me the current folder name): folder-hook . set my_curdir="^" macro index,pager S "<save-message>$my_archdir/\$my_curdir<enter>" Mutt's response was: Create /mnt/data/storage/mail/boxes/$my_curdir? ([yes]/no) Rather than causing the variable to be re-evaluated, it appears to have literalized it. my_archdir will never change once mutt is started, so I'm not escaping that one. > > If not, how does one get the current folder name in a variable which > > can be used in various places? > > Well, technically, if you set $record to ^, you can use that. That's > not exactly *convenient*, since $record has a primary function, I know > that, but... As far as I know, there isn't a really *good* way to do > what you're looking for (at the moment). Perhaps there's another variable that has a less important primary function that I could use. In general, how did you learn this stuff about which variables expect mailbox paths, which are just regular strings, when macro expansion happens, when stuff needs escaping, etc? I did not RT entire FM, but I did look through it and didn't find anything very helpful. Thanks for the help, -- Noah Sheppard Assistant Computer Resource Manager Taylor University CSE Department nshep...@cse.taylor.edu