unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
@ 2006-05-14  2:39 Richard Stallman
  2006-05-24 16:35 ` Chong Yidong
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Stallman @ 2006-05-14  2:39 UTC (permalink / raw)


I agree that this is a bug.  Can someone work on it, then ack?

------- Start of forwarded message -------
From: "Drew Adams" <drew.adams@oracle.com>
To: "Emacs-Pretest-Bug" <emacs-pretest-bug@gnu.org>
Date: Sat, 13 May 2006 10:48:58 -0700
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Subject: No doc for cl stuff even after loading cl?
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=failed 
	version=3.0.4

emacs -Q

C-h f flet finds no match. Normal
M-x load-library cl
C-h f flet then gives this:

  flet is an autoloaded Lisp macro in `cl-macs'.
  [Arg list not available until function definition is loaded.]

  Not documented.

That doesn't seem right. What's a user to do, chase down the various
cl libraries (in this case cl-macs.el, presumably) in order to get
doc? 

If a user is asking for doc, we should give it to him/her, instead of
saying that is not available until the function definition is
loaded. This looks like Emacs is deliberately being uncooperative,
making the user jump through hoops to get what s?he asks for. If we
want to avoid loading large libraries, then perhaps we should split
off the doc in such cases so we can provide it without loading
everything.



In GNU Emacs 22.0.50.1 (i386-mingw-nt5.1.2600)
 of 2006-03-20 on W2ONE
X server distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --cflags -Id:/g/include'

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: ENU
  locale-coding-system: cp1252
  default-enable-multibyte-characters: t

Major mode: Info

Minor modes in effect:
  encoded-kbd-mode: t
  tooltip-mode: t
  auto-compression-mode: t
  tool-bar-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  unify-8859-on-encoding-mode: t
  utf-translate-cjk-mode: t
  line-number-mode: t

Recent input:
<double-wheel-down> <triple-wheel-down> <triple-wheel-down> 
<wheel-up> <double-wheel-up> <triple-wheel-up> <wheel-down> 
<wheel-down> <double-wheel-down> <triple-wheel-down> 
<triple-wheel-down> <triple-wheel-up> <wheel-down> 
<wheel-down> <down-mouse-1> <mouse-1> u u <help-echo> 
<down-mouse-2> <mouse-2> <help-echo> <down-mouse-2> 
<mouse-2> <wheel-down> <double-wheel-down> <triple-wheel-down> 
<wheel-up> <wheel-down> <wheel-down> <double-wheel-up> 
<triple-wheel-down> <wheel-down> <wheel-down> <wheel-down> 
<wheel-down> <wheel-down> <wheel-down> <wheel-down> 
<wheel-down> <wheel-down> <double-wheel-down> <triple-wheel-down> 
<wheel-down> <wheel-down> <double-wheel-down> <wheel-down> 
<wheel-down> <wheel-down> <wheel-down> <double-wheel-down> 
<triple-wheel-down> <down-mouse-1> <mouse-1> M-v <help-echo> 
<help-echo> <help-echo> <down-mouse-1> <mouse-1> C-h 
f f l e t <return> C-g M-x l o a d - l i b <return> 
c l <return> C-h f f l e t <return> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <menu-bar> <help-menu> <re
port-emacs-bug>

Recent messages:
Making completion list... [3 times]
Quit [2 times]
Loading info...
Loading easymenu...done
Loading info...done
Composing main Info directory...done
Quit [2 times]
Loading cl...done
Type C-x 1 to remove help window.  
Loading emacsbug...done



_______________________________________________
emacs-pretest-bug mailing list
emacs-pretest-bug@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug
------- End of forwarded message -------

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
  2006-05-14  2:39 [drew.adams@oracle.com: No doc for cl stuff even after loading cl?] Richard Stallman
@ 2006-05-24 16:35 ` Chong Yidong
  2006-05-24 17:35   ` Stefan Monnier
  0 siblings, 1 reply; 10+ messages in thread
From: Chong Yidong @ 2006-05-24 16:35 UTC (permalink / raw)
  Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> I agree that this is a bug.  Can someone work on it, then ack?

