aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/emacs-lisp/cl-macs.el19
2 files changed, 21 insertions, 4 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1e09fe0850d..37064b6680b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
12012-09-06 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/cl-macs.el (cl--do-arglist): Understand _ on &key args
4 (bug#12367).
5 (cl--make-usage-args): Strip _ from argument names.
6
12012-09-06 RĂ¼diger Sonderfeld <ruediger@c-plusplus.de> 72012-09-06 RĂ¼diger Sonderfeld <ruediger@c-plusplus.de>
2 8
3 * progmodes/vhdl-mode.el (vhdl-speedbar-initialize): Don't use 9 * progmodes/vhdl-mode.el (vhdl-speedbar-initialize): Don't use
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index aba412cc8f5..312c37261e2 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -393,9 +393,14 @@ its argument list allows full Common Lisp conventions."
393 (mapcar (lambda (x) 393 (mapcar (lambda (x)
394 (cond 394 (cond
395 ((symbolp x) 395 ((symbolp x)
396 (if (eq ?\& (aref (symbol-name x) 0)) 396 (let ((first (aref (symbol-name x) 0)))
397 (setq state x) 397 (if (eq ?\& first)
398 (make-symbol (upcase (symbol-name x))))) 398 (setq state x)
399 ;; Strip a leading underscore, since it only
400 ;; means that this argument is unused.
401 (make-symbol (upcase (if (eq ?_ first)
402 (substring (symbol-name x) 1)
403 (symbol-name x)))))))
399 ((not (consp x)) x) 404 ((not (consp x)) x)
400 ((memq state '(nil &rest)) (cl--make-usage-args x)) 405 ((memq state '(nil &rest)) (cl--make-usage-args x))
401 (t ;(VAR INITFORM SVAR) or ((KEYWORD VAR) INITFORM SVAR). 406 (t ;(VAR INITFORM SVAR) or ((KEYWORD VAR) INITFORM SVAR).
@@ -479,7 +484,13 @@ its argument list allows full Common Lisp conventions."
479 (let ((arg (pop args))) 484 (let ((arg (pop args)))
480 (or (consp arg) (setq arg (list arg))) 485 (or (consp arg) (setq arg (list arg)))
481 (let* ((karg (if (consp (car arg)) (caar arg) 486 (let* ((karg (if (consp (car arg)) (caar arg)
482 (intern (format ":%s" (car arg))))) 487 (let ((name (symbol-name (car arg))))
488 ;; Strip a leading underscore, since it only
489 ;; means that this argument is unused, but
490 ;; shouldn't affect the key's name (bug#12367).
491 (if (eq ?_ (aref name 0))
492 (setq name (substring name 1)))
493 (intern (format ":%s" name)))))
483 (varg (if (consp (car arg)) (cl-cadar arg) (car arg))) 494 (varg (if (consp (car arg)) (cl-cadar arg) (car arg)))
484 (def (if (cdr arg) (cadr arg) 495 (def (if (cdr arg) (cadr arg)
485 (or (car cl--bind-defs) (cadr (assq varg cl--bind-defs))))) 496 (or (car cl--bind-defs) (cadr (assq varg cl--bind-defs)))))