emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

load-history is incorrect


From: Drew Adams
Subject: load-history is incorrect
Date: Thu, 30 Dec 2004 23:00:20 -0800

In Emacs 20, each explicit `require' in a library is reflected in the entry
for that library in variable `load-history'.

In Emacs 21, the `load-history' seems to be seriously flawed (unless there
is some change in the semantics that is not reflected by the doc string).
Many explicit requires for a library are not listed in the library's entry
in load-history. This is true for both user libraries and standard,
preloaded libraries.

To pick a library in a virgin emacs (-q), look at the `load-history' entry
for, say, "term/w32-win". In the Emacs 21 file w32-win.el you find these
requires:

(require 'frame)
(require 'mouse)
(require 'scroll-bar)
(require 'faces)
(require 'select)
(require 'menu-bar)
(require 'x-dnd)
(require 'code-pages)
(if (fboundp 'new-fontset)(require 'fontset))

But in `load-history' you find only these requires in the "term/w32-win"
entry:

("term/w32-win"
  (require . x-dnd)
  (require . code-pages)
  (require . fontset)
  w32-drag-n-drop-debug w32-drag-n-drop w32-drag-n-drop-other-frame
x-command-line-resources x-handle-switch x-handle-numeric-switch
x-handle-initial-switch x-handle-iconic x-handle-xrm-switch
x-handle-geometry x-handle-name-switch
  (defvar . x-display-name)
  x-handle-display x-handle-args
  (defvar . x-colors)
  xw-defined-colors
  (defvar . w32-standard-fontset-spec)
  x-win-suspend-error internal-face-interactive mouse-set-font)

As another example, look at the entry for library custom - there is no
require for it in load-history, but there is a require in library custom.el.

Load a library that you define that contains several requires, and then look
at load-history. Many, perhaps most, of the requires will not be present.

I don't know what the rule is for the missing requires, but to me this is a
_serious_ problem. I've written code that lists all (i.e. recursive)
dependencies for a library (either as a tree, showing the hierarchy, or as a
flat list with no dups). The code works perfectly in Emacs 20, because the
load-history is correct: all library requires are present. The code doesn't
show complete require lists in Emacs 21 because load-history is incomplete
wrt requires for libraries.

In GNU Emacs 21.3.50.1 (i386-mingw-nt5.1.2600)
 of 2004-07-26 on BERATUNG4
configured using `configure --with-gcc
(3.3) --cflags -I../../jpeg-6b-1/include -I../../libpng-1.2.4-1/include -I..
/../tiff-3.5.7/include -I../../xpm-nox-4.2.0/include -I../../zlib-1.1.4-1/in
clude'





reply via email to

[Prev in Thread] Current Thread [Next in Thread]