Having looked into this, I think the only way around the current
behavior would be to have cl.el load all the cl-* libraries instead of
autoloading individual functions (which is Bad), or pasting all the
documentation strings in the cl-* files into cl.el for autoloading
(which is Silly).  I don't think this is worth fixing.

> From: "Drew Adams" <drew.adams@oracle.com>
> Subject: No doc for cl stuff even after loading cl?
> To: "Emacs-Pretest-Bug" <emacs-pretest-bug@gnu.org>
>
> emacs -Q
>
> C-h f flet finds no match. Normal
> M-x load-library cl
> C-h f flet then gives this:
>
>   flet is an autoloaded Lisp macro in `cl-macs'.
>   [Arg list not available until function definition is loaded.]
>
>   Not documented.
>
> That doesn't seem right. What's a user to do, chase down the various
> cl libraries (in this case cl-macs.el, presumably) in order to get
> doc? 
>
> If a user is asking for doc, we should give it to him/her, instead of
> saying that is not available until the function definition is
> loaded. This looks like Emacs is deliberately being uncooperative,
> making the user jump through hoops to get what s?he asks for. If we
> want to avoid loading large libraries, then perhaps we should split
> off the doc in such cases so we can provide it without loading
> everything.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
  2006-05-24 16:35 ` Chong Yidong
@ 2006-05-24 17:35   ` Stefan Monnier
  2006-05-25  0:37     ` Richard Stallman
  0 siblings, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2006-05-24 17:35 UTC (permalink / raw)
  Cc: rms, emacs-devel

>> I agree that this is a bug.  Can someone work on it, then ack?
> Having looked into this, I think the only way around the current
> behavior would be to have cl.el load all the cl-* libraries instead of
> autoloading individual functions (which is Bad), or pasting all the
> documentation strings in the cl-* files into cl.el for autoloading
> (which is Silly).  I don't think this is worth fixing.

We could add ;;;###autoload cookies in cl-macs.el and friends and then
arrange for autoloads.el to put the autoload statements in cl.el (rather
than loaddefs.el) by adding file-local settings of generated-autoload-file.

Such a trick could also be used for a few other cases (I'm thinking of the
autoloads for makenifo.el and texnfo-upd.el which are currently
hand-written in texinfo.el, but I'm sure there are others).

This would be made easier if autoload.el were made to read the file local
variables.  Incidentally, reading file local variables is also needed to
properly implement the no-update-autoloads flag.


        Stefan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
  2006-05-24 17:35   ` Stefan Monnier
@ 2006-05-25  0:37     ` Richard Stallman
  2006-05-29  9:09       ` Stefan Monnier
  2007-06-27 19:19       ` Stefan Monnier
  0 siblings, 2 replies; 10+ messages in thread
From: Richard Stallman @ 2006-05-25  0:37 UTC (permalink / raw)
  Cc: cyd, emacs-devel

    We could add ;;;###autoload cookies in cl-macs.el and friends and then
    arrange for autoloads.el to put the autoload statements in cl.el (rather
    than loaddefs.el) by adding file-local settings of generated-autoload-file.

Would you please do that?

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
  2006-05-25  0:37     ` Richard Stallman
@ 2006-05-29  9:09       ` Stefan Monnier
  2007-06-27 19:19       ` Stefan Monnier
  1 sibling, 0 replies; 10+ messages in thread
From: Stefan Monnier @ 2006-05-29  9:09 UTC (permalink / raw)
  Cc: cyd, emacs-devel

>>>>> "Richard" == Richard Stallman <rms@gnu.org> writes:

>     We could add ;;;###autoload cookies in cl-macs.el and friends and then
>     arrange for autoloads.el to put the autoload statements in cl.el (rather
>     than loaddefs.el) by adding file-local settings of generated-autoload-file.

> Would you please do that?

OK, so I've implemented it, but here's the rub: it requires a fair bit of
changes, because of the way autoload.el works.  Basically, currently
autoload.el first looks at the loaddefs.el file to determine where (within
loaddefs.el) to put autoloads and which files are up-to-date, but if we
allow file-local settings of generated-autoload-file, then we basically have
to do it the other way around: first look at the file to see in which other
file the autoloads go, then check there to see if they're up-to-date already.

See the patch below which has been only lightly tested.  I'm fairly
satisfied with this new code, although I'd rather test it more seriously
before installing it, and maybe it should wait post-22.  The most
satisfactory part of this code is that it gets rid of most of the O(N^2)
behavior of the old code.  The only remaining O(N^2) situation is when
encountering a O(N) new files, such as when building the initial loaddefs.el
from scratch (but not from ldefs-boot.el where we should see a nice O(N)).

Once this patch can be installed, I can install the subsequent patches that
add the autload cookies to the cl-*.el files.


        Stefan


--- autoload.el	28 mai 2006 22:48:22 -0400	1.115
+++ autoload.el	29 mai 2006 04:55:46 -0400	
@@ -41,6 +41,7 @@
 A `.el' file can set this in its local variables section to make its
 autoloads go somewhere else.  The autoload file is assumed to contain a
 trailer starting with a FormFeed character.")
+(put 'generated-autoload-file 'safe-local-variable 'stringp)
 
 (defconst generate-autoload-cookie ";;;###autoload"
   "Magic comment indicating the following form should be autoloaded.
@@ -153,16 +154,11 @@
 ;; the doc-string in FORM.
 ;; Those properties are now set in lisp-mode.el.
 
+(defun autoload-generated-file ()
+  (expand-file-name generated-autoload-file
+                    (if (not (local-variable-p 'generated-autoload-file))
+                        (expand-file-name "lisp" source-directory))))
 
-(defun autoload-trim-file-name (file)
-  ;; Returns a relative file path for FILE
-  ;; starting from the directory that loaddefs.el is in.
-  ;; That is normally a directory in load-path,
-  ;; which means Emacs will be able to find FILE when it looks.
-  ;; Any extra directory names here would prevent finding the file.
-  (setq file (expand-file-name file))
-  (file-relative-name file
-		      (file-name-directory generated-autoload-file)))
 
 (defun autoload-read-section-header ()
   "Read a section header form.
@@ -257,9 +253,7 @@
   "Insert the section-header line,
 which lists the file name and which functions are in it, etc."
   (insert generate-autoload-section-header)
-  (prin1 (list 'autoloads autoloads load-name
-	       (if (stringp file) (autoload-trim-file-name file) file)
-	       time)
+  (prin1 (list 'autoloads autoloads load-name file time)
 	 outbuf)
   (terpri outbuf)
   ;; Break that line at spaces, to avoid very long lines.
@@ -276,16 +270,20 @@
 (defun autoload-find-file (file)
   "Fetch file and put it in a temp buffer.  Return the buffer."
   ;; It is faster to avoid visiting the file.
+  (let ((dir default-directory))
   (with-current-buffer (get-buffer-create " *autoload-file*")
     (kill-all-local-variables)
     (erase-buffer)
     (setq buffer-undo-list t
           buffer-read-only nil)
     (emacs-lisp-mode)
+      (setq default-directory dir)
     (insert-file-contents file nil)
+      (if (file-name-directory file)
+          (setq default-directory (expand-file-name (file-name-directory file))))
     (let ((enable-local-variables :safe))
       (hack-local-variables))
-    (current-buffer)))
+      (current-buffer))))
 
 (defvar no-update-autoloads nil
   "File local variable to prevent scanning this file for autoload cookies.")
@@ -298,8 +296,27 @@
 are used.
 Return non-nil in the case where no autoloads were added at point."
   (interactive "fGenerate autoloads for file: ")
-  (let ((outbuf (current-buffer))
-	(autoloads-done '())
+  (autoload-generate-file-autoloads file (current-buffer)))
+
+;; When called from `generate-file-autoloads' we should ignore
+;; `generated-autoload-file' altogether.  When called from
+;; `update-file-autoloads' we don't know `outbuf'.  And when called from
+;; `update-directory-autoloads' it's in between: we know the default
+;; `outbuf' but we should obey any file-local setting of
+;; `generated-autoload-file'.  --Stef
+(defun autoload-generate-file-autoloads (file &optional outbuf outfile)
+  "Insert an autoload section for FILE in the appropriate buffer.
+Autoloads are generated for defuns and defmacros in FILE
+marked by `generate-autoload-cookie' (which see).
+If FILE is being visited in a buffer, the contents of the buffer are used.
+OUTBUF is the buffer in which the autoload statements will be inserted.
+OUTFILE is the file name of OUTBUF.
+If OUTFILE is non-nil and FILE specifies an `generated-autoload-file'
+different from OUTFILE, then OUTBUF is ignored.
+If OUTBUF is nil, it will be determined by `autoload-generated-file'.
+Return non-nil in the case where no autoloads were added at point.
+Can throw `up-to-date'."
+  (let ((autoloads-done '())
 	(load-name (let ((name (file-name-nondirectory file)))
 		     (if (string-match "\\.elc?\\(\\.\\|$\\)" name)
 			 (substring name 0 (match-beginning 0))
@@ -307,33 +324,16 @@
 	(print-length nil)
 	(print-readably t)		; This does something in Lucid Emacs.
 	(float-output-format nil)
-	(done-any nil)
-	(visited (get-file-buffer file))
-        output-start)
-
-    ;; If the autoload section we create here uses an absolute
-    ;; file name for FILE in its header, and then Emacs is installed
-    ;; under a different path on another system,
-    ;; `update-autoloads-here' won't be able to find the files to be
-    ;; autoloaded.  So, if FILE is in the same directory or a
-    ;; subdirectory of the current buffer's directory, we'll make it
-    ;; relative to the current buffer's directory.
-    (setq file (expand-file-name file))
-    (let* ((source-truename (file-truename file))
-	   (dir-truename (file-name-as-directory
-			  (file-truename default-directory)))
-	   (len (length dir-truename)))
-      (if (and (< len (length source-truename))
-	       (string= dir-truename (substring source-truename 0 len)))
-	  (setq file (substring source-truename len))))
+        (otherbuf nil)
+        (absfile (expand-file-name file))
+        relfile output-start)
 
-    (with-current-buffer (or visited
+    (with-current-buffer (or (get-file-buffer file)
                              ;; It is faster to avoid visiting the file.
                              (autoload-find-file file))
       ;; Obey the no-update-autoloads file local variable.
       (unless no-update-autoloads
         (message "Generating autoloads for %s..." file)
-        (setq output-start (with-current-buffer outbuf (point)))
         (save-excursion
           (save-restriction
             (widen)
@@ -342,9 +342,22 @@
               (skip-chars-forward " \t\n\f")
               (cond
                ((looking-at (regexp-quote generate-autoload-cookie))
+                ;; If not done yet, figure out where to insert this text.
+                (unless output-start
+                  (when (and outfile
+                             (not (equal outfile (autoload-generated-file))))
+                    (setq outbuf nil)
+                    (setq otherbuf t))
+                  (unless outbuf
+                    (setq outbuf (autoload-find-destination absfile)))
+                  (with-current-buffer outbuf
+                    (setq relfile (file-relative-name absfile))
+                    (setq output-start (point)))
+                  ;; (message "file=%S, relfile=%S, dest=%S"
+                  ;;          file relfile (autoload-generated-file))
+                  )
                 (search-forward generate-autoload-cookie)
                 (skip-chars-forward " \t")
-                (setq done-any t)
                 (if (eolp)
                     ;; Read the next form and make an autoload.
                     (let* ((form (prog1 (read (current-buffer))
@@ -374,23 +387,27 @@
                 (forward-sexp 1)
                 (forward-line 1))))))
 
-        (when done-any
+        (when output-start
           (with-current-buffer outbuf
             (save-excursion
               ;; Insert the section-header line which lists the file name
               ;; and which functions are in it, etc.
               (goto-char output-start)
               (autoload-insert-section-header
-               outbuf autoloads-done load-name file
-               (nth 5 (file-attributes file)))
-              (insert ";;; Generated autoloads from "
-                      (autoload-trim-file-name file) "\n"))
+               outbuf autoloads-done load-name relfile
+               (nth 5 (file-attributes relfile)))
+              (insert ";;; Generated autoloads from " relfile "\n"))
             (insert generate-autoload-section-trailer)))
         (message "Generating autoloads for %s...done" file))
-      (or visited
+      (or buffer-file-name              ;This is not our own temp buffer.
           ;; We created this buffer, so we should kill it.
           (kill-buffer (current-buffer))))
-    (not done-any)))
+    (or (not output-start) otherbuf)))
+
+(defun autoload-save-buffers ()
+  (while autoload-modified-buffers
+    (with-current-buffer (pop autoload-modified-buffers)
+      (save-buffer))))
 \f
 ;;;###autoload
 (defun update-file-autoloads (file &optional save-after)
@@ -401,35 +418,41 @@
 
 Return FILE if there was no autoload cookie in it, else nil."
   (interactive "fUpdate autoloads for file: \np")
+  (let ((no-autoloads nil))
+    (if (catch 'up-to-date
+          (progn (setq no-autoloads (autoload-generate-file-autoloads file))
+                 nil))
+        (if (interactive-p)
+            (message "Autoload section for %s is up to date." file))
+      (if save-after (autoload-save-buffers)))
+    (if no-autoloads file)))
+
+(defvar autoload-modified-buffers nil)
+
+(defun autoload-find-destination (file)
+  "Find the destination point of the current buffer's autoloads.
+FILE is the file name of the current buffer.
+Returns a buffer whose point is placed at the requested location."
+  ;; (message "autoload-find-destination %S" file)
   (let ((load-name (let ((name (file-name-nondirectory file)))
-		     (if (string-match "\\.elc?\\(\\.\\|$\\)" name)
+		     (if (string-match "\\.elc?\\(\\.\\|\\'\\)" name)
 			 (substring name 0 (match-beginning 0))
 		       name)))
-	(found nil)
-	(existing-buffer (get-file-buffer file))
-	(no-autoloads nil))
-    (save-excursion
-      ;; We want to get a value for generated-autoload-file from
-      ;; the local variables section if it's there.
-      (if existing-buffer
-	  (set-buffer existing-buffer))
+        (existing-buffer (if buffer-file-name (current-buffer)))
+	(found nil))
+    (with-current-buffer
       ;; We must read/write the file without any code conversion,
       ;; but still decode EOLs.
       (let ((coding-system-for-read 'raw-text))
-	(set-buffer (find-file-noselect
-		     (autoload-ensure-default-file
-		      (expand-file-name generated-autoload-file
-					(expand-file-name "lisp"
-							  source-directory)))))
+          (find-file-noselect
+           (autoload-ensure-default-file (autoload-generated-file))))
 	;; This is to make generated-autoload-file have Unix EOLs, so
 	;; that it is portable to all platforms.
-	(setq buffer-file-coding-system 'raw-text-unix))
+      (setq buffer-file-coding-system 'raw-text-unix)
       (or (> (buffer-size) 0)
 	  (error "Autoloads file %s does not exist" buffer-file-name))
       (or (file-writable-p buffer-file-name)
 	  (error "Autoloads file %s is not writable" buffer-file-name))
-      (save-excursion
-	(save-restriction
 	  (widen)
 	  (goto-char (point-min))
 	  ;; Look for the section for LOAD-NAME.
@@ -439,42 +462,28 @@
 	      (cond ((string= (nth 2 form) load-name)
 		     ;; We found the section for this file.
 		     ;; Check if it is up to date.
-		     (let ((begin (match-beginning 0))
-			   (last-time (nth 4 form))
-			   (file-time (nth 5 (file-attributes file))))
 		       (if (and (or (null existing-buffer)
 				    (not (buffer-modified-p existing-buffer)))
-				(listp last-time) (= (length last-time) 2)
-				(not (time-less-p last-time file-time)))
-			   (progn
-			     (if (interactive-p)
-				 (message "\
-Autoload section for %s is up to date."
-					  file))
-			     (setq found 'up-to-date))
-			 (search-forward generate-autoload-section-trailer)
-			 (delete-region begin (point))
-			 (setq found t))))
+                          (not (time-less-p (nth 4 form)
+                                            (nth 5 (file-attributes file)))))
+                     (throw 'up-to-date t)
+                   (autoload-remove-section (match-beginning 0))
+                   (setq found t)))
 		    ((string< load-name (nth 2 form))
 		     ;; We've come to a section alphabetically later than
 		     ;; LOAD-NAME.  We assume the file is in order and so
 		     ;; there must be no section for LOAD-NAME.  We will
 		     ;; insert one before the section here.
 		     (goto-char (match-beginning 0))
-		     (setq found 'new)))))
+                 (setq found t)))))
 	  (or found
 	      (progn
-		(setq found 'new)
 		;; No later sections in the file.  Put before the last page.
 		(goto-char (point-max))
 		(search-backward "\f" nil t)))
-	  (or (eq found 'up-to-date)
-	      (setq no-autoloads (generate-file-autoloads file)))))
-      (and save-after
-	   (buffer-modified-p)
-	   (save-buffer))
-
-      (if no-autoloads file))))
+      (unless (memq (current-buffer) autoload-modified-buffers)
+        (push (current-buffer) autoload-modified-buffers))
+      (current-buffer))))
 
 (defun autoload-remove-section (begin)
   (goto-char begin)
@@ -504,18 +513,15 @@
 			       dirs)))
 	 (this-time (current-time))
 	 (no-autoloads nil)		;files with no autoload cookies.
-	 (autoloads-file
-	  (expand-file-name generated-autoload-file
-			    (expand-file-name "lisp" source-directory)))
-	 (top-dir (file-name-directory autoloads-file)))
+	 (autoloads-file (autoload-generated-file)))
 
     (with-current-buffer
 	(find-file-noselect (autoload-ensure-default-file autoloads-file))
       (save-excursion
 
 	;; Canonicalize file names and remove the autoload file itself.
-	(setq files (delete (autoload-trim-file-name buffer-file-name)
-			    (mapcar 'autoload-trim-file-name files)))
+	(setq files (delete (file-relative-name buffer-file-name)
+			    (mapcar 'file-relative-name files)))
 
 	(goto-char (point-min))
 	(while (search-forward generate-autoload-section-header nil t)
@@ -535,19 +541,27 @@
 			   (push file no-autoloads)
 			   (setq files (delete file files)))))))
 		  ((not (stringp file)))
-		  ((not (file-exists-p (expand-file-name file top-dir)))
+		  ((not (file-exists-p file))
 		   ;; Remove the obsolete section.
 		   (autoload-remove-section (match-beginning 0)))
-		  ((equal (nth 4 form) (nth 5 (file-attributes file)))
+		  ((not (time-less-p (nth 4 form)
+                                     (nth 5 (file-attributes file))))
 		   ;; File hasn't changed.
 		   nil)
 		  (t
-		   (update-file-autoloads file)))
+                   (autoload-remove-section (match-beginning 0))
+                   (if (catch 'up-to-date
+                         (autoload-generate-file-autoloads
+                          file (current-buffer) (autoload-generated-file)))
+                       (push file no-autoloads))))
 	    (setq files (delete file files)))))
       ;; Elements remaining in FILES have no existing autoload sections yet.
-      (setq no-autoloads
-	    (append no-autoloads
-		    (delq nil (mapcar 'update-file-autoloads files))))
+      (dolist (file files)
+        (if (catch 'up-to-date
+              (autoload-generate-file-autoloads
+               file nil (autoload-generated-file)))
+            (push file no-autoloads)))
+
       (when no-autoloads
 	;; Sort them for better readability.
 	(setq no-autoloads (sort no-autoloads 'string<))
@@ -558,7 +572,8 @@
 	 (current-buffer) nil nil no-autoloads this-time)
 	(insert generate-autoload-section-trailer))
 
-      (save-buffer))))
+      (save-buffer)
+      (autoload-save-buffers))))
 
 (define-obsolete-function-alias 'update-autoloads-from-directories
     'update-directory-autoloads "22.1")

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
  2006-05-25  0:37     ` Richard Stallman
  2006-05-29  9:09       ` Stefan Monnier
@ 2007-06-27 19:19       ` Stefan Monnier
  2007-06-27 19:52         ` Juanma Barranquero
  2007-06-27 23:42         ` Richard Stallman
  1 sibling, 2 replies; 10+ messages in thread
From: Stefan Monnier @ 2007-06-27 19:19 UTC (permalink / raw)
  To: rms; +Cc: cyd, emacs-devel

>     We could add ;;;###autoload cookies in cl-macs.el and friends and then
>     arrange for autoloads.el to put the autoload statements in cl.el
>     (rather than loaddefs.el) by adding file-local settings of
>     generated-autoload-file.

> Would you please do that?

Done, except they're put in cl-loaddefs.el which is then loaded by cl.el.


        Stefan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
  2007-06-27 19:19       ` Stefan Monnier
@ 2007-06-27 19:52         ` Juanma Barranquero
  2007-06-28 15:12           ` Stefan Monnier
  2007-06-27 23:42         ` Richard Stallman
  1 sibling, 1 reply; 10+ messages in thread
From: Juanma Barranquero @ 2007-06-27 19:52 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

On 6/27/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> Done, except they're put in cl-loaddefs.el which is then loaded by cl.el.

There's a problem bootstrapping:

"./oo-spd/i386/temacs.exe" -batch -l loadup bootstrap
Loading loadup.el (source)...
Using load-path (../lisp c:/emacs/HEAD/lisp/emacs-lisp
c:/emacs/HEAD/lisp/language c:/emacs/HEAD/lisp/international
c:/emacs/HEAD/lisp/textmodes)
Loading emacs-lisp/byte-run (source)...
Loading emacs-lisp/backquote (source)...
Loading subr (source)...
Loading version.el (source)...
Loading widget (source)...
Loading custom (source)...
Loading emacs-lisp/map-ynp (source)...
Loading env (source)...
Loading cus-start (source)...
Loading international/mule (source)...
Loading international/mule-conf.el (source)...
Loading format (source)...
Loading bindings (source)...
Loading c:/emacs/HEAD/lisp/files.el (source)...
Loading c:/emacs/HEAD/lisp/cus-face.el (source)...
Loading c:/emacs/HEAD/lisp/faces.el (source)...
Loading c:/emacs/HEAD/lisp/emacs-lisp/cl-loaddefs.el (source)...
Tried to load `cl-macs' before `cl'!
make[1]: *** [bootstrap-emacs] Error -1

             Juanma

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
  2007-06-27 19:19       ` Stefan Monnier
  2007-06-27 19:52         ` Juanma Barranquero
@ 2007-06-27 23:42         ` Richard Stallman
  1 sibling, 0 replies; 10+ messages in thread
From: Richard Stallman @ 2007-06-27 23:42 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: cyd, emacs-devel

Thanks.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
  2007-06-27 19:52         ` Juanma Barranquero
@ 2007-06-28 15:12           ` Stefan Monnier
  2007-06-28 15:45             ` Juanma Barranquero
  0 siblings, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2007-06-28 15:12 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: raman, emacs-devel

> There's a problem bootstrapping:

> Loading c:/emacs/HEAD/lisp/emacs-lisp/cl-loaddefs.el (source)...
> Tried to load `cl-macs' before `cl'!
> make[1]: *** [bootstrap-emacs] Error -1

I believe this is now fixed,


        Stefan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [drew.adams@oracle.com: No doc for cl stuff even after loading cl?]
  2007-06-28 15:12           ` Stefan Monnier
@ 2007-06-28 15:45             ` Juanma Barranquero
  0 siblings, 0 replies; 10+ messages in thread
From: Juanma Barranquero @ 2007-06-28 15:45 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

On 6/28/07, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> I believe this is now fixed,

You believe correctly, sir.

Thanks,

             Juanma

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2007-06-28 15:45 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-14  2:39 [drew.adams@oracle.com: No doc for cl stuff even after loading cl?] Richard Stallman
2006-05-24 16:35 ` Chong Yidong
2006-05-24 17:35   ` Stefan Monnier
2006-05-25  0:37     ` Richard Stallman
2006-05-29  9:09       ` Stefan Monnier
2007-06-27 19:19       ` Stefan Monnier
2007-06-27 19:52         ` Juanma Barranquero
2007-06-28 15:12           ` Stefan Monnier
2007-06-28 15:45             ` Juanma Barranquero
2007-06-27 23:42         ` Richard Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).