comparison lisp/emacs-lisp/autoload.el @ 5815:b1e5e6efed1d

(update-file-autoloads): Never ask the user where to put a new section. While searching the file, look for an alphabetically later file's section, and insert the new section before it.
author Roland McGrath <roland@gnu.org>
date Mon, 07 Feb 1994 05:08:36 +0000
parents 434ef4c2fda7
children fd1e2c6f7bf5
comparison
equal deleted inserted replaced
5814:eecc796f374d 5815:b1e5e6efed1d
1 ;;; autoload.el --- maintain autoloads in loaddefs.el. 1 ;;; autoload.el --- maintain autoloads in loaddefs.el.
2 2
3 ;;; Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. 3 ;;; Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
4 ;;; 4 ;;;
5 ;; Author: Roland McGrath <roland@gnu.ai.mit.edu> 5 ;; Author: Roland McGrath <roland@gnu.ai.mit.edu>
6 ;; Keywords: maint 6 ;; Keywords: maint
7 7
8 ;;; This program is free software; you can redistribute it and/or modify 8 ;;; This program is free software; you can redistribute it and/or modify
224 (interactive "fUpdate autoloads for file: ") 224 (interactive "fUpdate autoloads for file: ")
225 (let ((load-name (let ((name (file-name-nondirectory file))) 225 (let ((load-name (let ((name (file-name-nondirectory file)))
226 (if (string-match "\\.elc?$" name) 226 (if (string-match "\\.elc?$" name)
227 (substring name 0 (match-beginning 0)) 227 (substring name 0 (match-beginning 0))
228 name))) 228 name)))
229 (done nil) 229 (found nil)
230 (existing-buffer (get-file-buffer file))) 230 (existing-buffer (get-file-buffer file)))
231 (save-excursion 231 (save-excursion
232 ;; We want to get a value for generated-autoload-file from 232 ;; We want to get a value for generated-autoload-file from
233 ;; the local variables section if it's there. 233 ;; the local variables section if it's there.
234 (set-buffer (find-file-noselect file)) 234 (set-buffer (find-file-noselect file))
235 (set-buffer (find-file-noselect generated-autoload-file)) 235 (set-buffer (find-file-noselect generated-autoload-file))
236 (save-excursion 236 (save-excursion
237 (save-restriction 237 (save-restriction
238 (widen) 238 (widen)
239 (goto-char (point-min)) 239 (goto-char (point-min))
240 (while (search-forward generate-autoload-section-header nil t) 240 ;; Look for the section for LOAD-NAME.
241 (while (and (not found)
242 (search-forward generate-autoload-section-header nil t))
241 (let ((form (condition-case () 243 (let ((form (condition-case ()
242 (read (current-buffer)) 244 (read (current-buffer))
243 (end-of-file nil)))) 245 (end-of-file nil))))
244 (if (string= (nth 2 form) load-name) 246 (cond ((string= (nth 2 form) load-name)
245 (let ((begin (match-beginning 0)) 247 ;; We found the section for this file.
246 (last-time (nth 4 form)) 248 ;; Check if it is up to date.
247 (file-time (nth 5 (file-attributes file)))) 249 (let ((begin (match-beginning 0))
248 (if (and (or (null existing-buffer) 250 (last-time (nth 4 form))
249 (not (buffer-modified-p existing-buffer))) 251 (file-time (nth 5 (file-attributes file))))
250 (listp last-time) (= (length last-time) 2) 252 (if (and (or (null existing-buffer)
251 (or (> (car last-time) (car file-time)) 253 (not (buffer-modified-p existing-buffer)))
252 (and (= (car last-time) (car file-time)) 254 (listp last-time) (= (length last-time) 2)
253 (>= (nth 1 last-time) 255 (or (> (car last-time) (car file-time))
254 (nth 1 file-time))))) 256 (and (= (car last-time) (car file-time))
255 (message "Autoload section for %s is up to date." 257 (>= (nth 1 last-time)
256 file) 258 (nth 1 file-time)))))
257 (search-forward generate-autoload-section-trailer) 259 (progn
258 (delete-region begin (point)) 260 (message "Autoload section for %s is up to date."
259 (generate-file-autoloads file)) 261 file)
260 (setq done t)))))) 262 (setq found 'up-to-date))
261 (if done 263 (search-forward generate-autoload-section-trailer)
262 ;; There was an existing section and we have updated it. 264 (delete-region begin (point))
263 () 265 (setq found t))))
264 (if (save-excursion 266 ((string< load-name (nth 2 form))
265 (set-buffer (find-file-noselect file)) 267 ;; We've come to a section alphabetically later than
266 (save-excursion 268 ;; LOAD-NAME. We assume the file is in order and so
267 (save-restriction 269 ;; there must be no section for LOAD-NAME. We will
268 (widen) 270 ;; insert one before the section here.
269 (goto-char (point-min)) 271 (goto-char (match-beginning 0))
270 (search-forward generate-autoload-cookie nil t)))) 272 (setq found t)))))
271 ;; There are autoload cookies in FILE. 273 (if (eq found t)
272 ;; Have the user tell us where to put the new section. 274 (generate-file-autoloads file))
273 (progn 275 (setq done t)))
274 (save-window-excursion
275 (switch-to-buffer (current-buffer))
276 (with-output-to-temp-buffer "*Help*"
277 (princ (substitute-command-keys
278 (format "\
279 Move point to where the autoload section
280 for %s should be inserted.
281 Then do \\[exit-recursive-edit]."
282 file))))
283 (recursive-edit)
284 (beginning-of-line))
285 (generate-file-autoloads file)))))
286 (if (interactive-p) (save-buffer)) 276 (if (interactive-p) (save-buffer))
287 (if (and (null existing-buffer) 277 (if (and (null existing-buffer)
288 (setq existing-buffer (get-file-buffer file))) 278 (setq existing-buffer (get-file-buffer file)))
289 (kill-buffer existing-buffer))))) 279 (kill-buffer existing-buffer)))))
290 280