diff options
| author | Stefan Monnier | 2012-09-06 11:35:08 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2012-09-06 11:35:08 -0400 |
| commit | d458ef98df8da78f9f102da5f4a066df400ca8cd (patch) | |
| tree | 79aa8d1e0b647f9ff634452cf17a7c348b5bc5c3 | |
| parent | fcbfbdea93bf0a9ba7bc0ab3e4e3f37e3d089588 (diff) | |
| download | emacs-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/ChangeLog | 6 | ||||
| -rw-r--r-- | lisp/emacs-lisp/cl-macs.el | 19 |
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 @@ | |||
| 1 | 2012-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 | |||
| 1 | 2012-09-06 RĂ¼diger Sonderfeld <ruediger@c-plusplus.de> | 7 | 2012-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))))) |