Commits

cvs  committed 8b8b7f3

Import from CVS: tag r19-15b104

  • Participants
  • Parent commits 5d6df49
  • Tags r19-15b104

Comments (0)

Files changed (125)

File CHANGES-beta

 							-*- indented-text -*-
+to 19.15 beta104
+-- EFS fixes courtesy of Michael Sperber
+-- time.el-1.6
+-- Miscellaneous bug fixes
+-- hm--html-mode-5.4
+-- VM-6.22
+-- Gnus-5.4.36
+
 to 19.15 beta103
 -- VM-6.21
 -- tm-7.106
 
 New users should look at the next section on "Using Outline Mode".  You will
 be more efficient when you can navigate quickly through this file.  Users
-interested in some of the details of how XEmacs differs from FSF GNU Emacs
+interested in some of the details of how XEmacs differs from GNU Emacs
 should read the section "What's Different?".  Users who would to know which
 capabilities have been introduced in each release should look at the
 appropriate subsection of the "XEmacs Release Notes."
 both contributed significantly to the development of XEmacs.
 
 
-** Why Haven't XEmacs and FSF GNU Emacs Merged?
-===============================================
-
-This question comes up again and again on comp.emacs.xemacs and other
-newsgroups and mailing lists.  Recently in fact there was a long, heated
-thread about this issue.
-
-Here is what one XEmacs developer said about this issue.
-
-DISCLAIMER: This is provided for informational purposes only and does
-_NOT_ necessarily represent the opinions of any of the other XEmacs
-developers or of any of the organizations involved.  Keep in mind
-that this is a highly charged issue with differing and strongly-held
-opinions held by the various parties involved.
-
-   Subject: Re: elisp code in GNU Emacs/XEmacs
-   From: wing@666.com (Ben Wing)
-   Message-ID: <wingDqGwLH.K6w@netcom.com>
-   Date: Fri, 26 Apr 1996 11:44:05 GMT
-   
-   In article <9xo91fmordx.fsf@bcarsf26.nortel.ca>, Stephane Boucher
-   <sbo@bcarsf26.nortel.ca> wrote:
-   
-       Well, I don't think the number of volunteers is greater by having 2
-       Emacsen. I think your affirmation holds true because of the
-       inhability of the various parties involved to work together and
-       compromise. If people could all work together, I don't think there
-       would be any benifit in having 2 Emacsen. It may seem profitable
-       right now, but in the long run, I think everyone looses. The time
-       everyone spends porting back and forth, and imitating what the other
-       has done is not spent to do new features. I've presonnally
-       experienced a project split in the past, and in the end everyone
-       lost. 
-       
-       I don't want to try to blame anybody for the current fiasco. But we do
-       have a fiasco. That is unfortunate. There are so many contributors
-       out there that if everyone worked together we might be looking
-       forward to having, say, threads in Emacs. But instead, as someone
-       told me not that long ago, maybe we'll soon see a new editor come out
-       based on Java. Threads will be part of it at no extra cost, and those
-       people still using Emacs will continue to curse at the fact that they
-       can't start GNUS while typing an E-mail, and the various Emacs
-       contributors will continue to argue among themselves, nitpicking
-       about how to get the perfect solution, rather than try to move
-       forward. Meanwhile, people will enjoy using a new state of the art
-       editor. 
-   
-   Don't think we're just being needlessly perverse by continuing to have
-   XEmacs. I'm well aware of the problems in having a project split, and
-   don't think for a minute that we haven't tried (extremely hard, in
-   fact) to come up with a merge.
-   
-   Unfortunately, as I have said before, the odds of this happening are
-   quite low due to severe conflicts (both technical, procedural, and
-   philosophical) between RMS and the XEmacs developers. If we were to
-   assent to even half of what RMS wants in a merged Emacs, it would take
-   years of work to produce the merged Emacs, and the result would be
-   less powerful than the existing XEmacs.
-   
-   Since so many people seem so misinformed about this problem, I'll go
-   ahead and state the fundamental dividing issues:
-   
-    1. RMS does not believe in data abstraction, and cannot be convinced
-       of the folly of this. This by itself is such a huge division that
-       it makes a merge basically unthinkable. Because of this, FSF Emacs
-       is basically unmaintainable by anyone other than RMS. RMS has
-       consented to all the data abstraction I want provided that I take
-       sole responsibility for writing this code (which basically means
-       I'd have to write almost all of the code or rewrite most of his
-       code), and provided that he can use this issue as a bargaining
-       chip to get concessions of his own.
-    2. RMS sees the merge process as a series of mutual concessions
-       traded back and forth. IMHO this is reasonable for a peace treaty
-       but absurd for a piece of software -- we have to have technical
-       agreement on the major issues involved, and the chance of that
-       happening is basically nil.
-    3. RMS has insisted in full backwards compatibility with all aspects
-       of FSF Emacs, no matter how ugly; and furthermore, this backwards
-       compatibility must work fast enough to make existing code run
-       without problem. This basically means that there would have to be
-       parallel C implementations of events, keymaps, and many other data
-       structures. This not only will take months or years of extra work
-       to implement, but poses some fundamental technical problems due to
-       the non-abstractedness of FSF Emacs (e.g. in FSF Emacs keymaps are
-       conses or vectors and a lot of code depends on this, and
-       reconciling this with XEmacs's primitive keymap type is difficult
-       to impossible).
-    4. RMS will not even consent to neutral names for the two editors. He
-       objects to call his editor FSF Emacs because for some unfathomable
-       reason he finds it insulting. He suggests just Emacs, which I find
-       not only insulting (XEmacs is just as much Emacs as is FSF Emacs)
-       but also quite confusing. He will not even consent to calling his
-       editor GNU Emacs without also referring to XEmacs as GNU XEmacs --
-       basically a Borg-like assimilation attempt at making XEmacs a GNU
-       product, which it is not. (None of the developers of Lucid Emacs
-       and XEmacs were or are sanctioned by GNU, and none of us got the
-       least bit of assistance or cooperation in doing our work. In fact,
-       RMS actively made it harder by choosing to ignore all work
-       previously done in XEmacs and adding his own incompatible
-       interfaces for functionality already in XEmacs. This makes it
-       quite difficult to track FSF Emacs and keep a sane API.) He has
-       stated many times, and continues to assert, that most or all of
-       the work done on Lucid Emacs and XEmacs was done primarily as a
-       testing ground for potential features to be added to FSF Emacs.
-       All of the developers of Lucid Emacs and XEmacs assert that this
-       is patently false -- so why does RMS continue to insist that this
-       is the case?
-
-   ben
-   --
-   "... then the day came when the risk to remain tight in a bud was
-   more painful than the risk it took to blossom." -- Anais Nin
-
-
-** Why Another Version of Emacs?  (The Lucid, Inc. Point of View)
-=================================================================
-
-Lucid's latest product, Energize, is a C/C++ development environment.
-Rather than invent (and force our users to learn) a new user-interface, we
-chose to build part of our environment on top of the world's best editor,
-GNU Emacs.  (Though our product is commercial, the work we did on is
-free software, and is useful without having to purchase our product.)
-
-We needed a version of Emacs with mouse-sensitive regions, multiple fonts,
-the ability to mark sections of a buffer as read-only, the ability to detect
-which parts of a buffer has been modified, and many other features.
-
-*** Why Not Epoch or GNU Emacs?
--------------------------------
-
-For our purposes, the existing version of Epoch was not sufficient; it did
-not allow us to put arbitrary pixmaps/icons in buffers, `undo' did not
-restore changes to regions, regions did not overlap and merge their
-attributes in the way we needed, and several other things.
-
-We could have devoted our time to making Epoch do what we needed (and, in
-fact, we spent some time doing that in 1990) but, since the Free Software
-Foundation planned to include Epoch-like features in their Version 19, we
-decided that our efforts would be better spent improving GNU Emacs
-instead of Epoch.
-
-Our original hope was that our changes to GNU Emacs would be
-incorporated into the "official" v19.  However, scheduling conflicts arose,
-and we found that, given the amount of work still remaining to be done, we
-didn't have the time or manpower to do the level of coordination that would
-be necessary to get our changes accepted by the Free Software Foundation.
-Consequently, we released our work as a forked branch of Emacs, instead of
-delaying any longer.
-
-Roughly a year after Lucid Emacs 19.0 was released, a beta version of the
-Free Software Foundation branch of Emacs 19 was released.  This version
-was better in some areas, and worse in others, as reflects the differing
-focus of our development efforts.
-
-We planned to continue developing and supporting Lucid Emacs, and merging in
-bug fixes and new features from the Free Software Foundation branch as
-appropriate; we did not plan to discard any of the functionality that we
-implemented which Richard Stallman of the Free Software Foundation has
-chosen not to include in his version.
-
-However, events have overtaken us, and Lucid, Inc. has effectively ceased
-doing business and is (September 1994) in the process of being sold.  Our
-efforts on Lucid Emacs have also ceased and we've turned over the continued
-enhancement of Lucid Emacs to the University of Illinois under Chuck
-Thompson, a member of the Lucid Emacs team and a maintainer of Epoch.
-At the same time, Lucid Emacs has been renamed XEmacs to reflect the
-substantial contribution of the University of Illinois with the support of
-Sun Microsystems.
-
-Certain elements of Lucid Emacs, or derivatives of them, have been ported to
-the FSF GNU Emacs.  We have not been doing work in this direction, because
-we feel that Lucid Emacs has a cleaner and more extensible substrate, and
-that any kind of merger between the two branches would be far easier by
-merging the Free Software Foundation changes into our version than the other
-way around.
-
-We were working closely with the Epoch developers to merge in the
-remaining Epoch functionality which Lucid Emacs does not yet have.  Epoch
-and Lucid Emacs will soon be one and the same thing.  Work is being done on
-a compatibility package which will allow Epoch 4 code to run in XEmacs with
-little or no change.  (As of 19.8, Lucid Emacs is running a descendant of
-the Epoch redisplay engine.)
-
-** Why Another Version of Emacs?  (The SunPro Point of View)
-============================================================
-
-Emacs 18 has been around for a long, long time.  Version 19 was supposed to
-be the successor to Emacs 18 with X support.  It was going to be available
-"real soon" for a long time (some people remember hearing about v19 as early
-as 1984!), but it never came out.  v19 development was going very, very
-slowly, and from the outside it seemed that it was not moving at all.  In
-the meantime other people gave up waiting for v19 and decided to build their
-own X-aware Emacsen.  The most important of these was probably Epoch, which
-came from the University of Illinois and was based on v18.
-
-Around three years ago we decided that we wanted an integrated editor.  We
-contracted with the University of Illinois to provide a number of basic
-enhancements to the functionality in Epoch.  The University of Illinois
-initially was planning to deliver this on top of Epoch code.
-
-In the meantime (actually some time before we talked with the University of
-Illinois) Lucid had decided that it also wanted to provide an integrated
-environment with an integrated editor.  Lucid decided that the Version 19
-basis was a better one than Version 18 and thus decided not to use Epoch but
-instead work with Richard Stallman, the head of the Free Software Foundation
-and principle author of Emacs, on getting Version 19 out.  At some point
-Stallman and Lucid parted ways.  Lucid kept working and got a Version 19 out
-that they called Lucid Emacs 19.
-
-After Lucid's v19 came out it became clear to us (the University of Illinois
-and SunPro) that the right thing to do was to push for an integration of
-both Lucid Emacs and Epoch, and to get the deliverables that we were asking
-from the University of Illinois on top of this integrated platform.  Through
-the last two years, SunPro has been actively supporting this product and has
-been investing a comparable amount of effort into it as Lucid has.
-Substantial portions of the current code have originated under the support
-of SunPro, either directly in SunPro, or in the University of Illinois but
-paid for by us.  This code was kept away from Lucid for a while, but later
-was made available to them.  Initially Lucid didn't know that we were
-supporting UofI, but later we were open about it.
-
-Eventually, all development source trees were synched up.  Currently, there
-is basically no difference in the source trees between what is at the
-University of Illinois and SunPro.
-
-SunPro originally called the integrated product ERA, for "Emacs Rewritten
-Again".  At some point, SunPro and Lucid came to an agreement to find a name
-for the product that was not specific to either company.  An additional
-constraint that Lucid placed on the name was that it must contain the word
-"Emacs" in it -- thus "ERA" was not acceptable.  The agreed-upon name was
-"XEmacs", and this is what the product has been called starting with the
-19.11 release.
-
-
 * What's Different?
 ===================
 
 
-** Differences between XEmacs and FSF GNU Emacs 19
+** Differences between XEmacs and GNU Emacs 19
 ==================================================
 
 In XEmacs, events are first-class objects.  FSF 19 represents them as
 In XEmacs, keymaps are first-class opaque objects.  FSF 19 represents them as
 complicated combinations of association lists and vectors.  If you use the
 advertised functional interface to manipulation of keymaps, the same code
-will work in XEmacs, Emacs 18, and FSF GNU Emacs 19; if your code depends
+will work in XEmacs, Emacs 18, and GNU Emacs 19; if your code depends
 on the underlying implementation of keymaps, it will not.
 
 XEmacs uses "extents" to represent all non-textual aspects of buffers;
 ** Future Plans for XEmacs
 ==========================
 
-For the curious, the biggest changes in 19.15 will include integration
-of TM (a MIME package for VM and GNUS), EFS (the next generation of
-ange-ftp), and Auc-TeX, and a "lite" distribution that includes a
-minimal base and a set of optional packages (which will include TM,
-EFS, and Auc-TeX, as well as all of the large packages currently
-distributed with XEmacs).  There will also still be a full distribution
-that includes all the optional packages.
-
-In the longer term, we are also working on a separate branch of XEmacs that
-includes full Asian-language ("MULE") support.  This work is currently in
-beta and is being supported by Sun Microsystems.
-
+This is the end of the line for XEmacs v19.  No new development is planned
+on this source tree.  XEmacs 20.1 will contain the functionality in 19.15,
+and development will continue with XEmacs 20.2. The major new `feature'
+planned in 20.2 will be the introduction of separable packages and the
+capability to download and use an XEmacs lite distribution.
+
+** Major Differences Between 19.14 and 19.15
+============================================
+
+Many bugs have been fixed.  An effort has been made to eradicate all
+XEmacs crashes, although we are not quite done yet.  The overall
+quality of XEmacs should be higher than any previous release.  XEmacs
+now compiles with nary a warning with some compilers.
+
+-- EFS replaces ange-ftp for remote file manipulation capability.
+
+-- TM (Tools for Mime) now comes with XEmacs.  This provides MIME
+   (Multi-purpose Internet Multi-media Extensions?) support for Mail
+   and News.  The primary author is Morioka Tomohiko.
+
+-- AUCTeX is now included with XEmacs.  The primary author is Per
+   Abrahamsen.
+
+-- Command line processing should work much better now - no more order
+   dependencies.
+
+-- Customization of user options is now handled by the custom package
+   written by Per Abrahamsen.
+
+-- html mode now defaults to using HTML-3.2
+
+-- VM now has a native MIME mode
+
+-- The traditional time.el package now has optional modeline graphics
+
+-- The XEmacs Logo has been changed courtesy of Jens Lautenbacher
+
+-- The XEmacs build procedure has been changed to make it easier than
+   ever to include new packages to be dumped with the binary
+
+-- Many many package upgraded (thanks go to countless maintainers):
+
+  -- ediff 2.64 (Michael Kifer)
+  -- Gnus 5.4.36 (Lars Magne Ingebrigtsen)
+  -- w3 3.0.71  (Bill Perry)
+  -- ilisp 5.8 (Chris McConnell, Ivan Vasquez, Marco Antoniotti, Rick
+     Campbell)
+  -- VM 6.22     (Kyle Jones)
+  -- etags 11.78 (Francesco Potorti`)
+  -- ksh-mode.el 2.9
+  -- vhdl-mode.el 2.73 (Rod Whitby)
+  -- id-select.el 1.4.5 (Bob Weiner)
+  -- EDT/TPU emulation modes should work now for the first time.
+  -- viper 2.93 (Michael Kifer) is now the `official' vi emulator for XEmacs.
+  -- big-menubar should work much better now.
+  -- mode-motion+.el 3.16
+  -- backup-dir 2.0 (Greg Klanderman)
+  -- ps-print.el-3.05 (Jacques Duthen Prestataire)
+  -- lazy-lock-1.16 (Simon Marshall)
+  -- fast-lock.el 3.10.2 (Simon Marshall)
+  -- reporter 3.3 (Barry Warsaw)
+  -- hm--html-menus 5.4 (Heiko Muenkel)
+  -- cc-mode 4.387 (Barry Warsaw)
+  -- elp 2.37 (Barry Warsaw)
+  -- itimer.el-1.05 (Kyle Jones)
+  -- floating-toolbar.el-1.02 (Kyle Jones)
+  -- balloon-help.el-1.05 (Kyle Jones)
+  -- hyperbole-4.023 (Bob Weiner)
+  -- cperl-mode-1.31+
+  -- OO-Browser 2.10 (Bob Weiner)
+
+-- Many new packages have been added:
+  -- m4-mode 1.8 (Andrew Csillag)
+  -- crisp.el - crisp/brief emulation (Gary D. Foster)
+  -- Johan Vroman's iso-acc.el has been ported to XEmacs by Alexandre Oliva
+  -- psgml-1.01 (Lennart Staflin, James Clark)
+  -- python-mode.el 2.90 (Barry Warsaw)
+  -- vrml-mode.el (Ben Wing)
+  -- enriched.el, face-menu.el (Boris Goldowsky, Michael Sperber)
+  -- sh-script.el (Daniel Pfeiffer)
+  -- decipher.el (Christopher J. Madsen)
+  -- mic-paren.el (Mikael Sj�din)
+  -- xrdb-mode.el 1.21 (Barry Warsaw)
+  -- redo.el 1.01 (Kyle Jones)
+  -- edmacro.el (ported by Hrvoje Niksic)
+  -- verilog-mode.el (Michael McNamara)
+  -- webjump.el-1.4 (Neil W. Van Dyke)
+  -- overlay.el (Joseph Nuspl support for Emacs overlay API)
+  -- browse-cltl2.el 1.1 (Holger Schauer)
+  -- mine.el 1.17 (Jacques Duthen)
+  -- igrep.el 2.56 (Kevin Rodger)
+  -- speedbar.el (Eric Ludlam)
+  -- frame-icon.el (Michael Lamoureux)
+  -- winmgr-mode.el (David Konerding, Stefan Strobel & Barry Warsaw)
+  -- whitespace-mode.el (Heiko Muenkel)
+  -- detached-minibuf.el (Alvin Shelton)
+
+-- New function x-keysym-on-keyboard-p helps determine keyboard
+   characteristics for key rebinding:
+
+  x-keysym-on-keyboard-p: (KEYSYM &optional DEVICE)
+    -- a built-in function.
+  Return true if KEYSYM names a key on the keyboard of DEVICE.
+  More precisely, return true if pressing a physical key
+  on the keyboard of DEVICE without any modifier keys generates KEYSYM.
+  Valid keysyms are listed in the files /usr/include/X11/keysymdef.h and in
+  /usr/lib/X11/XKeysymDB, or whatever the equivalents are on your system.
+
+-- preceding-char and following-char have been obsoleted.  Use the
+   much safer and correct functions char-after and char-before instead.
+
+-- Many symbols present for compatibility with GNU Emacs no longer
+   generate bytecompiler warning messages
+
+-- Installed info files are now compressed (support courtesy of Joseph J Nuspl)
+
+-- (load-average) works on Solaris, even if you're not root. Thanks to
+   Hrvoje Niksic.
+
+-- OffiX drag-and-drop support added
+
+-- lots of syncing with 19.34 elisp files, most by Steven Baur
+
+-- M-: (eval-expression) is now enabled by default since it is much
+   more difficult to type.
 
 ** Major Differences Between 19.13 and 19.14
 ============================================
 -- The `face' property of extents and text properties can now
    be a list.
 
--- The `mouse-face' property from FSF GNU Emacs is now supported.
+-- The `mouse-face' property from GNU Emacs is now supported.
    It supersedes the `highlight' property.
 
--- `enriched' and `facemenu' packages from FSF GNU Emacs have been ported.
+-- `enriched' and `facemenu' packages from GNU Emacs have been ported.
 
 -- New functions for easier creation of dialog boxes:
    `get-dialog-box-response', `message-box', and `message-or-box'.
 *** Keymaps
 -----------
 
-The FSF GNU Emacs concept of `function-key-map' is now partially
+The GNU Emacs concept of `function-key-map' is now partially
 implemented.  This allows conversion of function-key escape sequences
 such as `ESC [ 1 1 ~' into an equivalent human-readable keysym such as
 `F1'.  This work will be completed in 19.14.  The function-key map is
 can now easily specify an action to be invoked on single-click
 (i.e. down-up without appreciable motion), double-click, drag-up, etc.
 
-Some code from FSF GNU Emacs has been ported over, generalizing some of
+Some code from GNU Emacs has been ported over, generalizing some of
 the X-specific mouse stuff.
 
 ** INCOMPATIBLE CHANGE **: The function `set-mouse-position' accepts

File etc/sample.emacs

     )
   )
 
+;;; ********************
+;;; Load the default-dir.el package which installs fancy handling
+;;;  of the initial contents in the minibuffer when reading
+;;; file names.
+
+(if (and running-xemacs
+	 (or (and (= emacs-major-version 20) (>= emacs-minor-version 1))
+	     (and (= emacs-major-version 19) (>= emacs-minor-version 15))))
+    (require 'default-dir))
 
 ;;; ********************
 ;;; Load the auto-save.el package, which lets you put all of your autosave

File etc/sgml/CATALOG

 PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 HTML Strict//EN" iehtml-s.dtd
 PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 Tables//EN"     ietables.dtd
 PUBLIC "-//W3C//DTD HTML 3.2//EN"                       html-3.2.dtd
+PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"			html-3.2f.dtd
 PUBLIC "-//W3C//DTD HTML Experimental 19960712//EN"	html-cougar.dtd
 PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 Tables//EN"     ie3tables.dtd
 PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML//EN"       ie30.dtd
 PUBLIC "+//Silmaril//DTD HTML Pro v0r11 19970101//EN"	htmlpro.dtd
-DOCTYPE HTML						html-3.2.dtd
+DOCTYPE HTML						html-3.2f.dtd
 DOCTYPE HTML-3						html-3.dtd

File etc/sgml/ECAT

 FILE html-3.2.dtd	[ ]			cdtd/html-3.2
 FILE html-hj.dtd	[ ]			cdtd/html-hj
 FILE iehtml.dtd		[ ]			cdtd/iehtml
+FILE html-3.2f.dtd	[]			cdtd/html-3.2f

File etc/sgml/cdtd/html-3.2f

Binary file added.

File etc/sgml/html-3.2f.dtd

+<!--
+        W3C Document Type Definition for the HyperText Markup Language
+        version 3.2 as ratified by a vote of W3C member companies.
+        For more information on W3C look at  URL http://www.w3.org/
+
+        Date: Tuesday January 14th 1996
+
+        Author: Dave Raggett <dsr@w3.org>
+
+        HTML 3.2 aims to capture recommended practice as of early '96
+        and as such to be used as a replacement for HTML 2.0 (RFC 1866).
+        Widely deployed rendering attributes are included where they
+        have been shown to be interoperable. SCRIPT and STYLE are
+        included to smooth the introduction of client-side scripts
+        and style sheets. Browsers must avoid showing the contents
+        of these element Otherwise support for them is not required.
+        ID, CLASS and STYLE attributes are not included in this version
+        of HTML.
+-->
+
+<!ENTITY % HTML.Version
+        "-//W3C//DTD HTML 3.2 Final//EN"
+
+        -- Typical usage:
+
+            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+            <html>
+            ...
+            </html>
+        --
+        >
+
+<!--================== Deprecated Features Switch =========================-->
+
+<!ENTITY % HTML.Deprecated "INCLUDE">
+
+<!--================== Imported Names =====================================-->
+
+<!ENTITY % Content-Type "CDATA"
+        -- meaning a MIME content type, as per RFC1521
+        -->
+
+<!ENTITY % HTTP-Method "GET | POST"
+        -- as per HTTP specification
+        -->
+
+<!ENTITY % URL "CDATA"
+        -- The term URL means a CDATA attribute
+           whose value is a Uniform Resource Locator,
+           See RFC1808 (June 95) and RFC1738 (Dec 94).
+        -->
+
+<!-- Parameter Entities -->
+
+<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK" -- repeatable head elements -->
+
+<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
+
+<!ENTITY % list "UL | OL |  DIR | MENU">
+
+<![ %HTML.Deprecated [
+    <!ENTITY % preformatted "PRE | XMP | LISTING">
+]]>
+
+<!ENTITY % preformatted "PRE">
+
+<!--================ Character mnemonic entities ==========================-->
+
+<!ENTITY % ISOlat1 PUBLIC
+       "ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML">
+%ISOlat1;
+
+<!--================ Entities for special symbols =========================-->
+<!-- &trade and &cbsp are not widely deployed and so not included here -->
+
+<!ENTITY amp    CDATA "&#38;"   -- ampersand          -->
+<!ENTITY gt     CDATA "&#62;"   -- greater than       -->
+<!ENTITY lt     CDATA "&#60;"   -- less than          -->
+
+<!--=================== Text Markup =======================================-->
+
+<!ENTITY % font "TT | I | B  | U | STRIKE | BIG | SMALL | SUB | SUP">
+
+<!ENTITY % phrase "EM | STRONG | DFN | CODE | SAMP | KBD | VAR | CITE">
+
+<!ENTITY % special "A | IMG | APPLET | FONT | BASEFONT | BR | SCRIPT | MAP">
+
+<!ENTITY % form "INPUT | SELECT | TEXTAREA">
+
+<!ENTITY % text "#PCDATA | %font | %phrase | %special | %form">
+
+<!ELEMENT (%font|%phrase) - - (%text)*>
+
+<!-- there are also 16 widely known color names although
+  the resulting colors are implementation dependent:
+
+   aqua, black, blue, fuchsia, gray, green, lime, maroon,
+   navy, olive, purple, red, silver, teal, white, and yellow
+
+ These colors were originally picked as being the standard
+ 16 colors supported with the Windows VGA palette.
+ -->
+
+<!ELEMENT FONT - - (%text)*     -- local change to font -->
+<!ATTLIST FONT
+    size    CDATA   #IMPLIED    -- [+]nn e.g. size="+1", size=4 --
+    color   CDATA   #IMPLIED    -- #RRGGBB in hex, e.g. red: color="#FF0000" --
+    >
+
+<!ELEMENT BASEFONT - O EMPTY    -- base font size (1 to 7)-->
+<!ATTLIST BASEFONT
+    size    CDATA   #IMPLIED    -- e.g. size=3 --
+    >
+
+<!ELEMENT BR    - O EMPTY    -- forced line break -->
+<!ATTLIST BR
+        clear (left|all|right|none) none -- control of text flow --
+        >
+
+<!--================== HTML content models ================================-->
+<!--
+    HTML has three basic content models:
+
+        %text       character level elements and text strings
+        %flow       block-like elements e.g. paragraphs and lists
+        %bodytext   as %flow plus headers H1-H6 and ADDRESS
+-->
+
+<!ENTITY % block
+     "P | %list | %preformatted | DL | DIV | CENTER |
+      BLOCKQUOTE | FORM | ISINDEX | HR | TABLE">
+
+<!-- %flow is used for DD and LI -->
+
+<!ENTITY % flow "(%text | %block)*">
+
+<!--=================== Document Body =====================================-->
+
+<!ENTITY % body.content "(%heading | %text | %block | ADDRESS)*">
+
+<!ENTITY % color "CDATA" -- a color specification: #HHHHHH @@ details? -->
+
+<!ENTITY % body-color-attrs "
+        bgcolor %color #IMPLIED
+        text %color #IMPLIED
+        link %color #IMPLIED
+        vlink %color #IMPLIED
+        alink %color #IMPLIED
+        ">
+
+<!ELEMENT BODY O O  %body.content>
+<!ATTLIST BODY
+        background %URL #IMPLIED  -- texture tile for document background --
+        %body-color-attrs;  -- bgcolor, text, link, vlink, alink --
+        >
+
+<!ENTITY % address.content "((%text;) | P)*">
+
+<!ELEMENT ADDRESS - - %address.content>
+
+<!ELEMENT DIV - - %body.content>
+<!ATTLIST DIV
+        align   (left|center|right) #IMPLIED -- alignment of following text --
+        >
+
+<!-- CENTER is a shorthand for DIV with ALIGN=CENTER -->
+<!ELEMENT center - - %body.content>
+
+<!--================== The Anchor Element =================================-->
+
+<!ELEMENT A - - (%text)* -(A)>
+<!ATTLIST A
+        name    CDATA   #IMPLIED    -- named link end --
+        href    %URL    #IMPLIED    -- URL for linked resource --
+        rel     CDATA   #IMPLIED    -- forward link types --
+        rev     CDATA   #IMPLIED    -- reverse link types --
+        title   CDATA   #IMPLIED    -- advisory title string --
+        >
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+     separate document although this isn't yet widely supported -->
+
+<!ENTITY % SHAPE "(rect|circle|poly)">
+<!ENTITY % COORDS "CDATA" -- comma separated list of numbers -->
+
+<!ELEMENT MAP - - (AREA)*>
+<!ATTLIST MAP
+    name    CDATA   #IMPLIED
+    >
+
+<!ELEMENT AREA - O EMPTY>
+<!ATTLIST AREA
+    shape   %SHAPE  rect
+    coords  %COORDS #IMPLIED  -- defines coordinates for shape --
+    href    %URL    #IMPLIED  -- this region acts as hypertext link --
+    nohref (nohref) #IMPLIED  -- this region has no action --
+    alt     CDATA   #REQUIRED -- needed for non-graphical user agents --
+    >
+
+<!--================== The LINK Element ==================================-->
+
+<!ENTITY % Types "CDATA"
+        -- See Internet Draft: draft-ietf-html-relrev-00.txt
+           LINK has been part of HTML since the early days
+           although few browsers as yet take advantage of it.
+
+           Relationship values can be used in principle:
+
+                a) for document specific toolbars/menus when used
+                   with the LINK element in the document head:
+                b) to link to a separate style sheet
+                c) to make a link to a script
+                d) by stylesheets to control how collections of
+                   html nodes are rendered into printed documents
+                e) to make a link to a printable version of this document
+                   e.g. a postscript or pdf version
+-->
+
+<!ELEMENT LINK - O EMPTY>
+<!ATTLIST LINK
+        href    %URL    #IMPLIED    -- URL for linked resource --
+        rel     %Types  #IMPLIED    -- forward link types --
+        rev     %Types  #IMPLIED    -- reverse link types --
+        title   CDATA   #IMPLIED    -- advisory title string --
+        >
+
+<!--=================== Images ============================================-->
+
+<!ENTITY % Length "CDATA"   -- nn for pixels or nn% for percentage length -->
+<!ENTITY % Pixels "CDATA"   -- integer representing length in pixels -->
+
+<!-- Suggested widths are used for negotiating image size
+     with the module responsible for painting the image.
+     align=left or right cause image to float to margin
+     and for subsequent text to wrap around image -->
+
+<!ENTITY % IAlign "(top|middle|bottom|left|right)">
+
+<!ELEMENT IMG    - O EMPTY --  Embedded image -->
+<!ATTLIST IMG
+        src     %URL     #REQUIRED  -- URL of image to embed --
+        alt     CDATA    #IMPLIED   -- for display in place of image --
+        align   %IAlign  #IMPLIED   -- vertical or horizontal alignment --
+        height  %Pixels  #IMPLIED   -- suggested height in pixels --
+        width   %Pixels  #IMPLIED   -- suggested width in pixels --
+        border  %Pixels  #IMPLIED   -- suggested link border width --
+        hspace  %Pixels  #IMPLIED   -- suggested horizontal gutter --
+        vspace  %Pixels  #IMPLIED   -- suggested vertical gutter --
+        usemap  %URL     #IMPLIED   -- use client-side image map --
+        ismap   (ismap)  #IMPLIED   -- use server image map --
+        >
+
+<!-- USEMAP points to a MAP element which may be in this document
+  or an external document, although the latter is not widely supported -->
+
+<!--=================== Java APPLET tag ===================================-->
+<!--
+  This tag is supported by all Java enabled browsers. Applet resources
+  (including their classes) are normally loaded relative to the document
+  URL (or <BASE> element if it is defined). The CODEBASE attribute is used
+  to change this default behavior. If the CODEBASE attribute is defined then
+  it specifies a different location to find applet resources. The value
+  can be an absolute URL or a relative URL. The absolute URL is used as is
+  without modification and is not effected by the documents <BASE> element.
+  When the codebase attribute is relative, then it is relative to the
+  document URL (or <BASE> tag if defined).
+-->
+<!ELEMENT APPLET - - (PARAM | %text)*>
+<!ATTLIST APPLET
+        codebase %URL     #IMPLIED   -- code base --
+        code     CDATA    #REQUIRED  -- class file --
+        alt      CDATA    #IMPLIED   -- for display in place of applet --
+        name     CDATA    #IMPLIED   -- applet name --
+        width    %Pixels  #REQUIRED  -- suggested width in pixels --
+        height   %Pixels  #REQUIRED  -- suggested height in pixels --
+        align    %IAlign  #IMPLIED   -- vertical or horizontal alignment --
+        hspace   %Pixels  #IMPLIED   -- suggested horizontal gutter --
+        vspace   %Pixels  #IMPLIED   -- suggested vertical gutter --
+        >
+
+<!ELEMENT PARAM - O EMPTY>
+<!ATTLIST PARAM
+        name    NMTOKEN   #REQUIRED  -- The name of the parameter --
+        value   CDATA     #IMPLIED   -- The value of the parameter --
+        >
+
+<!--
+Here is an example:
+
+    <applet codebase="applets/NervousText"
+        code=NervousText.class
+        width=300
+        height=50>
+    <param name=text value="Java is Cool!">
+    <img src=sorry.gif alt="This looks better with Java support">
+    </applet>
+-->
+
+<!--=================== Horizontal Rule ===================================-->
+
+<!ELEMENT HR    - O EMPTY>
+<!ATTLIST HR
+        align (left|right|center) #IMPLIED
+        noshade (noshade) #IMPLIED
+        size  %Pixels #IMPLIED
+        width %Length #IMPLIED
+        >
+<!--=================== Paragraphs=========================================-->
+
+<!ELEMENT P     - O (%text)*>
+<!ATTLIST P
+        align  (left|center|right) #IMPLIED
+        >
+
+<!--=================== Headings ==========================================-->
+
+<!--
+  There are six levels of headers from H1 (the most important)
+  to H6 (the least important).
+-->
+
+<!ELEMENT ( %heading )  - -  (%text;)*>
+<!ATTLIST ( %heading )
+        align  (left|center|right) #IMPLIED
+        >
+
+<!--=================== Preformatted Text =================================-->
+
+<!-- excludes images and changes in font size -->
+
+<!ENTITY % pre.exclusion "IMG|BIG|SMALL|SUB|SUP|FONT">
+
+<!ELEMENT PRE - - (%text)* -(%pre.exclusion)>
+<!ATTLIST PRE
+        width NUMBER #implied -- is this widely supported? --
+        >
+
+<![ %HTML.Deprecated [
+
+<!ENTITY % literal "CDATA"
+        -- historical, non-conforming parsing mode where
+           the only markup signal is the end tag
+           in full
+        -->
+
+<!ELEMENT (XMP|LISTING) - -  %literal>
+<!ELEMENT PLAINTEXT - O %literal>
+
+]]>
+
+<!--=================== Block-like Quotes =================================-->
+
+<!ELEMENT BLOCKQUOTE - - %body.content>
+
+<!--=================== Lists =============================================-->
+
+<!--
+    HTML 3.2 allows you to control the sequence number for ordered lists.
+    You can set the sequence number with the START and VALUE attributes.
+    The TYPE attribute may be used to specify the rendering of ordered
+    and unordered lists.
+-->
+
+<!-- definition lists - DT for term, DD for its definition -->
+
+<!ELEMENT DL    - -  (DT|DD)+>
+<!ATTLIST DL
+        compact (compact) #IMPLIED -- more compact style --
+        >
+
+<!ELEMENT DT - O  (%text)*>
+<!ELEMENT DD - O  %flow;>
+
+<!-- Ordered lists OL, and unordered lists UL -->
+<!ELEMENT (OL|UL) - -  (LI)+>
+
+<!--
+       Numbering style
+    1   arablic numbers     1, 2, 3, ...
+    a   lower alpha         a, b, c, ...
+    A   upper alpha         A, B, C, ...
+    i   lower roman         i, ii, iii, ...
+    I   upper roman         I, II, III, ...
+
+    The style is applied to the sequence number which by default
+    is reset to 1 for the first list item in an ordered list.
+
+    This can't be expressed directly in SGML due to case folding.
+-->
+
+<!ENTITY % OLStyle "CDATA" -- constrained to: [1|a|A|i|I] -->
+
+<!ATTLIST OL -- ordered lists --
+        type      %OLStyle   #IMPLIED   -- numbering style --
+        start     NUMBER     #IMPLIED   -- starting sequence number --
+        compact  (compact)   #IMPLIED   -- reduced interitem spacing --
+        >
+
+<!-- bullet styles -->
+
+<!ENTITY % ULStyle "disc|square|circle">
+
+<!ATTLIST UL -- unordered lists --
+        type    (%ULStyle)   #IMPLIED   -- bullet style --
+        compact (compact)    #IMPLIED   -- reduced interitem spacing --
+        >
+
+<!ELEMENT (DIR|MENU) - -  (LI)+ -(%block)>
+<!ATTLIST DIR
+        compact (compact) #IMPLIED
+        >
+<!ATTLIST MENU
+        compact (compact) #IMPLIED
+        >
+
+<!-- <DIR>              Directory list                  -->
+<!-- <DIR COMPACT>      Compact list style              -->
+<!-- <MENU>             Menu list                       -->
+<!-- <MENU COMPACT>     Compact list style              -->
+
+<!-- The type attribute can be used to change the bullet style
+     in unordered lists and the numbering style in ordered lists -->
+
+<!ENTITY % LIStyle "CDATA" -- constrained to: "(%ULStyle|%OLStyle)" -->
+
+<!ELEMENT LI - O %flow -- list item -->
+<!ATTLIST LI
+        type    %LIStyle     #IMPLIED   -- list item style --
+        value    NUMBER      #IMPLIED   -- reset sequence number --
+        >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT FORM - - %body.content -(FORM)>
+<!ATTLIST FORM
+        action %URL #IMPLIED  -- server-side form handler --
+        method (%HTTP-Method) GET -- see HTTP specification --
+        enctype %Content-Type; "application/x-www-form-urlencoded"
+        >
+
+<!ENTITY % InputType
+        "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT
+            | RESET | FILE | HIDDEN | IMAGE)">
+
+<!ELEMENT INPUT - O EMPTY>
+<!ATTLIST INPUT
+        type %InputType TEXT     -- what kind of widget is needed --
+        name  CDATA #IMPLIED     -- required for all but submit and reset --
+        value CDATA #IMPLIED     -- required for radio and checkboxes --
+        checked (checked) #IMPLIED -- for radio buttons and check boxes --
+        size CDATA  #IMPLIED     -- specific to each type of field --
+        maxlength NUMBER #IMPLIED
+        src   %URL  #IMPLIED     -- for fields with background images --
+        align  (top|middle|bottom|left|right) top -- image alignment --
+        >
+
+<!ELEMENT SELECT - - (OPTION+)>
+<!ATTLIST SELECT
+        name CDATA #REQUIRED
+        size NUMBER #IMPLIED
+        multiple (multiple) #IMPLIED
+        >
+
+<!ELEMENT OPTION - O (#PCDATA)*>
+<!ATTLIST OPTION
+        selected (selected) #IMPLIED
+        value  CDATA  #IMPLIED -- defaults to element content --
+        >
+
+<!-- Multi-line text input field. -->
+
+<!ELEMENT TEXTAREA - - (#PCDATA)*>
+<!ATTLIST TEXTAREA
+        name CDATA #REQUIRED
+        rows NUMBER #REQUIRED
+        cols NUMBER #REQUIRED
+        >
+
+<!--======================= Tables ========================================-->
+
+<!-- Widely deployed subset of the full table standard, see RFC 1942
+     e.g. at http://www.ics.uci.edu/pub/ietf/html/rfc1942.txt -->
+
+<!-- horizontal placement of table relative to window -->
+<!ENTITY % Where "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents -->
+<!ENTITY % cell.halign
+        "align  (left|center|right) #IMPLIED"
+        >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cell.valign
+        "valign  (top|middle|bottom)  #IMPLIED"
+        >
+
+<!ELEMENT table - - (caption?, tr+)>
+<!ELEMENT tr - O (th|td)*>
+<!ELEMENT (th|td) - O %body.content>
+
+<!ATTLIST table                       -- table element --
+        align     %Where;   #IMPLIED  -- table position relative to window --
+        width     %Length   #IMPLIED  -- table width relative to window --
+        border    %Pixels   #IMPLIED  -- controls frame width around table --
+        cellspacing %Pixels #IMPLIED  -- spacing between cells --
+        cellpadding %Pixels #IMPLIED  -- spacing within cells --
+        >
+
+<!ELEMENT CAPTION - - (%text;)* -- table or figure caption -->
+<!ATTLIST CAPTION
+        align (top|bottom) #IMPLIED
+        >
+
+<!ATTLIST tr                       -- table row --
+        %cell.halign;              -- horizontal alignment in cells --
+        %cell.valign;              -- vertical alignment in cells --
+        >
+
+<!ATTLIST (th|td)                  -- header or data cell --
+        nowrap (nowrap)  #IMPLIED  -- suppress word wrap --
+        rowspan NUMBER   1         -- number of rows spanned by cell --
+        colspan NUMBER   1         -- number of cols spanned by cell --
+        %cell.halign;              -- horizontal alignment in cell --
+        %cell.valign;              -- vertical alignment in cell --
+        width   %Pixels  #IMPLIED  -- suggested width for cell --
+        height  %Pixels  #IMPLIED  -- suggested height for cell --
+        >
+
+<!--================ Document Head ========================================-->
+
+<!-- %head.misc defined earlier on as "SCRIPT|STYLE|META|LINK" -->
+
+<!ENTITY % head.content "TITLE & ISINDEX? & BASE?">
+
+<!ELEMENT HEAD O O  (%head.content) +(%head.misc)>
+
+<!ELEMENT TITLE - -  (#PCDATA)* -(%head.misc)
+          -- The TITLE element is not considered part of the flow of text.
+             It should be displayed, for example as the page header or
+             window title.
+          -->
+
+<!ELEMENT ISINDEX - O EMPTY>
+<!ATTLIST ISINDEX
+        prompt CDATA #IMPLIED -- prompt message -->
+
+<!--
+    The BASE element gives an absolute URL for dereferencing relative
+    URLs, e.g.
+
+         <BASE href="http://foo.com/index.html">
+         ...
+         <IMG SRC="images/bar.gif">
+
+    The image is deferenced to
+
+         http://foo.com/images/bar.gif
+
+   In the absence of a BASE element the document URL should be used.
+   Note that this is not necessarily the same as the URL used to
+   request the document, as the base URL may be overridden by an HTTP
+   header accompanying the document.
+-->
+
+<!ELEMENT BASE - O EMPTY>
+<!ATTLIST BASE
+        href %URL  #REQUIRED
+        >
+
+<!ELEMENT META - O EMPTY -- Generic Metainformation -->
+<!ATTLIST META
+        http-equiv  NAME    #IMPLIED  -- HTTP response header name  --
+        name        NAME    #IMPLIED  -- metainformation name       --
+        content     CDATA   #REQUIRED -- associated information     --
+        >
+
+<!-- SCRIPT/STYLE are place holders for transition to next version of HTML -->
+
+<!ELEMENT STYLE  - - (#PCDATA)*  -(%head.misc) -- style info -->
+<!ELEMENT SCRIPT - - (#PCDATA)*  -(%head.misc) -- script statements -->
+
+<!--================ Document Structure ===================================-->
+
+<!ENTITY % version.attr "VERSION CDATA #FIXED '%HTML.Version;'">
+
+<![ %HTML.Deprecated [
+    <!ENTITY % html.content "HEAD, BODY, PLAINTEXT?">
+]]>
+
+<!ENTITY % html.content "HEAD, BODY">
+
+<!ELEMENT HTML O O  (%html.content)>
+<!ATTLIST HTML
+        %version.attr;
+        >
+
 * CL::		A Common Lisp compatibility package for Emacs-Lisp.
 * Custom::	Customization Library for Emacs
 * Ediff::	A Visual Interface to Unix Diff and Patch Utilities.
+* EFS::		Transparent remote file access via FTP
 * External-Widget::
 		Use XEmacs as a text widget inside of another program.
 * Forms::	A package for editing databases by filling in forms.
 * Gnus::	A netnews and mail reader for XEmacs.
+* HM--HTML-Mode::  HTML Editing Mode.
 * Hyperbole::	A programmable information management and hypertext system.
 * ILISP::	Multi-dialect inferior LISP interface.
 * Ispell::	Interactive spelling corrector.

File lib-src/emacsserver.c

 #if ! defined (HAVE_SYSVIPC)
 /* BSD code is very different from SYSV IPC code */
 
+#include "../src/sysproc.h" /* Needed for select */
+#ifndef SOCK_STREAM
+/* this is normally included by src/sysproc.h.  might be safe to omit
+ * it entirely.  lousy ultrix's sys/socket.h chokes if it's included
+ * twice, so we can't include unconditionally.  */
+#include <sys/socket.h>
+#endif
 #include <sys/types.h>
 #include <sys/file.h>
 #include <sys/signal.h>
 #include <sys/un.h>
 #include <stdio.h>
 #include <errno.h>
-#include "../src/sysproc.h" /* Needed for select */
-#ifndef SOCK_STREAM
-/* this is normally included by src/sysproc.h.  might be safe to omit
- * it entirely.  lousy ultrix's sys/socket.h chokes if it's included
- * twice, so we can't include unconditionally.  */
-#include <sys/socket.h>
-#endif
 
 void
 main ()

File lisp/efs/Makefile

 #
 # File:         Makefile
 # Release:      $efs release: 1.15 $
-# Version:      $Revision: 1.4 $
+# Version:      $Revision: 1.5 $
 # RCS:
 # Description:  Makefile for byte-compiling efs and dired.
 # Author:       Andy Norman, HPLabs, Bristol, UK.
 #             19.1 and 19.22, inclusive.
 #      19.23  for version 19.23 and later of the original GNU Emacs from FSF
 #      l19.11 for XEmacs 19.11 trhu 19.14
-#      x19.15 for XEmacs 19.15 and later
+#      x19.15 for XEmacs 19.15
+#      x20    for XEmacs 20.1 and later
 #    LISPDIR should be the directory in which you want the .elc
 #      files installed.
 #    BDIR should be the directory containing the .elc files for the
 #             19.22, inclusive
 #    19.23  for the original GNU Emacs from FSF, version 19.23 and later.
 #    l19.11 for Lucid XEmacs 19.11 thru 19.14
-#    x19.15 for XEmacs 19.15 and later
+#    x19.15 for XEmacs 19.15
+#    x20    for XEmacs 20.1 and later
 #
 #    If you have set the VERSION variable correctly, then typing just    
 #    make will suffice.
 CWD=`pwd`
 # Directory in which to install the lisp files
 LISPDIR=
+# Directory in which to install the info files
+INFODIR=
+# Directory in which to install the Texinfo file
+TEXIDIR=
 # Directory containing byte-compiler.  This is used by fixup.el
 BDIR=
 # Directory containing VM's .elc files.
           efs-vms.el efs-vos.el efs-plan9.el efs-ms-unix.el
 VMOBJS = efs-vm.elc
 VMSRC = efs-vm.el
-GEOBJS = dired-fsf.elc dired-mule.elc efs-dired-mule.elc \
-	 passwd.elc diff.elc auto-save.elc
-GESRC = dired-fsf.el dired-mule.el efs-dired-mule.el \
-	passwd.el diff.el auto-save.el
-XEOBJS = dired-faces.elc dired-xemacs.elc
-XESRC = dired-faces.el dired-xemacs.el
+MULEOBJS = dired-mule.elc efs-dired-mule.elc
+MULESRC = dired-mule.el efs-dired-mule.el
+GEOBJS = dired-fsf.elc \
+	 passwd.elc diff.elc auto-save.elc \
+	 $(MULEOBJS)
+GESRC = dired-fsf.el \
+	passwd.el diff.el auto-save.el \
+	$(MULESRC)
+XEOBJS = dired-faces.elc dired-xemacs.elc \
+	$(VMOBJS)
+XESRC = dired-faces.el dired-xemacs.el \
+	$(VMSRC) $(MULESRC)
 OBJS = $(DOBJS) $(EFSOBJS) $(VMOBJS) $(GEOBJS) $(XEOBJS) \
        efs-18.elc efs-19.elc efs-19.23.elc \
        efs-l19.11.elc efs-x19.15.elc \
 19.23: efs dired efs-19.23.elc $(GEOBJS)
 l19.11: efs dired efs-l19.11.elc $(XEOBJS)
 x19.15: efs dired efs-x19.15.elc $(XEOBJS)
+x20: efs dired efs-x19.15.elc $(XEOBJS) $(MULEOBJS)
 
 # Installation
 install:
 	@echo "Installing in $(LISPDIR)..."
-	@ls -C *.elc
 	cp *.elc $(LISPDIR)
+	cp efs.info $(INFODIR)
 install_src:
 	@echo "Installing in $(LISPDIR)..."
-	@ls -C `ls *.el 2>&1 | grep -v "fixup"` 2> /dev/null
 	cp `ls *.el | grep -v "fixup"` $(LISPDIR)
+	cp efs.texi $(TEXIDIR)
 install_xemacs:
 	@echo "Installing source in $(LISPDIR)..."
 	cp $(EFSSRC) $(DSRC) $(XESRC) efs-x19.15.el $(LISPDIR)
 	cp Makefile README fixup.el $(LISPDIR)
+	cp efs.texi $(TEXIDIR)
 diff_xemacs:
 	for f in $(EFSSRC) $(DSRC) $(XESRC) efs-x19.15.el \
 	         Makefile README fixup.el; do \

File lisp/efs/default-dir.el

 ;;
 ;; File:         default-dir.el
 ;; RCS:
-;; Version:      $Revision: 1.5 $
+;; Version:      #Revision: 1.5 $
 ;; Description:  Defines the function default-directory, for fancy handling
 ;;               of the initial contents in the minibuffer when reading
 ;;               file names.

File lisp/efs/dired-cmpr.el

 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-cmpr.el
-;; Dired Version: $Revision: 7.9 $
+;; Dired Version: #Revision: 7.9 $
 ;; RCS:
 ;; Description:   Commands for compressing marked files.
 ;;

File lisp/efs/dired-diff.el

 ;;
 ;; File:           dired-diff.el
 ;; RCS:
-;; Dired Version:  $Revision: 7.9 $
+;; Dired Version:  #Revision: 7.9 $
 ;; Description:    Support for diff and related commands.
 ;; Author:         Sandy Rutherford <sandy@ibm550.sissa.it>
 ;; Created:        Fri Jun 24 08:50:20 1994 by sandy on ibm550

File lisp/efs/dired-faces.el

 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; File:          dired-faces.el
-;; Dired Version: $Revision: 1.2 $
+;; Dired Version: #Revision: 7.9 $
 ;; RCS:
 ;; Description:   rudimentary face customization support for dired
 ;; Author:        Mike Sperber <sperber@informatik.uni-tuebingen.de>

File lisp/efs/dired-fsf.el

-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; File:          dired-fsf.el
-;; Dired Version: $Revision: 1.1 $
-;; RCS:
-;; Description:   dired functions for V19 of the original GNU Emacs from FSF
-;; Created:       Sat Jan 29 01:38:49 1994 by sandy on ibm550
-;; 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;; Requirements and provisions
-(provide 'dired-fsf)
-(require 'dired)
-
-;;;; Variables to set.
-
-(setq dired-modeline-tracking-cmds '(mouse-set-point))
-
-;;;; Support for text properties
-
-(defun dired-insert-set-properties (beg end)
-  ;; Sets the text properties for the file names.
-  (save-excursion
-    (goto-char beg)
-    (beginning-of-line)
-    (let ((eol (save-excursion (end-of-line) (point)))
-	  (bol (point)))
-      (while (< (point) end)
-	(setq eol (save-excursion (end-of-line) (point)))
-	(if (dired-manual-move-to-filename nil bol eol)
-	    (dired-set-text-properties
-	     (point) (dired-manual-move-to-end-of-filename nil bol eol)))
-	(goto-char (setq bol (1+ eol)))))))
-
-(defun dired-remove-text-properties (start end &optional object)
-  ;; Removes text properties.  Called in popup buffers.
-  (remove-text-properties start end '(mouse-face dired-file-name) object))
-
-(defun dired-set-text-properties (start end)
-  ;; Sets dired's text properties
-  (put-text-property start end 'mouse-face 'highlight)
-  (put-text-property start end 'dired-file-name t))
-
-(defun dired-move-to-filename (&optional raise-error bol eol)
-  (or bol (setq bol (save-excursion
-		      (skip-chars-backward "^\n\r")
-		      (point))))
-  (or eol (setq eol (save-excursion
-		      (skip-chars-forward "^\n\r")
-		      (point))))
-  (goto-char bol)
-  (let ((spot (next-single-property-change bol 'dired-file-name nil eol)))
-    (if (=  spot eol)
-	(if raise-error
-	    (error "No file on this line")
-	  nil)
-      (goto-char spot))))
-
-(defun dired-move-to-end-of-filename (&optional no-error bol eol)
-  ;; Assumes point is at beginning of filename,
-  ;; thus the rwx bit re-search-backward below will succeed in *this*
-  ;; line if at all.  So, it should be called only after
-  ;; (dired-move-to-filename t).
-  ;; On failure, signals an error (with non-nil NO-ERROR just returns nil).
-  (or eol (setq eol (save-excursion (skip-chars-forward "^\r\n") (point))))
-  (and
-   (null no-error)
-   selective-display
-   (or bol (setq bol (save-excursion (skip-chars-backward "^\r\n") (point))))
-   (eq (char-after (1- bol)) ?\r)
-   (cond
-    ((dired-subdir-hidden-p (dired-current-directory))
-     (error
-      (substitute-command-keys
-       "File line is hidden. Type \\[dired-hide-subdir] to unhide.")))
-    ((error
-      (substitute-command-keys
-       "File line is omitted. Type \\[dired-omit-toggle] to un-omit.")))))
-  (if (get-text-property (point) 'dired-file-name nil)
-      (goto-char (next-single-property-change (point) 'dired-file-name
-					      nil eol))
-    (and (null no-error) (error "No file on this line"))))
-
-;; Text properties do not work properly in pre-19.26.
-
-(if (or (not (boundp 'emacs-major-version))
-	(= emacs-major-version 19))
-    (progn
-      (if (not (boundp 'emacs-minor-version))
-	  ;; Argument structure of where-is-internal went through some
-	  ;; changes.
-	  (defun dired-key-description (cmd &rest prefixes)
-	    ;; Return a key description string for a menu.
-	    ;; If prefixes are given, they should be either strings,
-	    ;; integers, or 'universal-argument.
-	    (let ((key (where-is-internal cmd dired-mode-map nil t)))
-	      (if key
-		  (key-description
-		   (apply 'vconcat
-			  (append
-			   (mapcar
-			    (function
-			     (lambda (x)
-			       (if (eq x 'universal-argument)
-				   (where-is-internal 'universal-argument
-						      dired-mode-map nil t)
-				 x)))
-			    prefixes)
-			   (list key))))
-		""))))
-      (if (or (not (boundp 'emacs-minor-version))
-	      (< emacs-minor-version 26))
-	  (progn
-	    (fset 'dired-insert-set-properties 'ignore)
-	    (fset 'dired-remove-text-properties 'ignore)
-	    (fset 'dired-set-text-properties 'ignore)
-	    (fset 'dired-move-to-filename 'dired-manual-move-to-filename)
-	    (fset 'dired-move-to-end-of-filename
-		  'dired-manual-move-to-end-of-filename)))))
-
-;;;; Keymaps
-
-;;; Caching Menus
-
-(defun dired-menu-item (menu-item cmd width &rest prefixes)
-  ;; Return a key description string for a menu.  If prefixes are given,
-  ;; they should be either characters, or 'universal-argument.
-  (let ((desc (apply 'dired-key-description cmd prefixes)))
-    (if (string-equal desc "")
-	menu-item
-      (concat menu-item
-	      (make-string
-	       (max (- width (length menu-item) (length desc) 2) 1) 32)
-	      "(" desc ")"))))
-
-(defun dired-cache-key (keymap event cmd &rest prefixes)
-  ;; Caches a keybinding for cms in a menu keymap.
-  ;; This is able to handle prefix keys.
-  (let ((desc (apply 'dired-key-description cmd prefixes)))
-    (or (string-equal desc "")
-	(progn
-	  (let ((elt (assq event keymap)))
-	    (if elt
-		(let ((tail (cdr elt)))
-		  (setcdr tail
-			  (cons
-			   (cons
-			    nil (concat "  (" desc ")"))
-			   (cdr tail))))))))))
-
-;; Don't cache keys in old emacs versions.  Is 23 the right cut-off point?
-(if (or (not (boundp 'emacs-minor-version))
-	(< emacs-minor-version 23))
-    (fset 'dired-cache-key 'ignore))
-
-(defvar dired-visit-popup-menu nil)
-;; Menus of commands in the Visit popup menu.
-(defvar dired-do-popup-menu nil)
-;; Menu of commands in the dired Do popup menu.
-
-;; Menus for the menu bar.  
-(defvar dired-subdir-menu
-  (cons "Subdir" (make-sparse-keymap "Subdir")))
-(defvar dired-mark-menu
-  (cons "Mark" (make-sparse-keymap "Mark")))
-(defvar dired-do-menu
-  (cons "Do" (make-sparse-keymap "Do")))
-(defvar dired-regex-menu
-  (cons "Regexp" (make-sparse-keymap "Regex")))
-(defvar dired-look-menu
-  (cons "Look" (make-sparse-keymap "Look")))
-(defvar dired-sort-menu
-  (cons "Sort" (make-sparse-keymap "Sort")))
-(defvar dired-help-menu nil)
-
-(defun dired-setup-menus ()
-
-  ;;  popup menu
-
-  (setq dired-visit-popup-menu
-	(list
-	 (cons (dired-menu-item "Find File" 'dired-find-file 35)
-	       'dired-advertised-find-file)
-	 (cons (dired-menu-item "Find in Other Window"
-				'dired-find-file-other-window 35)
-	       'dired-find-file-other-window)
-	 (cons (dired-menu-item "Find in Other Frame"
-				'dired-find-file-other-frame 35)
-	       'dired-find-file-other-frame)
-	 (cons (dired-menu-item "View File" 'dired-view-file 35)
-	       'dired-view-file)
-	 (cons (dired-menu-item "Display in Other Window"
-				'dired-find-file-other-window 35
-				'universal-argument)
-	       'dired-display-file)))
-
-  ;; Operate popup menu
-
-  (setq dired-do-popup-menu
-	(list
-	 (cons (dired-menu-item "Copy to..." 'dired-do-copy 35 1)
-	       'dired-do-copy)
-	 (cons (dired-menu-item "Rename to..." 'dired-do-rename 35 1)
-	       'dired-do-rename)
-	 (cons (dired-menu-item "Compress/Uncompress" 'dired-do-compress
-				35 1) 'dired-do-compress)
-	 (cons (dired-menu-item "Uuencode/Uudecode" 'dired-do-uucode
-				35 1) 'dired-do-uucode)
-	 (cons (dired-menu-item "Change Mode..." 'dired-do-chmod 35 1)
-	       'dired-do-chmod)
-	 (cons (dired-menu-item "Change Owner..." 'dired-do-chown 35 1)
-	       'dired-do-chown)
-	 (cons (dired-menu-item "Change Group..." 'dired-do-chgrp 35 1)
-	       'dired-do-chgrp)
-	 (cons (dired-menu-item "Load" 'dired-do-load 35 1)
-	       'dired-do-load)
-	 (cons (dired-menu-item "Byte-compile" 'dired-do-byte-compile 35 1)
-	       'dired-do-byte-compile)
-	 (cons (dired-menu-item "Hardlink to..." 'dired-do-hardlink 35 1)
-	       'dired-do-hardlink)
-	 (cons (dired-menu-item "Symlink to..." 'dired-do-symlink 35 1)
-	       'dired-do-symlink)
-	 (cons (dired-menu-item "Relative Symlink to..."
-				'dired-do-relsymlink 35 1)
-	       'dired-do-relsymlink)
-	 (cons (dired-menu-item "Shell Command..."
-				'dired-do-shell-command 35 1)
-	       'dired-do-shell-command)
-	 (cons (dired-menu-item "Background Shell Command..."
-				'dired-do-background-shell-command 35 1)
-	       'dired-do-background-shell-command)
-	 (cons (dired-menu-item "Delete" 'dired-do-delete 35 1)
-	       'dired-do-delete)))
-
-  ;; Subdir Menu-bar Menu
-  
-  (define-key dired-mode-map [menu-bar subdir] dired-subdir-menu)
-  (define-key dired-mode-map [menu-bar subdir uncompress-subdir-files]
-    (cons "Uncompress Compressed Files"
-	  (function
-	   (lambda () (interactive) (dired-compress-subdir-files t)))))
-  (dired-cache-key dired-subdir-menu 'uncompress-subdir-files
-		   'dired-compress-subdir-files 'universal-argument)
-  (define-key dired-mode-map [menu-bar subdir compress-subdir-files]
-    '("Compress Uncompressed Files" . dired-compress-subdir-files))
-  (define-key dired-mode-map [menu-bar subdir flag]
-    '("Flag Files for Deletion" . dired-flag-subdir-files))
-  (define-key dired-mode-map [menu-bar subdir mark]
-    '("Mark Files" . dired-mark-subdir-files))
-  (define-key dired-mode-map [menu-bar subdir redisplay]
-    '("Redisplay Subdir" . dired-redisplay-subdir))
-  (define-key dired-mode-map [menu-bar subdir subdir-separator]
-    '("-- Commands on All Files in Subdir --"))
-  (define-key dired-mode-map [menu-bar subdir kill-subdir]
-    '("Kill This Subdir" . dired-kill-subdir))
-  (define-key dired-mode-map [menu-bar subdir create-directory]
-    '("Create Directory..." . dired-create-directory))
-  (define-key dired-mode-map [menu-bar subdir insert]
-    '("Insert This Subdir" . dired-maybe-insert-subdir))
-  (define-key dired-mode-map [menu-bar subdir down-dir]
-    '("Down Dir" . dired-down-directory))
-  (define-key dired-mode-map [menu-bar subdir up-dir]
-    '("Up Dir" . dired-up-directory))
-  (define-key dired-mode-map [menu-bar subdir prev-dirline]
-    '("Prev Dirline" . dired-prev-dirline))
-  (define-key dired-mode-map [menu-bar subdir next-dirline]
-    '("Next Dirline" . dired-next-dirline))
-  (define-key dired-mode-map [menu-bar subdir prev-subdir]
-    '("Prev Subdir" . dired-prev-subdir))
-  (define-key dired-mode-map [menu-bar subdir next-subdir]
-    '("Next Subdir" . dired-next-subdir))
-  
-  ;; Mark Menu-bar Menu
-
-  (define-key dired-mode-map [menu-bar mark] dired-mark-menu)
-  (define-key dired-mode-map [menu-bar mark mark-from-compilation-buffer]
-    '("Mark Files from Compile Buffer..." . dired-mark-files-compilation-buffer))
-  (define-key dired-mode-map [menu-bar mark mark-from-other-buffer]
-    '("Mark Files from Other Dired" .
-      dired-mark-files-from-other-dired-buffer))
-  (define-key dired-mode-map [menu-bar mark mark-separator]
-    '("--"))
-  (define-key dired-mode-map [menu-bar mark marker-char-right]
-    '("Marker stack right" . dired-marker-stack-right))
-  (define-key dired-mode-map [menu-bar mark marker-char-left]
-    '("Marker stack left" . dired-marker-stack-left))
-  (define-key dired-mode-map [menu-bar mark restore-marker]
-    '("Restore marker char" . dired-restore-marker-char))
-  (define-key dired-mode-map [menu-bar mark add-marker]
-    '("Set new marker char..." . dired-set-marker-char))
-  (define-key dired-mode-map [menu-bar mark auto-save-files]
-    '("Flag Auto-save Files" . dired-flag-auto-save-files))
-  (define-key dired-mode-map [menu-bar mark backup-files]
-    '("Flag Backup Files" . dired-flag-backup-files))
-  (define-key dired-mode-map [menu-bar mark executables]
-  '("Mark Executables" . dired-mark-executables))
-  (define-key dired-mode-map [menu-bar mark directory]
-    '("Mark Old Backups" . dired-clean-directory))
-  (define-key dired-mode-map [menu-bar mark directories]
-    '("Mark Directories" . dired-mark-directories))
-  (define-key dired-mode-map [menu-bar mark symlinks]
-    '("Mark Symlinks" . dired-mark-symlinks))
-  (define-key dired-mode-map [menu-bar mark toggle]
-    (cons "Toggle Marks..."
-	  (function (lambda () (interactive)
-		      (let ((current-prefix-arg t))
-			(call-interactively 'dired-change-marks))))))
-  (dired-cache-key dired-mark-menu 'toggle 'dired-change-marks
-		   'universal-argument)
-  (define-key dired-mode-map [menu-bar mark unmark-all]
-    '("Unmark All" . dired-unmark-all-files))
-  (define-key dired-mode-map [menu-bar mark marks]
-    '("Change Marks..." . dired-change-marks))
-  (define-key dired-mode-map [menu-bar mark prev]
-    '("Previous Marked" . dired-prev-marked-file))
-  (define-key dired-mode-map [menu-bar mark next]
-    '("Next Marked" . dired-next-marked-file))
- 
-  ;; Do Menu-bar Menu
-  
-  (define-key dired-mode-map [menu-bar do]
-    dired-do-menu)
-  (define-key dired-mode-map [menu-bar do do-popup]
-    (cons "Operate on file menu >"
-	  'dired-do-popup-menu-internal))
-  (dired-cache-key dired-do-menu 'do-popup
-		   'dired-do-popup-menu)
-  (define-key dired-mode-map [menu-bar do visit-popup]
-    (cons "Visit file menu >"
-	  'dired-visit-popup-menu-internal))
-  (dired-cache-key dired-do-menu 'visit-popup
-		   'dired-visit-popup-menu)
-  (define-key dired-mode-map [menu-bar do delete]
-    '("Delete Marked Files" . dired-do-delete))
-  (define-key dired-mode-map [menu-bar do background-command]
-    '("Background Shell Command..." . dired-do-background-shell-command))
-  (define-key dired-mode-map [menu-bar do command]
-    '("Shell Command..." . dired-do-shell-command))
-  (define-key dired-mode-map [menu-bar do symlink]
-    '("Symlink to..." . dired-do-symlink))
-  (define-key dired-mode-map [menu-bar do hardlink]
-    '("Hardlink to..." . dired-do-hardlink))
-  (define-key dired-mode-map [menu-bar do compile]
-    '("Byte-compile" . dired-do-byte-compile))
-  (define-key dired-mode-map [menu-bar do load]
-    '("Load" . dired-do-load))
-  (define-key dired-mode-map [menu-bar do chgrp]
-    '("Change Group..." . dired-do-chgrp))
-  (define-key dired-mode-map [menu-bar do chown]
-    '("Change Owner..." . dired-do-chown))
-  (define-key dired-mode-map [menu-bar do chmod]
-  '("Change Mode..." . dired-do-chmod))
-  (define-key dired-mode-map [menu-bar do print]
-    '("Print..." . dired-do-print))
-  (define-key dired-mode-map [menu-bar do uucode]
-    '("Uuencode/Uudecode" . dired-do-uucode))
-  (define-key dired-mode-map [menu-bar do compress]
-    '("Compress/Uncompress" . dired-do-compress))
-  (define-key dired-mode-map [menu-bar do expunge]
-    '("Expunge File Flagged for Deletion" . dired-expunge-deletions))
-  (define-key dired-mode-map [menu-bar do rename]
-    '("Rename to..." . dired-do-rename))
-  (define-key dired-mode-map [menu-bar do copy]
-    '("Copy to..." . dired-do-copy))
-
-;; Regex Menu-bar Menu
-  
-  (define-key dired-mode-map [menu-bar regex] dired-regex-menu)
-  (define-key dired-mode-map [menu-bar regex show-omit-regexp]
-    (cons "Show Omit Regex"
-	  (function
-	   (lambda ()
-	     (interactive)
-	     (let ((current-prefix-arg 0))
-	       (call-interactively 'dired-add-omit-regexp))))))
-  (dired-cache-key dired-regex-menu 'show-omit-regexp
-		   'dired-add-omit-regexp 0)
-  (define-key dired-mode-map [menu-bar regex remove-omit-extension]
-    (cons "Remove Omit Extension..."
-	  (function
-	   (lambda ()
-	     (interactive)
-	     (let ((current-prefix-arg '(16)))
-	       (call-interactively 'dired-add-omit-regexp))))))
-  (dired-cache-key dired-regex-menu 'remove-omit-extension
-		   'dired-add-omit-regexp 'universal-argument
-		   'universal-argument)
-  (define-key dired-mode-map [menu-bar regex add-omit-extension]
-    (cons "Add Omit Extension..."
-	  (function
-	   (lambda ()
-	     (interactive)
-	     (let ((current-prefix-arg '(4)))
-	       (call-interactively 'dired-add-omit-regexp))))))
-  (dired-cache-key dired-regex-menu 'add-omit-extension
-		   'dired-add-omit-regexp 'universal-argument)
-  (define-key dired-mode-map [menu-bar regex remove-omit-regexp]
-    (cons "Remove Omit Regex..."
-	  (function
-	   (lambda ()
-	     (interactive)
-	     (let ((current-prefix-arg 1))
-	       (call-interactively 'dired-add-omit-regexp))))))
-  (dired-cache-key dired-regex-menu 'remove-omit-regexp
-		   'dired-add-omit-regexp 1)
-  (define-key dired-mode-map [menu-bar regex add-omit-regexp]
-    '("Add Omit Regex..." . dired-add-omit-regexp))
-  (define-key dired-mode-map [menu-bar regex separator]
-    '("--"))
-  (define-key dired-mode-map [menu-bar regex relsymlink]
-    '("Relative Symlink..." . dired-do-relsymlink-regexp))
-  (define-key dired-mode-map [menu-bar regex symlink]
-    '("Symlink..." . dired-do-symlink-regexp))
-  (define-key dired-mode-map [menu-bar regex hardlink]
-    '("Hardlink..." . dired-do-hardlink-regexp))
-  (define-key dired-mode-map [menu-bar regex rename]
-    '("Rename..." . dired-do-rename-regexp))
-  (define-key dired-mode-map [menu-bar regex copy]
-    '("Copy..." . dired-do-copy-regexp))
-  (define-key dired-mode-map [menu-bar regex upcase]
-    '("Upcase" . dired-upcase))
-  (define-key dired-mode-map [menu-bar regex downcase]
-    '("Downcase" . dired-downcase))
-  (define-key dired-mode-map [menu-bar regex dired-flag-extension]
-    '("Flag Files with Extension..." . dired-flag-extension))
-  (define-key dired-mode-map [menu-bar regex flag]
-    '("Flag..." . dired-flag-files-regexp))
-  (define-key dired-mode-map [menu-bar regex mark-extension]
-    '("Mark Files with Extension..." . dired-mark-extension))
-  (define-key dired-mode-map [menu-bar regex mark]
-    '("Mark..." . dired-mark-files-regexp))
-
-  ;; Look Menu-bar Menu
-  
-  (define-key dired-mode-map [menu-bar look] dired-look-menu)
-  (define-key dired-mode-map [menu-bar look patch]
-    '("Patch File" . dired-epatch))
-  (define-key dired-mode-map [menu-bar look ediff]
-    '("Ediff Files..." . dired-ediff))
-  (define-key dired-mode-map [menu-bar look emerge-with-ancestor]
-    '("Merge Files Having Common Ancestor..." . dired-emerge-with-ancestor))
-  (define-key dired-mode-map [menu-bar look emerge]
-    '("Merge Files..." . dired-emerge))
-  (define-key dired-mode-map [menu-bar look backup-diff]
-    '("Diff with Backup" . dired-backup-diff))
-  (define-key dired-mode-map [menu-bar look diff]
-    '("Diff File..." . dired-diff))
-  ;; Put in a separator line.
-  (define-key dired-mode-map [menu-bar look look-separator]
-    '("--"))
-  (define-key dired-mode-map [menu-bar look tags-query-replace]
-    '("Tags Query Replace..." . dired-do-tags-query-replace))
-  (define-key dired-mode-map [menu-bar look tags-search]
-    '("Tags Search for..." . dired-do-tags-search))
-  (define-key dired-mode-map [menu-bar look grep]
-    '("Grep for..."  . dired-do-grep))
-  
-  ;; Sort Menu-bar Menu
-  
-  (define-key dired-mode-map [menu-bar sort] dired-sort-menu)
-  (define-key dired-mode-map [menu-bar sort redisplay-killed]
-    (cons "Redisplay Killed Lines"
-	  (function (lambda () (interactive) (dired-do-kill-file-lines 0)))))
-  (dired-cache-key dired-sort-menu 'redisplay-killed
-		   'dired-do-kill-file-lines 0)
-  (define-key dired-mode-map [menu-bar sort kill]
-    '("Kill Marked Lines" . dired-do-kill-file-lines))
-  (define-key dired-mode-map [menu-bar sort toggle-omit]
-    '("Toggle Omit" . dired-omit-toggle))
-  (define-key dired-mode-map [menu-bar sort hide-subdir]
-    '("Hide Subdir" . dired-hide-subdir))
-  (define-key dired-mode-map [menu-bar sort hide-all]
-    '("Hide All Subdirs" . dired-hide-all))
-  (define-key dired-mode-map [menu-bar sort sort-separator]
-    '("--"))
-  (define-key dired-mode-map [menu-bar sort entire-edit]
-    (cons "Edit Switches for Entire Buffer..."
-	  (function (lambda () (interactive)
-		      (dired-sort-toggle-or-edit '(16))))))
-  (dired-cache-key dired-sort-menu 'entire-edit
-		   'dired-sort-toggle-or-edit 'universal-argument
-		   'universal-argument)
-  (define-key dired-mode-map [menu-bar sort entire-name]
-    (cons "Sort Entire Buffer by Name"
-	  (function (lambda () (interactive)
-		      (dired-sort-toggle-or-edit 'name)))))
-  (dired-cache-key dired-sort-menu 'entire-name 'dired-sort-toggle-or-edit
-		   'universal-argument)
-  (define-key dired-mode-map [menu-bar sort entire-date]
-    (cons "Sort Entire Buffer by Date"
-	  (function (lambda () (interactive)
-		      (dired-sort-toggle-or-edit 'date)))))
-  (dired-cache-key dired-sort-menu 'entire-date 'dired-sort-toggle-or-edit
-		   'universal-argument)
-  (define-key dired-mode-map [menu-bar sort new-edit]
-    (cons "Edit Default Switches for Inserted Subdirs..."
-	  (function (lambda () (interactive) (dired-sort-toggle-or-edit 2)))))
-  (dired-cache-key dired-sort-menu 'new-edit 'dired-sort-toggle-or-edit 2)
-  (define-key dired-mode-map [menu-bar sort edit]
-    (cons "Edit Switches for Current Subdir..."
-	  (function (lambda () (interactive) (dired-sort-toggle-or-edit 1)))))
-  (dired-cache-key dired-sort-menu 'edit 'dired-sort-toggle-or-edit 1)
-  (define-key dired-mode-map [menu-bar sort show]
-    (cons "Show Current Switches"
-	  (function (lambda () (interactive) (dired-sort-toggle-or-edit 0)))))
-  (dired-cache-key dired-sort-menu 'show 'dired-sort-toggle-or-edit 0)
-  (define-key dired-mode-map [menu-bar sort toggle]
-    '("Toggle Current Subdir by Name/Date" . dired-sort-toggle-or-edit))
-
-  ;; Help Menu-bar Menu
-  
-  (or dired-help-menu
-      (setq dired-help-menu
-	    (if (and (boundp 'menu-bar-help-menu) (keymapp menu-bar-help-menu))
-		(cons "Help" (cons 'keymap (cdr menu-bar-help-menu)))
-	      (cons "Help" (make-sparse-keymap "Help")))))
-  (define-key dired-mode-map [menu-bar dired-help] dired-help-menu)
-  (define-key dired-mode-map [menu-bar dired-help help-separator]
-    '("--"))
-  (define-key dired-mode-map [menu-bar dired-help dired-bug]
-    '("Report Dired Bug" . dired-report-bug))
-  (define-key dired-mode-map [menu-bar dired-help dired-var-apropos]
-    (cons "Dired Variable Apropos"
-	  (function (lambda ()
-		      (interactive)
-		      (let ((current-prefix-arg t))
-			(call-interactively 'dired-apropos))))))
-  (dired-cache-key dired-help-menu 'dired-var-apropos
-		   'dired-apropos 'universal-argument)
-  (define-key dired-mode-map [menu-bar dired-help dired-apropos]
-    '("Dired Command Apropos" . dired-apropos))
-  (define-key dired-mode-map [menu-bar dired-help dired-info]
-    (cons "Dired Info Manual"
-	  (function (lambda ()
-		      (interactive)
-		      (dired-describe-mode t)))))
-  (dired-cache-key dired-help-menu 'dired-info 'dired-describe-mode
-		   'universal-argument)
-  (define-key dired-mode-map [menu-bar dired-help dired-describe-mode]
-    '("Describe Dired" . dired-describe-mode))
-  (define-key dired-mode-map [menu-bar dired-help dired-summary]
-    '("Dired Summary Help" . dired-summary)))
-
-(add-hook 'dired-setup-keys-hook 'dired-setup-menus)
-
-;;; Mouse functions
-
-(defun dired-mouse-find-file (event)
-  "In dired, visit the file or directory name you click on."
-  (interactive "e")
-  (save-excursion
-    (set-buffer (window-buffer (posn-window (event-end event))))
-    (if dired-subdir-alist
-	(save-excursion
-	  (goto-char (posn-point (event-end event)))
-	  (dired-find-file))
-      (error
-       (concat "dired-subdir-alist seems to be mangled.  "
-	       (substitute-command-keys
-		"\\<dired-mode-map>Try dired-revert (\\[dired-revert])."))))))
-
-(defun dired-mouse-mark (event)
-  "In dired, mark the file name that you click on.
-If the file name is already marked, this unmarks it."
-  (interactive "e")
-  (save-excursion
-    (set-buffer (window-buffer (posn-window (event-end event))))
-    (if dired-subdir-alist
-	(save-excursion
-	  (goto-char (posn-point (event-end event)))
-	  (beginning-of-line)
-	  (if (looking-at dired-re-mark)
-	      (dired-unmark 1)
-	    (dired-mark 1)))
-      (error
-       (concat "dired-subdir-alist seems to be mangled.  "
-	       (substitute-command-keys
-		"\\<dired-mode-map>Try dired-revert (\\[dired-revert])."))))))
-
-(defun dired-mouse-flag (event)
-  "In dired, flag for deletion the file name that you click on.
-If the file name is already flag, this unflags it."
-  (interactive "e")
-  (save-excursion
-    (set-buffer (window-buffer (posn-window (event-end event))))
-    (if dired-subdir-alist
-	(save-excursion
-	  (goto-char (posn-point (event-end event)))
-	  (beginning-of-line)
-	  (if (char-equal (following-char) dired-del-marker)
-	      (dired-unflag 1)
-	    (dired-flag-file-deletion 1)))
-      (error
-       (concat "dired-subdir-alist seems to be mangled.  "
-	       (substitute-command-keys
-		"\\<dired-mode-map>Try dired-revert (\\[dired-revert])."))))))
-
-(defun dired-mouse-get-target (event)
-  "In dired, put a copy of the selected directory in the active minibuffer."
-  (interactive "e")
-  (let ((obuff (current-buffer))
-	mb)
-    (set-buffer (window-buffer (posn-window (event-end event))))
-    (if (and dired-subdir-alist (setq mb (dired-get-active-minibuffer-window)))
-	(let (dir)
-	  (goto-char (posn-point (event-end event)))
-	  (setq dir (dired-current-directory))
-	  (select-window mb)
-	  (set-buffer (window-buffer mb))
-	  (erase-buffer)
-	  (insert dir))
-      (set-buffer obuff)
-      (if mb
-	  (error "No directory specified")
-	(error "No active minibuffer")))))
-
-(defun dired-visit-popup-menu (event)
-  "Popup a menu to visit the moused file."
-  (interactive "e")
-  (save-excursion
-    (set-buffer (window-buffer (posn-window (event-end event))))
-    (save-excursion
-      (goto-char (posn-point (event-end event)))
-      (dired-visit-popup-menu-internal event))))
-
-(defun dired-visit-popup-menu-internal (event)
-  (interactive "e")
-  (let ((fn (dired-get-filename 'no-dir))
-	fun)
-    (dired-remove-text-properties 0 (length fn) fn)
-    (setq fun (x-popup-menu
-	      event
-	      (list "Visit popup menu"
-		    (cons
-		     (concat "Visit " fn " with")
-		     dired-visit-popup-menu))))
-    (if fun (funcall fun))))
-
-(defun dired-do-popup-menu (event)
-  ;; Pop up a menu do an operation on the moused file.
-  (interactive "e")
-  (let ((obuff (current-buffer)))
-    (unwind-protect
-	(progn
-	  (set-buffer (window-buffer (posn-window (event-end event))))
-	  (dired-save-excursion
-	    (goto-char (posn-point (event-end event)))
-	    (dired-do-popup-menu-internal event)))
-      (set-buffer obuff))))
-
-(defun dired-do-popup-menu-internal (event)
-  (interactive "e")
-  (let ((fn (dired-get-filename 'no-dir))
-	fun)
-    (dired-remove-text-properties 0 (length fn) fn)
-    (setq fun (x-popup-menu
-	       event
-	       (list "Do popup menu"
-		     (cons
-		      (concat "Do operation on " fn)
-		      dired-do-popup-menu))))
-    (dired-save-excursion
-      (if fun (let ((current-prefix-arg 1))
-		(call-interactively fun))))))
-
-;;; Key maps
-
-;; Get rid of the Edit menu bar item to save space.
-(define-key dired-mode-map [menu-bar edit] 'undefined)
-;; We have our own help item
-(define-key dired-mode-map [menu-bar help] 'undefined)
-(define-key dired-mode-map [mouse-2] 'dired-mouse-find-file)
-(define-key dired-mode-map [S-mouse-1] 'dired-mouse-mark)
-(define-key dired-mode-map [C-S-mouse-1] 'dired-mouse-flag)
-(define-key dired-mode-map [down-mouse-3] 'dired-visit-popup-menu)
-;; This can be useful in dired, so move to double click.
-(define-key dired-mode-map [double-mouse-3] 'mouse-save-then-kill)
-(define-key dired-mode-map [C-down-mouse-2] 'dired-do-popup-menu)
-(define-key dired-mode-map [M-mouse-2] 'dired-mouse-get-target)
-
-(or (memq 'dired-help menu-bar-final-items)
-    (setq menu-bar-final-items (cons 'dired-help menu-bar-final-items)))
-
-;;; end of dired-fsf.el

File lisp/efs/dired-grep.el