[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r101123: * lisp/emacs-lisp/autoload.e
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r101123: * lisp/emacs-lisp/autoload.el (make-autoload): Preload the macros's |
Date: |
Wed, 18 Aug 2010 12:21:43 +0200 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 101123
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Wed 2010-08-18 12:21:43 +0200
message:
* lisp/emacs-lisp/autoload.el (make-autoload): Preload the macros's
declarations that are useful before running the macro.
* src/eval.c (Fdefmacro): Only obey one declaration.
modified:
lisp/ChangeLog
lisp/emacs-lisp/autoload.el
src/ChangeLog
src/eval.c
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2010-08-18 07:45:14 +0000
+++ b/lisp/ChangeLog 2010-08-18 10:21:43 +0000
@@ -1,3 +1,8 @@
+2010-08-18 Stefan Monnier <address@hidden>
+
+ * emacs-lisp/autoload.el (make-autoload): Preload the macros's
+ declarations that are useful before running the macro.
+
2010-08-18 Katsumi Yamaoka <address@hidden>
* image.el (create-animated-image): Don't add heuristic mask to image
@@ -5,8 +10,8 @@
2010-08-18 Jan Djärv <address@hidden>
- * term/ns-win.el (ns-get-pasteboard, ns-set-pasteboard): Use
- QCLIPBOARD instead of QPRIMARY (Bug#6677).
+ * term/ns-win.el (ns-get-pasteboard, ns-set-pasteboard):
+ Use QCLIPBOARD instead of QPRIMARY (Bug#6677).
2010-08-17 Stefan Monnier <address@hidden>
=== modified file 'lisp/emacs-lisp/autoload.el'
--- a/lisp/emacs-lisp/autoload.el 2010-04-18 21:45:44 +0000
+++ b/lisp/emacs-lisp/autoload.el 2010-08-18 10:21:43 +0000
@@ -109,29 +109,48 @@
(let* ((macrop (memq car '(defmacro defmacro*)))
(name (nth 1 form))
(args (case car
- ((defun defmacro defun* defmacro*
- define-overloadable-function) (nth 2 form))
- ((define-skeleton) '(&optional str arg))
- ((define-generic-mode define-derived-mode
- define-compilation-mode) nil)
- (t)))
+ ((defun defmacro defun* defmacro*
+ define-overloadable-function) (nth 2 form))
+ ((define-skeleton) '(&optional str arg))
+ ((define-generic-mode define-derived-mode
+ define-compilation-mode) nil)
+ (t)))
(body (nthcdr (get car 'doc-string-elt) form))
(doc (if (stringp (car body)) (pop body))))
(when (listp args)
;; Add the usage form at the end where describe-function-1
;; can recover it.
(setq doc (help-add-fundoc-usage doc args)))
- ;; `define-generic-mode' quotes the name, so take care of that
- (list 'autoload (if (listp name) name (list 'quote name)) file doc
- (or (and (memq car '(define-skeleton define-derived-mode
- define-generic-mode
- easy-mmode-define-global-mode
- define-global-minor-mode
- define-globalized-minor-mode
- easy-mmode-define-minor-mode
- define-minor-mode)) t)
- (eq (car-safe (car body)) 'interactive))
- (if macrop (list 'quote 'macro) nil))))
+ (let ((exp
+ ;; `define-generic-mode' quotes the name, so take care of that
+ (list 'autoload (if (listp name) name (list 'quote name))
+ file doc
+ (or (and (memq car '(define-skeleton define-derived-mode
+ define-generic-mode
+ easy-mmode-define-global-mode
+ define-global-minor-mode
+ define-globalized-minor-mode
+ easy-mmode-define-minor-mode
+ define-minor-mode)) t)
+ (eq (car-safe (car body)) 'interactive))
+ (if macrop (list 'quote 'macro) nil))))
+ (when macrop
+ ;; Special case to autoload some of the macro's declarations.
+ (let ((decls (nth (if (stringp (nth 3 form)) 4 3) form))
+ (exps '()))
+ (when (eq (car decls) 'declare)
+ ;; FIXME: We'd like to reuse macro-declaration-function,
+ ;; but we can't since it doesn't return anything.
+ (dolist (decl decls)
+ (case (car-safe decl)
+ (indent
+ (push `(put ',name 'lisp-indent-function ',(cadr decl))
+ exps))
+ (doc-string
+ (push `(put ',name 'doc-string-elt ',(cadr decl)) exps))))
+ (when exps
+ (setq exp `(progn ,exp ,@exps))))))
+ exp)))
;; For defclass forms, use `eieio-defclass-autoload'.
((eq car 'defclass)
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2010-08-18 09:27:53 +0000
+++ b/src/ChangeLog 2010-08-18 10:21:43 +0000
@@ -1,5 +1,7 @@
2010-08-18 Stefan Monnier <address@hidden>
+ * eval.c (Fdefmacro): Only obey one declaration.
+
* casefiddle.c (casify_region): Setup gl_state.
2010-08-18 Jan Djärv <address@hidden>
=== modified file 'src/eval.c'
--- a/src/eval.c 2010-08-06 19:07:16 +0000
+++ b/src/eval.c 2010-08-18 10:21:43 +0000
@@ -690,8 +690,8 @@
tail = XCDR (tail);
}
- while (CONSP (Fcar (tail))
- && EQ (Fcar (Fcar (tail)), Qdeclare))
+ if (CONSP (Fcar (tail))
+ && EQ (Fcar (Fcar (tail)), Qdeclare))
{
if (!NILP (Vmacro_declaration_function))
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r101123: * lisp/emacs-lisp/autoload.el (make-autoload): Preload the macros's,
Stefan Monnier <=