all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Getting functions into define-key...
@ 2003-09-29 12:59 Norman Walsh
  2003-09-29 22:21 ` Kevin Rodgers
  0 siblings, 1 reply; 2+ messages in thread
From: Norman Walsh @ 2003-09-29 12:59 UTC (permalink / raw)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I'm guessing there must be some way to do this other than brute force.

I have an alist:

(defvar my-alist
  '(("choice1" . "opt1")
    ("choice2" . 35)
    ("choice3" . "opt3")))

I want to make a menu-bar menu that contains choice1, choice2, choice3.
If choice1 is selected, I want to evaluate (my-function "opt1"),
If choice2 is selected, I want to evaluate (my-function 35), etc.

I can see a brute-force solution:

(defun my-function-opt1 ()
  (interactive)
  (my-function "opt1"))

(define-key menu-bar-my-menu [my-choice1]
  '("choice1" . my-function-opt1))

But it seems to me that it should be possible to build the menu bar
from the alist. Alas, it's just beyond my elisp skills.

Clues, please?

                                        Be seeing you,
                                          norm

- -- 
Norman Walsh <ndw@nwalsh.com> | Design and programming are human
http://nwalsh.com/            | activities; forget that and all is
                              | lost.--B. Stroustrup
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.8 <http://mailcrypt.sourceforge.net/>

iD8DBQE/eCylOyltUcwYWjsRAuaLAKCE1rUhSBghvetIfOhSGMAgvrUjuACfR1MK
m4eG4w1CZC2jpPYB1kji4s0=
=pLtC
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Getting functions into define-key...
  2003-09-29 12:59 Getting functions into define-key Norman Walsh
@ 2003-09-29 22:21 ` Kevin Rodgers
  0 siblings, 0 replies; 2+ messages in thread
From: Kevin Rodgers @ 2003-09-29 22:21 UTC (permalink / raw)


Norman Walsh wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> I'm guessing there must be some way to do this other than brute force.
> 
> I have an alist:
> 
> (defvar my-alist
>   '(("choice1" . "opt1")
>     ("choice2" . 35)
>     ("choice3" . "opt3")))
> 
> I want to make a menu-bar menu that contains choice1, choice2, choice3.
> If choice1 is selected, I want to evaluate (my-function "opt1"),
> If choice2 is selected, I want to evaluate (my-function 35), etc.
> 
> I can see a brute-force solution:
> 
> (defun my-function-opt1 ()
>   (interactive)
>   (my-function "opt1"))
> 
> (define-key menu-bar-my-menu [my-choice1]
>   '("choice1" . my-function-opt1))
> 
> But it seems to me that it should be possible to build the menu bar
> from the alist. Alas, it's just beyond my elisp skills.

Here's how to handle ("choice1" . "opt1"):

(define-key menu-bar-my-menu [my-choice1]
   '("choice1" . (lambda () (interactive) (my-function "opt1"))))

So given my-alist:

(let ((alist my-alist)
       choice
       option)
   (while alist
     (setq choice (car (car alist))	; string
	  option (cadr (car alist)))	; constant (self-evaluating)
     (define-key menu-bar-my-menu (vector (intern choice))
       `(,choice . (lambda () (interactive) (my-function ,option))))
     (setq alist (cdr alist))))

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-09-29 22:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-09-29 12:59 Getting functions into define-key Norman Walsh
2003-09-29 22:21 ` Kevin Rodgers

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.