aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2012-09-06 11:35:08 -0400
committerStefan Monnier2012-09-06 11:35:08 -0400
commitd458ef98df8da78f9f102da5f4a066df400ca8cd (patch)
tree79aa8d1e0b647f9ff634452cf17a7c348b5bc5c3
parentfcbfbdea93bf0a9ba7bc0ab3e4e3f37e3d089588 (diff)
downloademacs-d458ef98df8da78f9f102da5f4a066df400ca8cd.tar.gz
emacs-d458ef98df8da78f9f102da5f4a066df400ca8cd.zip
* lisp/emacs-lisp/cl-macs.el (cl--do-arglist): Understand _ on &key args.
(cl--make-usage-args): Strip _ from argument names. Fixes: debbugs:12367
-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)))))