emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r109906: * lisp/emacs-lisp/cl-macs.el


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r109906: * lisp/emacs-lisp/cl-macs.el (cl--do-arglist): Understand _ on &key args.
Date: Thu, 06 Sep 2012 11:35:08 -0400
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 109906
fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12367
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Thu 2012-09-06 11:35:08 -0400
message:
  * lisp/emacs-lisp/cl-macs.el (cl--do-arglist): Understand _ on &key args.
  (cl--make-usage-args): Strip _ from argument names.
modified:
  lisp/ChangeLog
  lisp/emacs-lisp/cl-macs.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-09-06 09:38:56 +0000
+++ b/lisp/ChangeLog    2012-09-06 15:35:08 +0000
@@ -1,3 +1,9 @@
+2012-09-06  Stefan Monnier  <address@hidden>
+
+       * emacs-lisp/cl-macs.el (cl--do-arglist): Understand _ on &key args
+       (bug#12367).
+       (cl--make-usage-args): Strip _ from argument names.
+
 2012-09-06  RĂ¼diger Sonderfeld  <address@hidden>
 
        * progmodes/vhdl-mode.el (vhdl-speedbar-initialize): Don't use

=== modified file 'lisp/emacs-lisp/cl-macs.el'
--- a/lisp/emacs-lisp/cl-macs.el        2012-09-04 17:40:25 +0000
+++ b/lisp/emacs-lisp/cl-macs.el        2012-09-06 15:35:08 +0000
@@ -393,9 +393,14 @@
       (mapcar (lambda (x)
                 (cond
                  ((symbolp x)
-                  (if (eq ?\& (aref (symbol-name x) 0))
-                      (setq state x)
-                    (make-symbol (upcase (symbol-name x)))))
+                  (let ((first (aref (symbol-name x) 0)))
+                    (if (eq ?\& first)
+                        (setq state x)
+                      ;; Strip a leading underscore, since it only
+                      ;; means that this argument is unused.
+                      (make-symbol (upcase (if (eq ?_ first)
+                                               (substring (symbol-name x) 1)
+                                             (symbol-name x)))))))
                  ((not (consp x)) x)
                  ((memq state '(nil &rest)) (cl--make-usage-args x))
                  (t      ;(VAR INITFORM SVAR) or ((KEYWORD VAR) INITFORM SVAR).
@@ -479,7 +484,13 @@
          (let ((arg (pop args)))
            (or (consp arg) (setq arg (list arg)))
            (let* ((karg (if (consp (car arg)) (caar arg)
-                          (intern (format ":%s" (car arg)))))
+                           (let ((name (symbol-name (car arg))))
+                             ;; Strip a leading underscore, since it only
+                             ;; means that this argument is unused, but
+                             ;; shouldn't affect the key's name (bug#12367).
+                             (if (eq ?_ (aref name 0))
+                                 (setq name (substring name 1)))
+                             (intern (format ":%s" name)))))
                   (varg (if (consp (car arg)) (cl-cadar arg) (car arg)))
                   (def (if (cdr arg) (cadr arg)
                          (or (car cl--bind-defs) (cadr (assq varg 
cl--bind-defs)))))


reply via email to

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