On 11 Apr 2003 13:45:02 +0300, Simas Cepaitis wrote:
> 
> Mikhael Goikhman wrote:
> >Unfortunately, it is currently impossible to alias menus.
> >
> >But you may do the following to avoid duplication:
> >
> >  AddToFunc CreateRemoteShellsMenu
> >  + I DestroyMenu $0
> >  + I AddToMenu   $0
> >  + I + "@menu/[EMAIL PROTECTED]" Exec ssh ...
> >  + I + "@menu/[EMAIL PROTECTED]" Exec telnet ...
> >  + I + ...
> >
> >  CreateRemoteShellsMenu RemoteShells
> >  CreateRemoteShellsMenu My3
> 
> This looks nice, but isn't really what I want in this situation. 
> Still, I'll use this if everything other fails :) Now I'm 
> thinking a little bit different way - name my menus not by 
> number, but by desktop names, so I can use menus like 
> 'MenuRemote' elsewhere. And now I have another problem :)  I have 
> DesktopName setup, and:
> 
> DestroyFunc DynMenu
> AddToFunc DynMenu
> + I Popup Menu$$[desk.name$$d]
> 
> This doesn't work :( How can I mix variables (if I can), so 
> they'll give me the effect I want?  It's strange, that with 
> single '$' I can have $[desk.name1] == Web and get menu popup, 
> but I can't do this dynamically..

This is not the problem here.

The syntax here would be $[desk.name$$d] or better yet (in 2.5.6+)
$[desk.name$[desk.n]], note a single dollar is enough here.

The problem is that nothing inside $[] is expanded, i.e. you can't
nest variables. You hovewer may do currently the following:

  # be careful about shell escaping, there are extreme conditions
  DestroyFunc ExpandAndRun
  AddToFunc   ExpandAndRun
  + I PipeRead `echo '$*'`

  DestroyFunc DynMenu
  AddToFunc   DynMenu
  + I ExpandAndRun Popup Menu$$$$[desk.name$[desk.n]]

The plus command converts $$ to $, so ExpandAndRun and shell actually
get only 2 dollars and $[desk.n] is already expanded. Then PipeRead
expands the resulting $[desk.name3].

=--=

This is not the first message about nesting variables, so one option is
to introduce a new command (or prefix if you like) Expand for this.

  DestroyFunc DynMenu
  AddToFunc   DynMenu
  + I Expand Popup Menu$$$$[desk.name$[desk.n]]

Another option is to fix the expanding, so the inner $[] is expanded,
in this case only 2 dollars will be needed. And the third option is to
implement nested variable expansion, in this case one dollar will work
and no additional commands will be needed.

I will do the second option and then either the first or the third.

Regards,
Mikhael.
--
Visit the official FVWM web page at <URL: http://www.fvwm.org/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to [EMAIL PROTECTED]
To report problems, send mail to [EMAIL PROTECTED]

Reply via email to