annotate lisp/loadhist.el @ 24419:30e478cd167e

(shell-command-default-error-buffer): Renamed from shell-command-on-region-default-error-buffer. (shell-command-on-region): Mention in echo area when there is some error output. Mention success or failure, too. Accumulate multiple error outputs going forward, with formfeed in between. Display the error buffer when we have put something in it. (shell-command): Add the ERROR-BUFFER argument feature.
author Karl Heuer <kwzh@gnu.org>
date Mon, 01 Mar 1999 03:19:32 +0000
parents dc812cd8bd1b
children 86d462e378ce
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; loadhist.el --- lisp functions for working with feature groups
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12751
diff changeset
2
22459
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
3 ;; Copyright (C) 1995, 1998 Free Software Foundation, Inc.
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Version: 1.0
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Keywords: internal
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
11289
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
9 ;; This file is part of GNU Emacs.
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
10
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
14 ;; any later version.
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
15
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
19 ;; GNU General Public License for more details.
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
20
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12751
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12751
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12751
diff changeset
24 ;; Boston, MA 02111-1307, USA.
11289
b8ba33ac2f22 Comment changes.
Karl Heuer <kwzh@gnu.org>
parents: 10498
diff changeset
25
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;; These functions exploit the load-history system variable.
22459
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
29 ;; Entry points include `unload-feature', `symbol-file', and
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
30 ;; `feature-file', documented in the Emacs Lisp manual.
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;;; Code:
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 (defun feature-symbols (feature)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 "Return the file and list of symbols associated with a given FEATURE."
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 (catch 'foundit
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 (mapcar
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 (function (lambda (x)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 (if (member (cons 'provide feature) (cdr x))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 (throw 'foundit x))))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 load-history)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 nil))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 (defun feature-file (feature)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 "Return the file name from which a given FEATURE was loaded.
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 Actually, return the load argument, if any; this is sometimes the name of a
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 Lisp file without an extension. If the feature came from an eval-buffer on
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 a buffer with no associated file, or an eval-region, return nil."
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 (if (not (featurep feature))
12751
f442c14a79c4 (unload-feature): Delete the file's load-history element.
Richard M. Stallman <rms@gnu.org>
parents: 11844
diff changeset
50 (error "%s is not a currently loaded feature" (symbol-name feature))
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 (car (feature-symbols feature))))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 (defun file-provides (file)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 "Return the list of features provided by FILE."
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 (let ((symbols (cdr (assoc file load-history))) (provides nil))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 (mapcar
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 (function (lambda (x)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 (if (and (consp x) (eq (car x) 'provide))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 (setq provides (cons (cdr x) provides)))))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 symbols)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 provides
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 (defun file-requires (file)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 "Return the list of features required by FILE."
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 (let ((symbols (cdr (assoc file load-history))) (requires nil))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 (mapcar
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 (function (lambda (x)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 (if (and (consp x) (eq (car x) 'require))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 (setq requires (cons (cdr x) requires)))))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 symbols)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 requires
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74
12751
f442c14a79c4 (unload-feature): Delete the file's load-history element.
Richard M. Stallman <rms@gnu.org>
parents: 11844
diff changeset
75 (defun file-set-intersect (p q)
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 ;; Return the set intersection of two lists
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 (let ((ret nil))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 (mapcar
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 (function (lambda (x) (if (memq x q) (setq ret (cons x ret)))))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 p)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 ret
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 ))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 (defun file-dependents (file)
10498
8fb25f247533 (unload-feature): Don't care if FILE is a dependency of itself.
Richard M. Stallman <rms@gnu.org>
parents: 8108
diff changeset
85 "Return the list of loaded libraries that depend on FILE.
8fb25f247533 (unload-feature): Don't care if FILE is a dependency of itself.
Richard M. Stallman <rms@gnu.org>
parents: 8108
diff changeset
86 This can include FILE itself."
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 (let ((provides (file-provides file)) (dependents nil))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 (mapcar
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 (function (lambda (x)
12751
f442c14a79c4 (unload-feature): Delete the file's load-history element.
Richard M. Stallman <rms@gnu.org>
parents: 11844
diff changeset
90 (if (file-set-intersect provides (file-requires (car x)))
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 (setq dependents (cons (car x) dependents)))))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 load-history)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 dependents
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 ))
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
16173
9ba176963a26 (read-feature): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
96 (defun read-feature (prompt)
22459
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
97 "Read a feature name \(string\) from the minibuffer.
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
98 Prompt with PROMPT and completing from `features', and
16173
9ba176963a26 (read-feature): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
99 return the feature \(symbol\)."
9ba176963a26 (read-feature): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
100 (intern (completing-read prompt
9ba176963a26 (read-feature): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
101 (mapcar (function (lambda (feature)
9ba176963a26 (read-feature): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
102 (list (symbol-name feature))))
9ba176963a26 (read-feature): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
103 features)
9ba176963a26 (read-feature): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
104 nil t)))
9ba176963a26 (read-feature): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
105
22459
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
106 (defvar loadhist-hook-functions
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
107 '(after-change-function after-change-functions
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
108 after-insert-file-functions auto-fill-function before-change-function
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
109 before-change-functions blink-paren-function
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
110 buffer-access-fontify-functions command-line-functions
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
111 comment-indent-function kill-buffer-query-functions
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
112 kill-emacs-query-functions lisp-indent-function
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
113 redisplay-end-trigger-functions temp-buffer-show-function
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
114 window-scroll-functions window-size-change-functions
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
115 write-region-annotate-functions)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
116 "A list of special hooks from the `Standard Hooks' node of the Lisp manual.
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
117
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
118 These are symbols with hook-type values whose names don't end in
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
119 `-hook' or `-hooks', from which `unload-feature' tries to remove
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
120 pertinent symbols.")
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
121
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 ;;;###autoload
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 (defun unload-feature (feature &optional force)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 "Unload the library that provided FEATURE, restoring all its autoloads.
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 If the feature is required by any other loaded code, and optional FORCE
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 is nil, raise an error."
16173
9ba176963a26 (read-feature): New function.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
127 (interactive (list (read-feature "Feature: ")))
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 (if (not (featurep feature))
12751
f442c14a79c4 (unload-feature): Delete the file's load-history element.
Richard M. Stallman <rms@gnu.org>
parents: 11844
diff changeset
129 (error "%s is not a currently loaded feature" (symbol-name feature)))
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 (if (not force)
10498
8fb25f247533 (unload-feature): Don't care if FILE is a dependency of itself.
Richard M. Stallman <rms@gnu.org>
parents: 8108
diff changeset
131 (let* ((file (feature-file feature))
8fb25f247533 (unload-feature): Don't care if FILE is a dependency of itself.
Richard M. Stallman <rms@gnu.org>
parents: 8108
diff changeset
132 (dependents (delete file (copy-sequence (file-dependents file)))))
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 (if dependents
12751
f442c14a79c4 (unload-feature): Delete the file's load-history element.
Richard M. Stallman <rms@gnu.org>
parents: 11844
diff changeset
134 (error "Loaded libraries %s depend on %s"
22459
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
135 (prin1-to-string dependents) file))))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
136 (let* ((flist (feature-symbols feature))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
137 (file (car flist))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
138 (unload-hook (intern-soft (concat (symbol-name feature)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
139 "-unload-hook"))))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
140 ;; Try to avoid losing badly when hooks installed in critical
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
141 ;; places go away. (Some packages install things on
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
142 ;; `kill-buffer-hook', `activate-menubar-hook' and the like.)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
143 ;; First off, provide a clean way for package `foo' to arrange
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
144 ;; this by defining `foo-unload-hook'.
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
145 (if unload-hook
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
146 (run-hooks unload-hook)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
147 ;; Otherwise, do our best. Look through the obarray for symbols
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
148 ;; which seem to be hook variables or special hook functions and
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
149 ;; remove anything from them which matches the feature-symbols
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
150 ;; about to get zapped. Obviously this won't get anonymous
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
151 ;; functions which the package might just have installed, and
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
152 ;; there might be other important state, but this tactic
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
153 ;; normally works.
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
154 (mapatoms
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
155 (lambda (x)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
156 (if (or (and (boundp x) ; Random hooks.
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
157 (consp (symbol-value x))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
158 (string-match "-hooks?\\'" (symbol-name x)))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
159 (and (fboundp x) ; Known abnormal hooks etc.
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
160 (memq x loadhist-hook-functions)))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
161 (mapcar (lambda (y) (remove-hook x y))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
162 (cdr flist))))))
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 (mapcar
22459
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
164 (lambda (x)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
165 (cond ((stringp x) nil)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
166 ((consp x)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
167 ;; Remove any feature names that this file provided.
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
168 (if (eq (car x) 'provide)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
169 (setq features (delq (cdr x) features))))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
170 ((boundp x) (makunbound x))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
171 ((fboundp x)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
172 (fmakunbound x)
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
173 (let ((aload (get x 'autoload)))
bc88a299d2fc (read-feature): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16173
diff changeset
174 (if aload (fset x (cons 'autoload aload)))))))
12751
f442c14a79c4 (unload-feature): Delete the file's load-history element.
Richard M. Stallman <rms@gnu.org>
parents: 11844
diff changeset
175 (cdr flist))
f442c14a79c4 (unload-feature): Delete the file's load-history element.
Richard M. Stallman <rms@gnu.org>
parents: 11844
diff changeset
176 ;; Delete the load-history element for this file.
f442c14a79c4 (unload-feature): Delete the file's load-history element.
Richard M. Stallman <rms@gnu.org>
parents: 11844
diff changeset
177 (let ((elt (assoc file load-history)))
f442c14a79c4 (unload-feature): Delete the file's load-history element.
Richard M. Stallman <rms@gnu.org>
parents: 11844
diff changeset
178 (setq load-history (delq elt load-history)))))
2543
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 (provide 'loadhist)
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181
9a1b00513968 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 ;;; loadhist.el ends here