From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Cecil Westerhof Newsgroups: gmane.emacs.help Subject: Need help with macros Date: Wed, 06 Jan 2010 16:40:10 +0100 Organization: Decebal Computing Message-ID: <874omzi6n9.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 1262800792 27812 80.91.229.12 (6 Jan 2010 17:59:52 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 6 Jan 2010 17:59:52 +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 18:59:45 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 1NSaAb-0000rq-69 for geh-help-gnu-emacs@m.gmane.org; Wed, 06 Jan 2010 18:59:45 +0100 Original-Received: from localhost ([127.0.0.1]:58753 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NSaAb-000219-QM for geh-help-gnu-emacs@m.gmane.org; Wed, 06 Jan 2010 12:59:45 -0500 Original-Path: news.stanford.edu!usenet.stanford.edu!newsfeed.berkeley.edu!ucberkeley!newsfeed.arcor.de!news.belwue.de!newsfeed01.sul.t-online.de!t-online.de!news.mixmin.net!hq-usenetpeers.eweka.nl!81.171.88.250.MISMATCH!newsfeed.eweka.nl!eweka.nl!feeder3.eweka.nl!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Original-Newsgroups: gnu.emacs.help X-Homepage: http://www.decebal.nl/ User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.3 (gnu/linux) Cancel-Lock: sha1:kxgozlmvIu5iL/vgn/PNQzwgKc8= Original-Lines: 58 Original-NNTP-Posting-Host: 84.53.123.169 Original-X-Trace: 1262792412 news.xs4all.nl 22917 decebal/[::ffff:84.53.123.169]:14937 Original-X-Complaints-To: abuse@xs4all.nl Original-Xref: news.stanford.edu gnu.emacs.help:175995 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:71082 Archived-At: I am trying to make some useful functionality for Gnus. I think that I should use a macro for that. I made the following macro (the two message statements are just for debugging): (defmacro gnus-group-jump-bind (key-binding group-to-jump-to) (message "#%s#%s#" key-binding (type-of key-binding)) (message "#%s#%s#" group-to-jump-to (type-of group-to-jump-to)) (define-key gnus-group-mode-map key-binding (lambda () (interactive) (gnus-group-jump-to-group group-to-jump-to)))) When calling this with: (gnus-group-jump-bind "vjd" "nndraft:drafts") In the message buffer it gives: #vjd#string# #nndraft:drafts#string# And the return value is: (lambda nil (interactive) (gnus-group-jump-to-group group-to-jump-to)) This is the first problem. Outside the macro group-to-jump-to is not existing, I need the value of group-to-jump-to not the name itself. How do I do this? I tried eval, but that did not work. But of course I do not want to set the key bindings manually but data driven. So I wrote the following function: (defun gnus-group-do-jump-bind () (dolist (this-jump gnus-group-jump-list) (let ((this-group (second this-jump)) (this-key (concat "vj" (first this-jump)))) (gnus-group-jump-bind this-key this-group)))) I defined the used value: (setq gnus-group-jump-list (list '("d" "nndraft:drafts") )) And call the function: (gnus-group-do-jump-bind) This gives in the message buffer: #this-key#symbol# #this-group#symbol# Entering debugger... And the debug output starts with: Debugger entered--Lisp error: (wrong-type-argument arrayp this-key) I tried to work with symbol-value, but that did not work. What do I need to do to get this working? -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof