Mercurial > emacs
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 |