From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: pjb@informatimago.com (Pascal J. Bourguignon) Newsgroups: gmane.emacs.help Subject: Re: Need help with macros Date: Wed, 06 Jan 2010 21:29:52 +0100 Organization: Informatimago Message-ID: <874omzrn7j.fsf@hubble.informatimago.com> References: <874omzi6n9.fsf@Traian.DecebalComp> <87r5q3rrcs.fsf@hubble.informatimago.com> <871vi3ghnq.fsf@Traian.DecebalComp> <87fx6j815j.fsf@Traian.DecebalComp> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1262810906 32666 80.91.229.12 (6 Jan 2010 20:48:26 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 6 Jan 2010 20:48:26 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Jan 06 21:48:20 2010 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1NScng-00079a-9I for geh-help-gnu-emacs@m.gmane.org; Wed, 06 Jan 2010 21:48:16 +0100 Original-Received: from localhost ([127.0.0.1]:37160 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NScng-0002Bd-Q7 for geh-help-gnu-emacs@m.gmane.org; Wed, 06 Jan 2010 15:48:16 -0500 Original-Path: news.stanford.edu!usenet.stanford.edu!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 50 Original-X-Trace: individual.net rElkwJxi8zfhwECT3HpO2AcvuPXMpn6V8z+IHWWVl5donR5NF1 Cancel-Lock: sha1:MDBjYjcwYWU0MjgyZjM5MWI5MTMwYWQxYjgzM2VlNjdkNTM3ZjZlNg== sha1:89KZYcAJ3H3F/OX5YYZbXvllCU8= Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9 033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR mV+hO/VvFAAAAABJRU5ErkJggg== X-Accept-Language: fr, es, en X-Disabled: X-No-Archive: no User-Agent: Gnus/5.101 (Gnus v5.10.10) Emacs/22.3 (gnu/linux) Original-Xref: news.stanford.edu gnu.emacs.help:176007 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:71094 Archived-At: Cecil Westerhof writes: > Cecil Westerhof writes: > >>> gnus-group-jump-bind has no need to be a macro. As a macro it is >>> wrong. Use defun! >> >> I could not get the defun working, that is why I thought it had to be >> done with a macro. The macro first also did not work. The macro works >> now. I'll rewrite the macro to a defun. > > And this is without a macro: > (defun gnus-group-jump-bind () > "Define the key bindings for jumping to groups;" > (dolist (this-jump gnus-group-jump-list) > (let ((this-description (second this-jump)) > (this-group (third this-jump)) > (this-key (concat "vj" (first this-jump)))) > (define-key gnus-group-mode-map this-key > `(lambda () > ,this-description > (interactive) > (gnus-group-jump-to-group ,this-group)))))) Good. Two things. 1- I'd like it better if gnus-group-jump-list was a parameter of the function rather than a global variable. 2- You could use destructuring-bind: (defun gnus-group-jump-bind (jump-list) "Define the key bindings for jumping to groups;" (dolist (this-jump jump-list) (destructuring-bind (this-key this-description this-group) this-jump (let ((binding (concat "vj" this-key))) (define-key gnus-group-mode-map binding `(lambda () ,this-description (interactive) (gnus-group-jump-to-group ,this-group))))))) (gnus-group-jump-bind gnus-group-jump-list) -- __Pascal Bourguignon__ http://www.informatimago.com/