From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: David Kastrup Newsgroups: gmane.emacs.help Subject: Re: elisp macros problem Date: 24 Jul 2004 21:00:01 +0200 Organization: Organization?!? Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Message-ID: References: NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1090695737 11637 80.91.224.253 (24 Jul 2004 19:02:17 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sat, 24 Jul 2004 19:02:17 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sat Jul 24 21:02:11 2004 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1BoRmd-0005YX-00 for ; Sat, 24 Jul 2004 21:02:11 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BoRpa-0003OE-9R for geh-help-gnu-emacs@m.gmane.org; Sat, 24 Jul 2004 15:05:14 -0400 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!newsmi-us.news.garr.it!newsmi-eu.news.garr.it!NewsITBone-GARR!fu-berlin.de!uni-berlin.de!not-for-mail Original-Newsgroups: gnu.emacs.help,comp.lang.lisp Original-Lines: 36 Original-X-Trace: news.uni-berlin.de DKQM0s78XEaishXfPsLUvArmXr4mv5P3nxBSq9ndzX3qQshqG+ X-Face: 2FEFf>]>q>2iw=B6, xrUubRI>pR&Ml9=ao@P@i)L:\urd*t9M~y1^:+Y]'C0~{mAl`oQuAl \!3KEIp?*w`|bL5qr,H)LFO6Q=qx~iH4DN; i"; /yuIsqbLLCh/!U#X[S~(5eZ41to5f%E@'ELIi$t^ Vc\LWP@J5p^rst0+('>Er0=^1{]M9!p?&:\z]|;&=NP3AhB!B_bi^]Pfkw User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50 Original-Xref: shelby.stanford.edu gnu.emacs.help:124427 comp.lang.lisp:144137 Original-To: help-gnu-emacs@gnu.org 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: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: main.gmane.org gmane.emacs.help:19764 X-Report-Spam: http://spam.gmane.org/gmane.emacs.help:19764 Lowell Kirsh writes: > I am defining an emacs lisp macro to do: > > (my-add-hook 'lisp > ...) > > which should give: > > (add-hook 'lisp-mode-hook > (lambda () ...)) > > I have: > > (defmacro my-add-hook (hook &rest body) > (let ((tempvar (make-symbol "cat"))) > `(flet ((,tempvar (sym str) > (make-symbol (concat (symbol-name sym) str)))) > (add-hook (cat ,hook "-mode-hook") (lambda () ,@body))))) > > Does anyone know what's wrong with this and why it doesn't work? I don't know where to start... First of all, your use of flet is complete nonsense. You flet an uninterned symbol with the name "cat" to some function. However, you never use that function. Instead you are trying to call the interned symbol "cat" (which is probably undefined). Even if one fixed that, it is completely unnecessary. Just do (defmacro my-add-hook (hook &rest body) `(add-hook ',(intern (concat (symbol-name hook) "-mode-hook")) (lambda () ,@body))) -- David Kastrup, Kriemhildstr. 15, 44793 Bochum