all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Mathias Dahl <brakjoller@gmail.com>
Subject: Re: From menu button, how run more than one command?
Date: Mon, 27 Feb 2006 14:35:54 +0100	[thread overview]
Message-ID: <u7j7gj551.fsf@gmail.com> (raw)
In-Reply-To: 11vvif44kod09bd@corp.supernews.com

RD <rjjd@localnet.com> writes:

> The code below works, but note that the menu button calls function
> "abc".  If the menu contains many buttons, each button would need a
> dedicated function.
>
> (defvar my-menu (make-sparse-keymap))
>
> (define-key my-menu [rmx]
>    '(menu-item "FILE" abc))      ;executes function abc
>
> (defun abc ()
>    (interactive)
>    (cd "C:/emacs")
>    (call-interactively 'find-file)
> )
>
> Is there a way to write the "define-key" so that I don't need a separate
> function?
> Or, is there a way to pass an argument from "menu-item" to the function?

Luckily for you I struggled too with menus last week. Would something
like this work for you?

(defvar my-menu (make-sparse-keymap))

(define-key my-menu [rmx1]
   `(menu-item "Find file on c:/" 
               ,(lambda () 
                  (interactive) 
                  (abc "c:/"))))

(define-key my-menu [rmx2]
   `(menu-item "Find file on h:/" 
               ,(lambda () 
                  (interactive) 
                  (abc "h:/"))))

(defun abc (path)
   (cd path)
   (call-interactively 'find-file))

;; Test it

(popup-menu my-menu)

/Mathias

  reply	other threads:[~2006-02-27 13:35 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-25  3:07 From menu button, how run more than one command? RD
2006-02-27 13:35 ` Mathias Dahl [this message]
2006-03-01 18:51   ` Kevin Rodgers
     [not found]   ` <mailman.166.1141291544.2835.help-gnu-emacs@gnu.org>
2006-03-02 10:50     ` Mathias Dahl
2006-03-02 16:01     ` Johan Bockgård
2006-03-01  4:47 ` Eli Zaretskii
  -- strict thread matches above, loose matches on Subject: below --
2006-02-24 22:53 DiGrazia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=u7j7gj551.fsf@gmail.com \
    --to=brakjoller@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.