On Fri, Nov 24, 2017 at 04:02:32PM -0500, Thomas Dickey wrote: > On Fri, Nov 24, 2017 at 01:59:56PM -0500, Wayne Cuddy wrote: > > > > I have a procedure that toggles boolean variables using setv. The > > problem with this is that setv seems to adjust that corresponding > > variable in all buffers. What is the equivalent setl in vile's macro > > language? > > > > This is the offending line: > > setv &indirect $1 ¬ &indirect %mode > > > > Note the name of the variable is determined/evaluated at execution > > time using &indirect. Replacing setv with setl does not work. > > > > Or is there a way to build up a string and execute it... something > > like sh's eval command? > > yes - it's not pretty, but you can use &cat for concatenating strings. > It would look something like this: > > eval &cat "setv &indirect" &cat $1 "¬ &indirect %mode" > > it-would-be-nice-if-vile-implemented "&sprintf" > > > I see execute-string exists but it doesn't seem to be callable from > > the macro language? > > I use eval (execute-string) in this macro in vileinit.rc: > > ; generalized from ToggleList, for any boolean mode > store-procedure ToggleMode mode='Mode' > ~local %value > setv %value &local $1 > ~if &seq "TRUE" %value > eval &cat "setl no" $1 > ~elseif &seq "FALSE" %value > eval &cat "setl " $1 > ~else > write-message "Not a boolean mode" > ~endif > ~endm > > --
Exactly what I was looking for. Darn, I checked the help page and macros file and didn't see anything about eval, though I forgot to check the sample vileinit.rc. Is it documented somewhere or am I just blind in my old age? Thanks again, Wayne _______________________________________________ vile mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/vile
