emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

defmacro* usage


From: Thierry Volpiatto
Subject: defmacro* usage
Date: Wed, 02 Nov 2011 12:28:44 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.91 (gnu/linux)

Hi all,
I have an error with following recipe:

#+BEGIN_SRC lisp
(defmacro* test1 (&key (lang 'french))
  `(case ,lang
     (french (message "Bonjour"))
     (english (message "Hello"))))

(test1 :lang 'french)
"Bonjour"
(test1 :lang 'english)
"Hello"
(test1)
Debugger entered--Lisp error: (void-variable french)
  (eql french (quote french))
  (cond ((eql french (quote french)) (message "Bonjour")) ((eql french (quote 
english)) (message "Hello")))
  (case french (french (message "Bonjour")) (english (message "Hello")))
  (test1)
  eval((test1) nil)
  eval-last-sexp-1(t)
  eval-last-sexp(t)
  eval-print-last-sexp()
  call-interactively(eval-print-last-sexp nil nil)


(defun* test2 (&key (lang 'french))
  (case lang
     (french (message "Bonjour"))
     (english (message "Hello"))))

(test2 :lang 'french)
"Bonjour"
(test2 :lang 'english)
"Hello"
(test2)
"Bonjour"

#+END_SRC

As you can see, the quoted default argument 'french cause an error with
the defmacro* and work fine with the defun*.

Is it a bug or i misunderstand something?
Thanks.

-- 
  Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]