Commits

Anonymous committed 821dec4

Import from CVS: tag r20-0

  • Participants
  • Parent commits 7df2982
  • Tags r20-0

Comments (0)

Files changed (46)

File CHANGES-beta

 							-*- indented-text -*-
+to 20.0 final
+-- iso-acc.el updated courtesy of Alexandre Oliva
+-- Miscellaneous bug fixes
+
 to 20.0 beta93
 -- tm-7.101
 -- w3-3.0.51
+Sat Feb  1 18:17:38 1997  Steven L Baur <steve@altair.xemacs.org>
+
+	* XEmacs 20.0 is released.
+	* XEmacs 19.15b-91 AKA XEmacs '97 NOT! is released.
+
+Sat Feb  1 00:00:48 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* PROBLEMS:  Updated from beta test bug reports.
+	Put in outline-mode/outl-mouse-minor-mode by default.
+
+Wed Jan 29 19:59:41 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* CHANGES-beta: XEmacs 20.0-b93 is released.
+
 Sat Jan 25 15:43:59 1997  Steven L Baur  <steve@altair.xemacs.org>
 
 	* CHANGES-beta: XEmacs 20.0-b92 is released.
+-*- mode:outline; minor-mode:outl-mouse -*-
 This file describes various problems that have been encountered
 in compiling, installing and running XEmacs.
 
 (synched up with: 19.30)
+(updated for 20.0)
 
 * On Irix, I don't see the toolbar icons and I'm getting lots of
   entries in the warnings buffer.
 
   ftp://tsx-11.mit.edu/pub/linux/packages/GCC/gcc272-no-sr-bug.lbin.tgz
 
-  Or wait for GCC 2.7.3.
+  Or use GCC 2.7.2.1.
 
 * Under some versions of OSF XEmacs runs fine if built without
 optimization but will crash randomly if built with optimization.
 You probably have /usr/ucblib/ on your LD_LIBRARY_PATH.  Do the link with
 LD_LIBRARY_PATH unset.
 
+* On Solaris 2.* I cannot make alloc.o, glyphs.o or process.o.
+
+The SparcWorks C compiler may have difficulty building those modules
+with optimization level -xO4.  Try using only "-fast" optimization
+for just those modules.  (Or use gcc).
+
 * I don't have `xmkmf' and `imake' on my HP.
 
 You can get these standard X tools by anonymous FTP to hpcvaaz.cv.hp.com.
 * With certain fonts, when the cursor appears on a character, the
 character doesn't appear--you get a solid box instead.
 
-One user on a Linux-based GNU system reported that this problem went
-away with installation of a new X server.  The failing server was
-XFree86 3.1.1.  XFree86 3.1.2 works.
+One user on a Linux system reported that this problem went away with
+installation of a new X server.  The failing server was XFree86 3.1.1.
+XFree86 3.1.2 works.
 
 * On SunOS 4.1.3, Emacs unpredictably crashes in _yp_dobind_soft.
 
 exist.  The first line in the `/etc/hosts' file should look like this
 (replace HOSTNAME with your host name):
 
-    127.0.0.1      HOSTNAME
+    127.0.0.1      localhost HOSTNAME
 
 Also make sure that the `/etc/host.conf' files contains the following
 lines:
 This problem seems to arise only when the international language
 extensions to X11R5 are installed.
 
-* Typing C-c C-c in Shell mode kills your X server.
-
-This happens with Linux kernel 1.0 thru 1.04, approximately.  The workaround is
-to define SIGNALS_VIA_CHARACTERS in config.h and recompile Emacs.
-Newer Linux kernel versions don't have this problem.
-
 * src/Makefile and lib-src/Makefile are truncated--most of the file missing.
 
 This can happen if configure uses GNU sed version 2.03.  That version
 
 This problem will not happen if the m-...h file for your type
 of machine defines NO_UNION_TYPE.  That is the recommended setting now.
+
+* `Error: No ExtNode to pop!' on Linux systems with Lesstif.
+
+This error message has been observed with lesstif-0.75a.  It does not
+appear to cause any harm.
+
+* Sparc Linux -vs- libXmu.
+
+There have been reports of configure not detecting libXmu on
+SparcLinux.  The fix is to add -lXmu to the link flags.
+
+* Debian Linux and Berkeley db include files.
+
+Debian Linux puts the Berkeley db include files in /usr/include/db
+instead of /usr/include.  The fix is to use
+--site-includes=/usr/include/db with configure.
+
+* Signaling: (error "Byte code stack underflow (byte compiler bug), pc 38")
+
+This error is given when XEmacs v20 is compiled without MULE support
+but is attempting to load a .elc which requires MULE support.  The fix
+is to rebytecompile the offending file.
+
+* alloc.c will not compile without -P on HP-UX 9.05
+
+Pekka Marjola <pema@iki.fi> writes:
+Gcc (2.7.2, with cpplib IIRC) required something (-P worked :) to get
+it to compile. Otherwise it failed on those DEFUN macros with comments
+inside parameter lists (like buffer.c, line 296).
+
+* Excessive optimization with Gcc-2.7.2 and pgcc can break XEmacs
+
+It has been reported on some systems that compiling with -O6 can lead
+to XEmacs failures.  The workaround is to use a lower optimization
+level.  -O2 and -O4 have been tested extensively.
+
+* -O2 optimization on Irix 5.3 can cause compiler complaint.
+
+Nick J. Crabtree <nickc@scopic.com> writes:
+Comes up OK on a tty (all I have available over this slow link). Ill
+give it a hammering tomorrow.  The -O2 optimisation complained about
+sizes exceeding thresholds; I haven't bothered to use the -Olimit
+option it recommends.
+
+* Excessive optimization on AIX 4.2 can lead to compiler failure.
+
+Valdis.Kletnieks@vt.edu writes:
+At least at the b34 level, and the latest-and-greatest IBM xlc
+(3.1.4.4), there are problems with -O3.  I haven't investigated
+further.
+
+* Sed problems on Solaris 2.5
+
+There have been reports of Sun sed truncating very lines in the
+Makefile during configuration.  The workaround is to use GNU sed.
+
+* CDE is not autodetected on HP.
+
+Richard Cognot <cognot@ensg.u-nancy.fr> writes:
+I have to force /usr/dt/{lib,include} into the site include/lib
+command line options. I could add these in hpux10.h, but then I would
+think these should be pretty standard (to my knowledge, that's also
+where Sun puts its CDE stuff), so that wouldn't fix the problem on
+other architectures. AAMOF, when these path are given, CDE is
+detected, and DragAndDrop works (more or less, see next issue).
+
+* Signalling: (wrong-type-argument ...) when loading mail-abbrevs
+
+The is seen when installing the Big Brother Data Base (bbdb) which
+includes an outdated copy of mail-abbrevs.el.  Remove the copy that
+comes with bbdb and use the one that comes with XEmacs.
 native_sound_lib=''
 # make normal error-checking be the default in alpha and beta versions, so
 # that bugs get noticed.  Change this for released versions.
-error_check_default='yes'
+error_check_default='no'
 error_check_extents=$error_check_default
 error_check_typecheck=$error_check_default
 error_check_bufpos=$error_check_default
   i370-ibm-aix*) machine=ibm370aix opsys=usg5-3 ;;
   rs6000-ibm-aix3.1*  | powerpc-ibm-aix3.1*  ) machine=ibmrs6000 opsys=aix3-1	;;
   rs6000-ibm-aix3.2.5 | powerpc-ibm-aix3.2.5 ) machine=ibmrs6000 opsys=aix3-2-5	;;
+  rs6000-ibm-aix4.2*  | powerpc-ibm-aix4.2*  ) machine=ibmrs6000 opsys=aix4-2	;;
   rs6000-ibm-aix4.1*  | powerpc-ibm-aix4.1*  ) machine=ibmrs6000 opsys=aix4-1	;;
   rs6000-ibm-aix4*    | powerpc-ibm-aix4*    ) machine=ibmrs6000 opsys=aix4	;;
   rs6000-ibm-aix*     | powerpc-ibm-aix*     ) machine=ibmrs6000 opsys=aix3-2	;;
       # begin expansion of ac_have_library
       ac_save_LIBS="${LIBS}"
       LIBS="${LIBS} -lXmu -lXt -lXext -lX11 -lm"
+      if test ${machine} = sparc -a ${opsys} = linux; then
+	LIBS="${LIBS} -lICE -lSM"
+      fi
       ac_have_lib=""
       cat > conftest.${ac_ext} <<EOF
 int main() { return 0; }

File configure.in

 native_sound_lib=''
 # make normal error-checking be the default in alpha and beta versions, so
 # that bugs get noticed.  Change this for released versions.
-error_check_default='yes'
+error_check_default='no'
 error_check_extents=$error_check_default
 error_check_typecheck=$error_check_default
 error_check_bufpos=$error_check_default
   i370-ibm-aix*) machine=ibm370aix opsys=usg5-3 ;;
   rs6000-ibm-aix3.1*  | powerpc-ibm-aix3.1*  ) machine=ibmrs6000 opsys=aix3-1	;;
   rs6000-ibm-aix3.2.5 | powerpc-ibm-aix3.2.5 ) machine=ibmrs6000 opsys=aix3-2-5	;;
+  rs6000-ibm-aix4.2*  | powerpc-ibm-aix4.2*  ) machine=ibmrs6000 opsys=aix4-2	;;
   rs6000-ibm-aix4.1*  | powerpc-ibm-aix4.1*  ) machine=ibmrs6000 opsys=aix4-1	;;
   rs6000-ibm-aix4*    | powerpc-ibm-aix4*    ) machine=ibmrs6000 opsys=aix4	;;
   rs6000-ibm-aix*     | powerpc-ibm-aix*     ) machine=ibmrs6000 opsys=aix3-2	;;
       # begin expansion of ac_have_library
       ac_save_LIBS="${LIBS}"
       LIBS="${LIBS} -lXmu -lXt -lXext -lX11 -lm"
+      if test ${machine} = sparc -a ${opsys} = linux; then
+	LIBS="${LIBS} -lICE -lSM"
+      fi
       ac_have_lib=""
       cat > conftest.${ac_ext} <<EOF
 int main() { return 0; }
        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
+       right now, but in the long run, I think everyone loses. 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
+       has done is not spent to do new features. I've personnally
        experienced a project split in the past, and in the end everyone
        lost. 
        
        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. 
+       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
        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
        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
+       objects to calling 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
        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
+   Ben Wing
 
 
 ** Why Another Version of Emacs?  (The Lucid, Inc. Point of View)
 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
+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
 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)
+** Why Another Version of Emacs?  (The Sun Microsystems, Inc. Point of View)
 ============================================================
 
 Emacs 18 has been around for a long, long time.  Version 19 was supposed to
 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.
+came from the University of Illinois ("UofI") and was based on v18.
+
+Around 1990, the Developer Products group within Sun Microsystems
+Inc., decided that it wanted an integrated editor.  (This group is now
+known as DevPro.  It used to be known as SunPro - the name was changed
+in mid-1994.)  They contracted with the University of Illinois to
+provide a number of basic enhancements to the functionality in Epoch.
+UofI initially was planning to deliver this on top of Epoch code.
+
+In the meantime, (actually some time before they talked with UofI)
+Lucid had decided that it also wanted to provide an integrated
+environment with an integrated editor.  Lucid decided that the Version
+19 base was a better one than Version 18 and thus decided not to use
+Epoch but instead to work with Richard Stallman, the head of the Free
+Software Foundation and principal author of Emacs, on getting v19 out.
+At some point Stallman and Lucid parted ways.  Lucid kept working and
+got a v19 out that they called Lucid Emacs 19.
+
+After Lucid's v19 came out it became clear to us (the UofI and Sun)
+that the right thing to do was to push for an integration of both
+Lucid Emacs and Epoch, and to get the deliverables that Sun was asking
+from the University of Illinois on top of this integrated platform.
+Until 1994, Sun and Lucid both actively supported XEmacs as part of
+their product suite and invested a comparable amount of effort into
+it.  Substantial portions of the current code have originated under
+the support of Sun, either directly within Sun, or at UofI but paid
+for by Sun.  This code was kept away from Lucid for a while, but later
+was made available to them.  Initially Lucid didn't know that Sun was
+supporting UofI, but later Sun was open about it.
+
+Around 1992 DevPro-originated code started showing up in Lucid Emacs,
+starting with the infusion of the Epoch redisplay code.  The separate
+code bases at Lucid, Sun, and the University of Illinois were merged,
+allowing a single XEmacs to evolve from that point on.
+
+Sun originally called the integrated product "ERA", for "Emacs
+Rewritten Again".  Sun and Lucid eventually 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 tentatively agreed-upon name was "XEmacs", and this
+has been the name of the program since version 19.11.)
+
+As of 1997, Sun is shipping XEmacs as part of its Developer Products
+integrated programming environment "Sun WorkShop".  Sun is
+continuing to support XEmacs development, with focus on
+internationalization and quality improvement.
 
 
 * What's Different?
 
 ** Differences between XEmacs and FSF GNU Emacs 19
 ==================================================
+In XEmacs 20, characters are first-class objects.  Characters can be
+converted to integers, but are not integers.  FSF 19, XEmacs 19, and Mule
+represent them as integers.
 
 In XEmacs, events are first-class objects.  FSF 19 represents them as
 integers, which obscures the differences between a key gesture and the
 
  key_press_event	
     event_channel	A token representing which keyboard generated it.
-			For this kind of event, this is a frame object.
-			(This is for eventual support of multiple displays.)
+			For this kind of event, this is a console object.
     timestamp		When it happened
-    key			What keysym this is; an integer or a symbol.
-			If this is an integer, it will be in the printing
-			ASCII range: >32 and <127.
+    key			What keysym this is; a character or a symbol.
+			If it is a character, it will be a printing
+			ASCII character.
     modifiers		Bucky-bits on that key: control, meta, etc.
 			For most keys, Shift is not a bit; that is implicit
 			in the keyboard layout.
 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.
+We are working on improving the Mule support in future releases:
+
+-- Other input methods, such as wnn, will be supported.
+
+-- More user-level documentation on using Mule.
+
+** Major Differences Between 19.14 and 20.0
+
+XEmacs 20.0 is the first public release to have support for MULE
+(Multi-Lingual Emacs).  The --with-mule configuration flag must be
+used to enable Mule support.
+
+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.
+
+-- Multiple character sets can be displayed in a buffer.  The file
+   mule-doc/demo in the distribution contains a greeting in many
+   different languages.
+
+-- Although the Mule work is for all languages, particular effort has
+   been invested in Japanese, with particular focus on Japanese users
+   of Sun WorkShop.  Many menubar labels have been translated into
+   Japanese.  Martin usually runs XEmacs in a Japanese language
+   environment.  Some of the other contributors are Japanese, most
+   importantly Morioka Tomohiko, author of the TM package, providing
+   MIME support for Mail and News.
+
+-- Input for complex Asian languages is supported via XIM, a mechanism
+   introduced in X11R5 to allow applications to get localized input
+   without knowledge of the language.  The way XIM works is that when
+   the locale has a complex character set, such as Japanese, and extra
+   minibuffer-like status window appears attached to various
+   application windows, and indicates the status of the input method.
+   Composed input in XEmacs should work the same as with other
+   applications.  If Motif and Mule support is configured into XEmacs,
+   then XIM support is automatically configured in as well.
+
+-- 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.
+
+-- Japanese input can also be input using the `canna' input method.
+   This support was contributed by Morioka Tomohiko.  Setting up canna
+   usually requires more user effort (and better knowledge of Japanese!)
+   than XIM, but provides a better-integrated input method.
+
+-- A mini-tutorial on using Mule:
+
+   -- Every time data passes between XEmacs and the rest of the
+      environment, via file or process input or output, XEmacs must
+      convert between its internal multi-character representation and
+      the external representation (`coding system').  Many
+      difficulties with Mule are related to controlling these coding
+      system conversions.
+
+      -- file-coding-system, file-coding-system-for-read,
+         overriding-file-coding-system, and file-coding-system-alist
+         are used to determine the coding systems used on file input
+         and output.
+
+      -- For each process, (set-process-input-coding-system) and
+         (set-process-output-coding-system) determine the coding
+         system used for I/O from the process.
+
+      -- Many other things are encoded using pathname-coding-system:
+         -- file and directory names
+         -- window manager properties: window title, icon name
+         -- process names and process arguments
+         -- XIM input.
+
+      -- In many cases, you will want to have the same values for all
+         the above variables in many cases.  For example, in a
+         Japanese environment, you will want to use the 'euc-japan
+         coding system consistently, except when running certain
+         processes that do byte-oriented, rather than
+         character-oriented I/O, such as gzip, or when processing Mail
+         or News, where ISO2022-based coding systems are the norm,
+         since they support multiple character sets.
+
+   -- To add support for a new language or character set, start by
+      trying to copy code in japanese-hooks.el.
+
+   -- The traditional pre-Mule data conversion is equivalent to the
+      'binary coding system under Mule.  In this case all characters
+      are treated as iso8859-1 (i.e. characters for English + Western
+      European languages).
+
+   -- many fileio-related commands such as find-file and write-file
+      take an extra argument, coding-system, which specifies the
+      encoding to be used with the file on disk.  For example, here is
+      a command that converts from the Japanese EUC to ISO2022 format:
+
+         xemacs -batch -eval '(progn (find-file
+         "locale-start.el.euc" (quote euc-japan)) (write-file
+         "locale-start.el" nil (quote iso-2022-8-unix)))'
+
+      Interactively, you can be prompted for a coding system by
+      providing a prefix argument to the fileio command.  In
+      particular, C-u C-x C-f is a useful sequence to edit a file
+      using a particular coding system.
+
+   -- In an Asian locale (i.e. if $LANG is set to ja, ko, or zh),
+      XEmacs automatically sets up a language environment assuming
+      that the operating system encodes information in the national
+      version of EUC, which supports English and the national
+      language, but typically no other character sets.
+
+-- Command line processing should work much better now - no more order
+   dependencies.
+
+-- Many many package upgraded (thanks go to countless maintainers):
+
+  -- ediff 2.64 (Michael Kifer)
+  -- w3 3.0.51  (Bill Perry)
+  -- ilisp 5.8
+  -- VM 5.97     (Kyle Jones)
+  -- etags 11.78 (Francesco Potorti`)
+  -- ksh-mode.el 2.9
+  -- vhdl-mode.el 2.73 (Rod Whitby)
+  -- id-select.el (Bob Weiner)
+  -- EDT/TPU emulation modes should work now for the first time.
+  -- viper 2.92 (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.15
+  -- reporter 3.3
+  -- hm--html-menus 5.0 (Heiko Muenkel)
+  -- cc-mode 4.322 (Barry Warsaw)
+  -- elp 2.37 (Barry Warsaw)
+
+
+-- 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
+  -- python-mode.el 2.83 (Barry Warsaw)
+  -- vrml-mode.el (Ben Wing)
+  -- enriched.el, face-menu.el (Michael Sperber)
+
+-- 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.
+
+-- 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
 
 
 ** Major Differences Between 19.13 and 19.14

File etc/mrb.xpm

-/* XPM */
-/*****************************************************************************/
-/**       This pixmap is kindly offered by Ion Cionca - 1992 -              **/
-/**       Swiss Federal Institute of Technology                             **/
-/**       Central Computing Service                                         **/
-/*****************************************************************************/
-static char * image_name [] = {
-/**/
-"64 38 8 1",
-/**/
-" 	s mask	c black",
-".	c gray70",
-"X	c gray85",
-"o	c gray50",
-"O	c #4000bf",
-"+	c darkolivegreen",
-"@	c white",
-"#	c black",
-"                                                                ",
-"               OOO                                              ",
-"              OOOOO       ...........................           ",
-"              OO OOO     .XXXXXXXXXXXXXXXXXXXXXXXXXXX.          ",
-"            O OOO OOO   .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo        ",
-"           OOO OOO OOO  .XX+++++++++++++++++++++++XXXXoo        ",
-"          O OOO OOO OOO .XX++++++++++++++++++++++++XXXooo       ",
-"         OOO OOO OOO OOO.XX++@@+@++@+@@@@++@+++++++XXXooo       ",
-"        O OOO OOO OOO O OXX++++++++++++++++++++++++XXXoooo      ",
-"       OOO OOO OOO OOO OOOX++@@@@+@@+@@@+++++++++++XXXoooo      ",
-"      OOO O OOO OOO O OOOXO++++++++++++++++++++++++XXXooooo     ",
-"     OOO OOO OOO OO  OOO.OOO+@@@@@@@@@@+@@@@@++++++XXXooooo     ",
-"    OOO OOO   OOOOO OOO OOO++++++++++++++++++++++++XXXooooo     ",
-"   OOO OOO OOO OOO OOO OOOXOOO@@+@@@@+@@++@@@++++++XXXooooo     ",
-"  OOO OOO OOOOO   OOO OOOXOOOOO++++++++++++++++++++XXXooooo     ",
-"  OO OOO OOO OO   OO OOO.OOO+OO++++++++++++++++++++XXXooooo     ",
-"  OOOOO OOO OOO   OOOOO OOO+OOO++++++++++++++++++++XXXooooo     ",
-"   OOO OOO OOO OOO OOO OOOXOOO@@@+@+@@@+@++++++++++XXXooooo     ",
-"      OOO OOO OOOOO   OOOXOOO++++++++++++++++++++++XXXooooo     ",
-"     OOO OOO  OO OOO OOO.OOO+@+@@@@++++++++++++++++XXXooooo     ",
-"      O OOO O OOO OOO O OOOX++++++++++++++++++++++XXXXoooo      ",
-"       OOO OOO OOO OOO OOOXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo       ",
-"        O O OOO OOO OOO O.XXXXXXXXXXXXXXXXXXXXXXXXXXXooo        ",
-"         OOO OOO OOO OOO    ooooooooooooooooooooooooo...oo      ",
-"          OOO OOO OOO O      ..........................ooo      ",
-"           OOO OOO OOO      oooooooooooooooooooooooooooooo      ",
-"            OOO OOO O     oXXXXXXXXXXXXXXXXXXXXXXXXXXXoooo.. .. ",
-"             OOO OO       oXXXXXXXXXXXXXXXXXX#######XXoooo  .  .",
-"              OOOOO     oooooooooooooooooooooooooooXXXooo     . ",
-"               OOO     oXXXXXXXXXXXXXXXXXXXXXXXXXXooooo      .  ",
-"                      oXXXXXXXXXXXXXXXXXXXXXXXXXXoo      oooooo ",
-"                      oXX@@@@@@@@@@@@@@@@@@@XXXXXoo   ooooo...o ",
-"                     oXXXXXXXXXXXXXXXXXXXXXXXXXXoo   ooXXXoo..o ",
-"                    oXX@@@@@@@@@@@@@@@@@@@@XXXXoo    oXXXXX..o  ",
-"                   oXXXXXXXXXXXXXXXXXXXXXXXXXXoo     o.....oo   ",
-"                   oooooooooooooooooooooooooooo      ooooooo    ",
-"                                                                ",
-"                                                                "};

File etc/mrbm.xpm

Removed
Old image

File etc/w3/stylesheet

 /******************************************************************************
 **       File: default.css
 **    Purpose: Default Stylesheet for Emacs-W3
-**       Info: Copyright (c) 1995 William M. Perry <wmperry@spry.com>
+**       Info: Copyright (c) 1995 - 1996 William M. Perry <wmperry@spry.com>
+**             Copyright (c) 1997 Free Software Foundation, Inc.
 **    Created: William M. Perry <wmperry@spry.com>, Aug-31-1995
 ** Maintainer: William M. Perry <wmperry@spry.com>
 **
 ******************************************************************************
 **
 ** To specify device-dependent styles, you must mark a section with
-** :devicetype:
-** If you are not using 'devicetype', then anything up to the next
-** :xxx: media descriptor is ignored.
+** @media devicetype { ... }
+** If you are not using 'devicetype', then anything within the { ... }
+** is ignored.
+**
+** These sections are currently defined by
+** http://www.w3.org/pub/WWW/Style/Group/WD-PRINT-961220
+** 
+**    print  - output for paged opaque material, and for documents viewed
+**             on screen in print preview mode
+**    screen - a continuous presentation of computer screens
+** projector - paged presentation for projected presentations
+**   braille - for braille tactile feedback devices
+**    speech - aural presentation
+**       all - the default value, applies to all output devices
 **
 ** There are a few special Emacs-W3 sections
 **
 **  emacs - only include this chunk if you are using Emacs 19
-** speech - only include this chunk if you are using Emacspeak for audio
 ** xemacs - only include this chunk if you are using XEmacs
-** normal - always include this chunk (useful for switching out of another 
-**          device-type block
 ******************************************************************************/
 
 /*

File lisp/ChangeLog

+Fri Jan 31 21:38:47 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+	* psgml/psgml-html.el (html-auto-sgml-entity-conversion): Allow
+	user control over automatic sgml entity to ISO-8859-1 conversion.
+
+Fri Jan 31 09:50:51 1997  Hrvoje Niksic <hniksic@srce.hr>
+
+	* x11/x-toolbar.el (toolbar-mail-commands-alist): Updated with a
+	lot of new mailer possiblities.
+	
+Fri Jan 31 09:28:49 1997  Martin Buchholz  <mrb@eng.sun.com>
+
+	* x11/x-font-menu.el (reset-device-font-menus): Correct guard on
+	charset-registry call.
+
+Fri Jan 31 00:21:07 1997  Darrell Kindred  <dkindred@cmu.edu>
+
+	* packages/font-lock.el (font-lock-mode): Don't remove the
+	`font-lock-pre-idle-hook' from `pre-idle-hook'.
+
+Thu Jan 30 22:43:43 1997  David Moore  <dmoore@UCSD.EDU>
+
+	* packages/compile.el:  Speed up regexps.
+	(compilation-parse-errors): replace re-search-forward with
+	something faster.
+	
+Thu Jan 30 20:33:56 1997  Hvoje Niksic  <hniksic@srce.hr>
+
+	* x11/x-toolbar.el
+ 	(toolbar-open,toolbar-dired,toolbar-save,toolbar-print,toolbar-cut,toolbar-copy,toolbar-paste,toolbar-undo,toolbar-replace):
+ 	New functions.
+	(toolbar-news): Allow running without separate frame.
+	(toolbar-mail-commands-alist): New variable.
+	(toolbar-mail-reader): Ditto.
+	(toolbar-mail): Use them.
+	
+	* x11/x-menubar.el: Shorten help menu item names.
+
+Thu Jan 30 17:22:15 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
+
+	* iso/iso-acc.el: Accept accents in isearch.
+
+Wed Jan 29 22:25:38 1997  Tomasz J. Cholewo <tjchol01@mecca.spd.louisville.edu>
+
+	* packages/ps-print.el: Make postscript files generated by
+	ps-print conformant to Adobe DSC specification.
+
 Mon Jan 27 21:45:17 1997  Tomasz J. Cholewo  <tjchol01@mecca.spd.louisville.edu>
 
 	* dired/ange-ftp.el (ange-ftp-write-region): Changes for jka-compr.

File lisp/gnus/gnus-xmas.el

   (fset 'gnus-put-text-property 'gnus-xmas-put-text-property)
       
   (require 'text-props)
-  (if (< emacs-minor-version 14)
+  (if (and (<= emacs-major-version 19)
+	   (< emacs-minor-version 14))
       (fset 'gnus-set-text-properties 'gnus-xmas-set-text-properties))
 
   (or (boundp 'standard-display-table) (setq standard-display-table nil))

File lisp/iso/iso-acc.el

 ;; Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
 
 ;; Author: Johan Vromans <jv@mh.nl>
-;; Version: 1.7 (modified)
+;; Version: 1.8
 ;; Maintainer: FSF
 ;; Keywords: i18n
-;; Adapted for XEmacs 19.14 by Alexandre Oliva <oliva@dcc.unicamp.br>
-;; Last update: Oct 10, 1996
+;; Adapted to XEmacs 19.14 by Alexandre Oliva <oliva@dcc.unicamp.br>
+;; Last update: Jan 25, 1997
 
 ;; This file is part of GNU Emacs.
 
 
 ;; needed to work on GNU Emacs (had to use this function on XEmacs)
 (if (fboundp 'character-to-event) ()
-  (defun character-to-event (ch &optional event console meta) ch))
+  (defun character-to-event (ch &optional event console meta)
+    (if (listp ch) (car ch) ch)))
 
 ;; needed for compatibility with XEmacs 19.14 and GNU Emacs 19.30
 (if (fboundp 'this-single-command-keys) ()
 	(this-command-keys))
     (defun this-single-command-keys () (this-command-keys))))
 
-(if (string-match "Lucid" (version))
-    (progn
-      (global-set-key [quoted-insert-for-iso-acc] 'quoted-insert)
-      (defun iso-generate-char (char)
-	"inserts the octal representation of char into unread-command-events,\nand then returns the pseudo-key quoted-insert-for-iso-acc (which should be mapped to quoted-insert).\n\nCan be used in keymaps to generate characters from 128 to 255."
-	(setq unread-command-events
-	      (append
-	       (mapcar 'character-to-event (list
-					    (+ 48 (/ char 64))
-					    (+ 48 (% (/ char 8) 8))
-					    (+ 48 (% char 8))))
-	       unread-command-events))
-	[quoted-insert-for-iso-acc])
-      )
-  (defun iso-generate-char (char)
-    "Just returns a vector with the given character.\n\nNot necessary in the GNU Emacs implementation"
-    (vector char))
-  )
-
-
 (defvar iso-languages
   '(("portuguese"
      (?' (?A . ?\301) (?E . ?\311) (?I . ?\315) (?O . ?\323) (?U . ?\332)
 			  (delete-region (1- (point)) (point)))))
 	 (entry (cdr (assq second-char list))))
     (if entry
-	;; Found it: return the mapped char
-	(iso-generate-char entry)
+	;; Found it: insert the accented character and
+	;; return a do-nothing key
+        (vector (character-to-event (list entry)))
       ;; Otherwise, advance and schedule the second key for execution.
-      (setq unread-command-events (list (character-to-event second-char)))
-      (vector first-char))))
+      (setq unread-command-events (append
+				   (list
+				    (character-to-event (list second-char)))
+				   unread-command-events))
+      (vector (character-to-event (list first-char))))))
 
 ;; It is a matter of taste if you want the minor mode indicated
 ;; in the mode line...
     ;; Enable electric accents.
     (setq iso-accents-mode t)))
 
+(defvar iso-accents-mode-map nil)
+
 (defun iso-accents-customize (language)
   "Customize the ISO accents machinery for a particular language.
 It selects the customization based on the specifications in the
 `iso-languages' variable."
   (interactive (list (completing-read "Language: " iso-languages nil t)))
-  (let ((table (assoc language iso-languages)) tail)
+  (let ((table (assoc language iso-languages)) tail acc)
     (if (not table)
 	(error "Unknown language '%s'" language)
       (setq iso-language language
 	  (substitute-key-definition
 	   'iso-accents-accent-key nil key-translation-map)
 	(setq key-translation-map (make-sparse-keymap)))
+      (setq iso-accents-mode-map (make-sparse-keymap))
+      (let ((pair (assoc 'iso-accents-mode minor-mode-map-alist)))
+	(if pair
+	    (setcdr pair iso-accents-mode-map)
+	  (let ((l minor-mode-map-alist))
+	    (while (cdr l)
+	      (setq l (cdr l)))
+	    (setcdr l (list (cons 'iso-accents-mode iso-accents-mode-map))))))
       ;; Set up translations for all the characters that are used as
       ;; accent prefixes in this language.
       (setq tail iso-accents-list)
       (while tail
-	(define-key key-translation-map (vector (car (car tail)))
+	(define-key key-translation-map
+	  (vector (character-to-event (list (car (car tail)))))
 	  'iso-accents-accent-key)
+	(setq acc (cdr (car tail)))
+	(while acc
+	  (define-key iso-accents-mode-map
+	    (vector (character-to-event (list (cdr (car acc)))))
+	    'iso-accents-self-insert-unless-redefined)
+	  (setq acc (cdr acc)))
 	(setq tail (cdr tail))))))
 
+(defun iso-accents-self-insert-unless-redefined (prompt)
+  "Temporarily disables iso-accents-mode, and checks for additional bindings of the keys that produced its invocation.  If no such binding is found, 'self-insert-command is returned"
+  (interactive "p")
+  (let* ((iso-accents-mode nil)
+	 (bind (key-binding (this-command-keys)))
+	 (repeat t) result)
+    (while repeat
+      (setq result
+	    (cond ((or (null bind)
+		       (eq bind 'self-insert-command))
+		   (setq repeat nil)
+		   (self-insert-command prompt))
+		  ((commandp bind)
+		   (setq repeat nil)
+		   (call-interactively bind))
+		  ((or (stringp bind)
+		       (keymapp bind))
+		   (setq repeat nil)
+		   bind)
+		  ((and (consp bind)
+			(stringp (car bind)))
+		   (setq bind (cdr bind)))
+		  ((and (consp bind)
+			(keymapp (car bind)))
+		   (setq bind (lookup-key (car bind) (cdr bind))))
+		  (t (error "Invalid key binding")))))
+    result))
+
 (defun iso-accentuate (start end)
   "Convert two-character sequences in region into accented characters.
 Noninteractively, this operates on text from START to END.

File lisp/mule/chinese-hooks.el

    charset-g1 chinese-gb2312
    charset-g2 sisheng
    charset-g3 t
-   mnemonic "EUC/China"
+   mnemonic "EUC/Zh"
    ))
 
 (make-coding-system
     (require 'chinese)
     (set-coding-category-system 'iso-8-2 'euc-china)
     (set-coding-priority-list '(iso-8-2 big5 iso-8-designate))
+    (set-pathname-coding-system 'euc-china)
     (set-default-file-coding-system 'euc-china) ; GB encoding
     (setq terminal-coding-system    'euc-china)
     (setq keyboard-coding-system    'euc-china)
+    (add-hook 'comint-exec-hook
+              (lambda ()
+                (let ((proc (get-buffer-process (current-buffer))))
+                  (set-process-input-coding-system  proc 'euc-china)
+                  (set-process-output-coding-system proc 'euc-china))))
+    (set-file-coding-system-for-read 'autodetect)
+    (set-default-file-coding-system 'euc-china)
+    (setq keyboard-coding-system     'euc-china)
+    (setq terminal-coding-system     'euc-china)
+    (set-charset-registry 'ascii "gb1988")))
 ;;    (when (featurep 'egg)
 ;;      (setq-default its:*current-map* (its:get-mode-map "PinYin")))
 ;;    (setq-default quail-current-package (assoc "py" quail-package-alist))))
-    ))
+;;    ))
 
 (set-coding-category-system 'big5 'big5)

File lisp/mule/korean-hooks.el

 ;	    (cons (its:get-mode-map "hangul") its:*standard-modes*))
 ;      (setq-default its:*current-map* (its:get-mode-map "hangul"))))
 
-(add-hook 'quail-package-alist '("hangul"    "quail/hangul"))
-(add-hook 'quail-package-alist '("hangul3"   "quail/hangul3"))
-(add-hook 'quail-package-alist '("hanja-jis" "quail/hanja-jis"))
-(add-hook 'quail-package-alist '("hanja-ksc" "quail/hanja-ksc"))
+;(add-hook 'quail-package-alist '("hangul"    "quail/hangul"))
+;(add-hook 'quail-package-alist '("hangul3"   "quail/hangul3"))
+;(add-hook 'quail-package-alist '("hanja-jis" "quail/hanja-jis"))
+;(add-hook 'quail-package-alist '("hanja-ksc" "quail/hanja-ksc"))
 
 (make-coding-system
  'euc-korea 'iso2022
  "Coding-system of Korean EUC (Extended Unix Code)."
  '(charset-g0 ascii
    charset-g1 korean-ksc5601
-   mnemonic "EUC/Kor"
+   mnemonic "EUC/Ko"
    eol-type lf
    ))
 
    force-g1-on-output t
    seven t
    lock-shift t
-   mnemonic "Mail/Kor"
+   mnemonic "Mail/Ko"
    eol-type lf
    ))
 
    short t
    seven t
    lock-shift t
-   mnemonic "ISO7/Kor"
+   mnemonic "ISO7/Ko"
    ))
 
 (define-language-environment 'korean
   "Korean"
   (lambda ()
     (set-coding-category-system 'iso-8-2 'euc-korea)
-    (set-coding-priority-list '(iso-8-2 iso-8-designate))
-    (set-default-file-coding-system 'iso-2022-kr)
-    (setq-default quail-current-package
-                  (assoc "hangul" quail-package-alist))))
+    (set-coding-priority-list '(iso-8-2 iso-7 iso-8-designate))
+    (set-pathname-coding-system 'euc-korea)
+    (add-hook 'comint-exec-hook
+              (lambda ()
+                (let ((proc (get-buffer-process (current-buffer))))
+                  (set-process-input-coding-system  proc 'euc-korea)
+                  (set-process-output-coding-system proc 'euc-korea))))
+    (set-file-coding-system-for-read 'autodetect)
+    (set-default-file-coding-system 'euc-korea)
+    (setq keyboard-coding-system     'euc-korea)
+    (setq terminal-coding-system     'euc-korea)
+    (set-charset-registry 'ascii "ksc5636")))
+;    (setq-default quail-current-package
+;                  (assoc "hangul" quail-package-alist))))

File lisp/packages/compile.el

     ;; We'll insist that the number be followed by a colon or closing
     ;; paren, because otherwise this matches just about anything
     ;; containing a number with spaces around it.
-    ("\n\
+    ("\
 \\([a-zA-Z]?:?[^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\)\\([) \t]\\|\
 :\\([^0-9\n]\\|\\([0-9]+:\\)\\)\\)" 1 2 5)
 
     ;; Microsoft C/C++:
     ;;  keyboard.c(537) : warning C4005: 'min' : macro redefinition
     ;;  d:\tmp\test.c(23) : error C2143: syntax error : missing ';' before 'if'
-    ("\n\\(\\([a-zA-Z]:\\)?[^:( \t\n-]+\\)[:(][ \t]*\\([0-9]+\\)[:) \t]" 1 3)
+    ("\\(\\([a-zA-Z]:\\)?[^:( \t\n-]+\\)[:(][ \t]*\\([0-9]+\\)[:) \t]" 1 3)
 
     ;; Borland C++:
     ;;  Error ping.c 15: Unable to open include file 'sys/types.h'
     ;;  Warning ping.c 68: Call to function 'func' with no prototype
-    ("\n\\(Error\\|Warning\\) \\([a-zA-Z]?:?[^:( \t\n]+\\)\
+    ("\\(Error\\|Warning\\) \\([a-zA-Z]?:?[^:( \t\n]+\\)\
  \\([0-9]+\\)\\([) \t]\\|:[^0-9\n]\\)" 2 3)
 
     ;; 4.3BSD lint pass 2
     ;; 	strcmp: variable # of args. llib-lc(359)  ::  /usr/src/foo/foo.c(8)
-    ("[ \t:]\\([a-zA-Z]?:?[^:( \t\n]+\\)[:(](+[ \t]*\\([0-9]+\\))[:) \t]*$"
+    ("[^\n]*[ \t:]\\([a-zA-Z]?:?[^:( \t\n]+\\)[:(](+[ \t]*\\([0-9]+\\))[:) \t]*$"
      1 2)
 
     ;; 4.3BSD lint pass 3
     ;; This used to be
     ;; ("[ \t(]+\\([a-zA-Z]?:?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]+" 1 2)
     ;; which is regexp Impressionism - it matches almost anything!
-    ("([ \t]*\\([a-zA-Z]?:?[^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\))" 1 2)
+    ("[^\n]*([ \t]*\\([a-zA-Z]?:?[^:( \t\n]+\\)[:(][ \t]*\\([0-9]+\\))" 1 2)
 
     ;; MIPS lint pass<n>; looks good for SunPro lint also
     ;;  TrimMask (255) in solomon.c may be indistinguishable from TrimMasks (93) in solomon.c due to truncation
-    ("\n[^ \n]+ (\\([0-9]+\\)) in \\([^ \n]+\\)" 2 1)
+    ("[^ \n]+ (\\([0-9]+\\)) in \\([^ \n]+\\)" 2 1)
     ;;  name defined but never used: LinInt in cmap_calc.c(199)
-    ("in \\([^(\n]+\\)(\\([0-9]+\\))$" 1 2)
+    ("[^\n]*in \\([^(\n]+\\)(\\([0-9]+\\))$" 1 2)
 
     ;; Ultrix 3.0 f77:
     ;;  fort: Severe: addstf.f, line 82: Missing operator or delimiter symbol
     ;; Some SGI cc version:
     ;;  cfe: Warning 835: foo.c, line 2: something
-    ("\n\\(cfe\\|fort\\): [^:\n]*: \\([^ \n]*\\), line \\([0-9]+\\):" 2 3)
+    ("\\(cfe\\|fort\\): [^:\n]*: \\([^ \n]*\\), line \\([0-9]+\\):" 2 3)
     ;;  Error on line 3 of t.f: Execution error unclassifiable statement    
     ;; Unknown who does this:
     ;;  Line 45 of "foo.c": bloofle undefined
     ;; Absoft FORTRAN 77 Compiler 3.1.3
     ;;  error on line 19 of fplot.f: spelling error?
     ;;  warning on line 17 of fplot.f: data type is undefined for variable d
-    ("\\(\n\\|on \\)[Ll]ine[ \t]+\\([0-9]+\\)[ \t]+\
+    ("\\(\\|[^\n]* on \\)[Ll]ine[ \t]+\\([0-9]+\\)[ \t]+\
 of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2)
 
     ;; Apollo cc, 4.3BSD fc:
     ;;  "foo.adb", line 2(11): warning: file name does not match ...
     ;; IBM AIX xlc compiler:
     ;;  "src/swapping.c", line 30.34: 1506-342 (W) "/*" detected in comment.
-    ("\"\\([^,\" \n\t]+\\)\", lines? \
+    ("[^\n]*\"\\([^,\" \n\t]+\\)\", lines? \
 \\([0-9]+\\)\\([\(.]\\([0-9]+\\)\)?\\)?[:., (-]" 1 2 4)
 
     ;; MIPS RISC CC - the one distributed with Ultrix:
     ;;	ccom: Error: foo.c, line 2: syntax error
     ;; DEC AXP OSF/1 cc
     ;;  /usr/lib/cmplrs/cc/cfe: Error: foo.c: 1: blah blah 
-    ("rror: \\([^,\" \n\t]+\\)[,:] \\(line \\)?\\([0-9]+\\):" 1 3)
+    ("[^\n]*rror: \\([^,\" \n\t]+\\)[,:] \\(line \\)?\\([0-9]+\\):" 1 3)
 
     ;; IBM AIX PS/2 C version 1.1:
     ;;	****** Error number 140 in line 8 of file errors.c ******
-    ("in line \\([0-9]+\\) of file \\([^ \n]+[^. \n]\\)\\.? " 2 1)
+    ("[^\n]*in line \\([0-9]+\\) of file \\([^ \n]+[^. \n]\\)\\.? " 2 1)
     ;; IBM AIX lint is too painful to do right this way.  File name
     ;; prefixes entire sections rather than being on each line.
 
     ;; Lucid Compiler, lcc 3.x
     ;; E, file.cc(35,52) Illegal operation on pointers
-    ("\n[EW], \\([^(\n]*\\)(\\([0-9]+\\),[ \t]*\\([0-9]+\\)" 1 2 3)
+    ("[EW], \\([^(\n]*\\)(\\([0-9]+\\),[ \t]*\\([0-9]+\\)" 1 2 3)
 
     ;; GNU messages with program name and optional column number.
-    ("\n[a-zA-Z]?:?[^0-9 \n\t:]+:[ \t]*\\([^ \n\t:]+\\):\
+    ("[a-zA-Z]?:?[^0-9 \n\t:]+:[ \t]*\\([^ \n\t:]+\\):\
 \\([0-9]+\\):\\(\\([0-9]+\\)[: \t]\\)?" 1 2 4)
 
+    ;; GNU messages with program name and optional column number
+    ;; and a severity letter after that.  nsgmls makes them.
+    ("[^0-9 \n\t:]+:[ \t]*\\([^ \n\t:]+\\):\
+\\([0-9]+\\):\\(\\([0-9]+\\):\\)?[A-Za-z]:" 1 2 4)
+
     ;; jwz:
     ;; IRIX 5.2
     ;; cfe: Warning 712: foo.c, line 2: illegal combination of pointer and ...
-    (" \\([^ \n,\"]+\\), line \\([0-9]+\\):" 1 2)
+    ("[^\n]* \\([^ \n,\"]+\\), line \\([0-9]+\\):" 1 2)
     ;; IRIX 5.2
     ;; cfe: Warning 600: xfe.c: 170: Not in a conditional directive while ...
-    (": \\([^ \n,\"]+\\): \\([0-9]+\\):" 1 2)
+    ("[^\n]*: \\([^ \n,\"]+\\): \\([0-9]+\\):" 1 2)
 
     ;; Cray C compiler error messages
-    ("\n\\(cc\\| cft\\)-[0-9]+ c\\(c\\|f77\\): ERROR \\([^,\n]+, \\)* File = \\([^,\n]+\\), Line = \\([0-9]+\\)" 4 5)
+    ("\\(cc\\| cft\\)-[0-9]+ c\\(c\\|f77\\): ERROR \\([^,\n]+, \\)* File = \\([^,\n]+\\), Line = \\([0-9]+\\)" 4 5)
 
     ;; IBM C/C++ Tools 2.01:
     ;;  foo.c(2:0) : informational EDC0804: Function foo is not referenced.
     ;;  foo.c(3:8) : warning EDC0833: Implicit return statement encountered.
     ;;  foo.c(5:5) : error EDC0350: Syntax error.
-    ("\n\\([^( \n\t]+\\)(\\([0-9]+\\):\\([0-9]+\\)) : " 1 2 3)
+    ("\\([^( \n\t]+\\)(\\([0-9]+\\):\\([0-9]+\\)) : " 1 2 3)
 
     ;; Sun ada (VADS, Solaris):
     ;;  /home3/xdhar/rcds_rc/main.a, line 361, char 6:syntax error: "," inserted
-    ("\n\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3)
+    ("\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3)
     )
-  "Alist that specifies how to match errors in compiler output.
+ "Alist that specifies how to match errors in compiler output.
 Each elt has the form (REGEXP FILE-IDX LINE-IDX [COLUMN-IDX FILE-FORMAT...])
-If REGEXP matches, the FILE-IDX'th subexpression gives the file name, and
-the LINE-IDX'th subexpression gives the line number.  If COLUMN-IDX is
-given, the COLUMN-IDX'th subexpression gives the column number on that line.
-If any FILE-FORMAT is given, each is a format string to produce a file name to
-try; %s in the string is replaced by the text matching the FILE-IDX'th
-subexpression.")
+If REGEXP matches constrained to the beginning of the line, the
+FILE-IDX'th subexpression gives the file name, and the LINE-IDX'th
+subexpression gives the line number.  If COLUMN-IDX is given, the
+COLUMN-IDX'th subexpression gives the column number on that line.  If
+any FILE-FORMAT is given, each is a format string to produce a file name
+to try; %s in the string is replaced by the text matching the
+FILE-IDX'th subexpression.  Note previously REGEXP was not constrained
+to the beginning of the line, so old patterns without leading `^' or `\\n'
+may now require a leading `.*'.")
 
 (defvar compilation-read-command t
   "If not nil, M-x compile reads the compilation command to use.
 					    buffer-file-name))))))")
 
 (defvar compilation-enter-directory-regexp
-  ": Entering directory `\\(.*\\)'$"
+  "[^\n]*: Entering directory `\\([^\n]*\\)'$"
   "Regular expression matching lines that indicate a new current directory.
 This must contain one \\(, \\) pair around the directory name.
 
 The default value matches lines printed by the `-w' option of GNU Make.")
 
 (defvar compilation-leave-directory-regexp
-  ": Leaving directory `\\(.*\\)'$"
+  "[^\n]*: Leaving directory `\\([^\n]*\\)'$"
   "Regular expression matching lines that indicate restoring current directory.
 This may contain one \\(, \\) pair around the name of the directory
 being moved from.  If it does not, the last directory entered \(by a
 		;; We don't just pass LIMIT-SEARCH to re-search-forward
 		;; because we want to find matches containing LIMIT-SEARCH
 		;; but which extend past it.
-		(re-search-forward regexp nil t))
+		;; Instead of using re-search-forward,
+		;; we use this loop which tries only at each line.
+		(progn
+		  (while (and (not (eobp))
+			      (not (looking-at regexp)))
+		    (forward-line 1))
+		  (not (eobp))))
+
+      ;; Move to the end of the match we just found.
+      (goto-char (match-end 0))
 
       ;; Figure out which constituent regexp matched.
       (cond ((match-beginning enter-group)

File lisp/packages/completion.el

   "Returns the symbol that the point is currently on.
 But only if it is longer than `completion-min-length'."
   (setq cmpl-saved-syntax (syntax-table))
-  ;; XEmacs change
-  (set-syntax-table cmpl-syntax-table)
-  (cond 
-  ;; Cursor is on following-char and after preceding-char
-    ((memq (char-syntax (following-char)) '(?w ?_))     
-     (setq cmpl-saved-point (point)
-	   cmpl-symbol-start (scan-sexps (1+ cmpl-saved-point) -1)
-	   cmpl-symbol-end (scan-sexps cmpl-saved-point 1))
-     ;; remove chars to ignore at the start
-     (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
-	    (goto-char cmpl-symbol-start)
-	    (forward-word 1)
-	    (setq cmpl-symbol-start (point))
-	    (goto-char cmpl-saved-point)
-	    ))
-     ;; remove chars to ignore at the end
-     (cond ((= (char-syntax (char-after (1- cmpl-symbol-end))) ?w)
-	    (goto-char cmpl-symbol-end)
-	    (forward-word -1)
-	    (setq cmpl-symbol-end (point))
-	    (goto-char cmpl-saved-point)
-	    ))
-     ;; restore state
-     (set-syntax-table cmpl-saved-syntax)
-     ;; Return completion if the length is reasonable
-     (if (and (<= (cmpl-read-time-eval completion-min-length)
-		  (- cmpl-symbol-end cmpl-symbol-start))
-	      (<= (- cmpl-symbol-end cmpl-symbol-start)
-		  (cmpl-read-time-eval completion-max-length)))
-	 (buffer-substring cmpl-symbol-start cmpl-symbol-end))
-     )
-    (t 
-     ;; restore table if no symbol
-     (set-syntax-table cmpl-saved-syntax)
-     nil)
-    ))
+  (unwind-protect
+      (progn
+	(set-syntax-table cmpl-syntax-table)
+	(cond 
+	;; Cursor is on following-char and after preceding-char
+	  ((memq (char-syntax (following-char)) '(?w ?_))     
+	   (setq cmpl-saved-point (point)
+		 cmpl-symbol-start (scan-sexps (1+ cmpl-saved-point) -1)
+		 cmpl-symbol-end (scan-sexps cmpl-saved-point 1))
+	   ;; Remove chars to ignore at the start.
+	   (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
+		  (goto-char cmpl-symbol-start)
+		  (forward-word 1)
+		  (setq cmpl-symbol-start (point))
+		  (goto-char cmpl-saved-point)
+		  ))
+	   ;; Remove chars to ignore at the end.
+	   (cond ((= (char-syntax (char-after (1- cmpl-symbol-end))) ?w)
+		  (goto-char cmpl-symbol-end)
+		  (forward-word -1)
+		  (setq cmpl-symbol-end (point))
+		  (goto-char cmpl-saved-point)
+		  ))
+	   ;; Return completion if the length is reasonable.
+	   (if (and (<= (cmpl-read-time-eval completion-min-length)
+			(- cmpl-symbol-end cmpl-symbol-start))
+		    (<= (- cmpl-symbol-end cmpl-symbol-start)
+			(cmpl-read-time-eval completion-max-length)))
+	       (buffer-substring cmpl-symbol-start cmpl-symbol-end)))))
+    (set-syntax-table cmpl-saved-syntax)))
 
 ;; tests for symbol-under-point
 ;;  `^' indicates cursor pos. where value is returned
 Returns nil if there isn't one longer than `completion-min-length'."       
   ;; This is called when a word separator is typed so it must be FAST !
   (setq cmpl-saved-syntax (syntax-table))
-  ;; XEmacs change
-  (set-syntax-table cmpl-syntax-table)
-  ;; Cursor is on following-char and after preceding-char
-  (cond ((= (setq cmpl-preceding-syntax (char-syntax (preceding-char))) ?_)
-	 ;; No chars. to ignore at end
-	 (setq cmpl-symbol-end (point)
-	       cmpl-symbol-start (scan-sexps (1+ cmpl-symbol-end) -1)
+  (unwind-protect
+      (progn
+	(set-syntax-table cmpl-syntax-table)
+	;; Cursor is on following-char and after preceding-char
+	(cond ((= (setq cmpl-preceding-syntax (char-syntax (preceding-char))) ?_)
+	       ;; Number of chars to ignore at end.
+	       (setq cmpl-symbol-end (point)
+		     cmpl-symbol-start (scan-sexps cmpl-symbol-end -1)
+		     )
+	       ;; Remove chars to ignore at the start.
+	       (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
+		      (goto-char cmpl-symbol-start)
+		      (forward-word 1)
+		      (setq cmpl-symbol-start (point))
+		      (goto-char cmpl-symbol-end)
+		      ))
+	       ;; Return value if long enough.
+	       (if (>= cmpl-symbol-end
+		       (+ cmpl-symbol-start
+			  (cmpl-read-time-eval completion-min-length)))
+		   (buffer-substring cmpl-symbol-start cmpl-symbol-end))
 	       )
-	 ;; XEmacs change
-	 ;; remove chars to ignore at the start
-	 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
-		(goto-char cmpl-symbol-start)
-		(forward-word 1)
-		(setq cmpl-symbol-start (point))
-		(goto-char cmpl-symbol-end)
-		))
-	 ;; restore state
-	 (set-syntax-table cmpl-saved-syntax)
-	 ;; return value if long enough
-	 (if (>= cmpl-symbol-end
-		 (+ cmpl-symbol-start
-		    (cmpl-read-time-eval completion-min-length)))
-	     (buffer-substring cmpl-symbol-start cmpl-symbol-end))
-	 )
-	((= cmpl-preceding-syntax ?w)
-	 ;; chars to ignore at end
-	 (setq cmpl-saved-point (point)
-	       cmpl-symbol-start (scan-sexps (1+ cmpl-saved-point) -1))
-	 ;; take off chars. from end
-	 (forward-word -1)
-	 (setq cmpl-symbol-end (point))
-	 ;; remove chars to ignore at the start
-	 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
-		(goto-char cmpl-symbol-start)
-		(forward-word 1)
-		(setq cmpl-symbol-start (point))
-		))
-	 ;; restore state
-	 (goto-char cmpl-saved-point)
-	 (set-syntax-table cmpl-saved-syntax)
-	 ;; Return completion if the length is reasonable
-	 (if (and (<= (cmpl-read-time-eval completion-min-length)
-		      (- cmpl-symbol-end cmpl-symbol-start))
-		  (<= (- cmpl-symbol-end cmpl-symbol-start)
-		      (cmpl-read-time-eval completion-max-length)))
-	     (buffer-substring cmpl-symbol-start cmpl-symbol-end))
-	 )
-	(t 
-	 ;; restore table if no symbol
-	 (set-syntax-table cmpl-saved-syntax)
-	 nil)
-	))
+	      ((= cmpl-preceding-syntax ?w)
+	       ;; chars to ignore at end
+	       (setq cmpl-saved-point (point)
+		     cmpl-symbol-start (scan-sexps cmpl-saved-point -1))
+	       ;; take off chars. from end
+	       (forward-word -1)
+	       (setq cmpl-symbol-end (point))
+	       ;; remove chars to ignore at the start
+	       (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
+		      (goto-char cmpl-symbol-start)
+		      (forward-word 1)
+		      (setq cmpl-symbol-start (point))
+		      ))
+	       ;; Restore state.
+	       (goto-char cmpl-saved-point)
+	       ;; Return completion if the length is reasonable
+	       (if (and (<= (cmpl-read-time-eval completion-min-length)
+			    (- cmpl-symbol-end cmpl-symbol-start))
+			(<= (- cmpl-symbol-end cmpl-symbol-start)
+			    (cmpl-read-time-eval completion-max-length)))
+		   (buffer-substring cmpl-symbol-start cmpl-symbol-end)))))
+    (set-syntax-table cmpl-saved-syntax)))
 
 ;; tests for symbol-before-point
 ;;  `^' indicates cursor pos. where value is returned
   ;; copying all the code.
   ;; However, it is only used by the completion string prompter.
   ;; If it comes into common use, it could be rewritten.
-  ;; XEmacs change
-  (setq cmpl-saved-syntax (syntax-table))
-  (set-syntax-table cmpl-syntax-table)
-  (cond ((memq (char-syntax (following-char)) '(?w ?_))
-	 (set-syntax-table cmpl-saved-syntax)
+  (cond ((memq (progn
+		 (setq cmpl-saved-syntax (syntax-table))
+		 (unwind-protect
+		     (progn
+		       (set-syntax-table cmpl-syntax-table)
+		       (char-syntax (following-char)))
+		   (set-syntax-table cmpl-saved-syntax)))
+	       '(?w ?_))
 	 (symbol-under-point))
 	(t
-	 ;; XEmacs change
-	 (set-syntax-table cmpl-saved-syntax)
-	 (symbol-before-point))
-	))
-
+	 (symbol-before-point))))
 
 (defun symbol-before-point-for-complete ()
   ;; "Returns a string of the symbol immediately before point
   ;; end chars."
   ;; Cursor is on following-char and after preceding-char
   (setq cmpl-saved-syntax (syntax-table))
-  ;; XEmacs change
-  (set-syntax-table cmpl-syntax-table)
-  (cond ((memq (setq cmpl-preceding-syntax (char-syntax (preceding-char)))
-	       '(?_ ?w))
-	 (setq cmpl-symbol-end (point)
-	       cmpl-symbol-start (scan-sexps (1+ cmpl-symbol-end) -1)
-	       )
-	 ;; remove chars to ignore at the start
-	 (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
-		(goto-char cmpl-symbol-start)
-		(forward-word 1)
-		(setq cmpl-symbol-start (point))
-		(goto-char cmpl-symbol-end)
-		))
-	 ;; restore state
-	 (set-syntax-table cmpl-saved-syntax)
-	 ;; Return completion if the length is reasonable
-	 (if (and (<= (cmpl-read-time-eval
-		       completion-prefix-min-length)
-		      (- cmpl-symbol-end cmpl-symbol-start))
-		  (<= (- cmpl-symbol-end cmpl-symbol-start)
-		      (cmpl-read-time-eval completion-max-length)))
-	     (buffer-substring cmpl-symbol-start cmpl-symbol-end))
-	 )
-	(t 
-	 ;; restore table if no symbol
-	 (set-syntax-table cmpl-saved-syntax)
-	 nil)
-	))
+  (unwind-protect
+      (progn
+	(set-syntax-table cmpl-syntax-table)
+	(cond ((memq (setq cmpl-preceding-syntax (char-syntax (preceding-char)))
+		     '(?_ ?w))
+	       (setq cmpl-symbol-end (point)
+		     cmpl-symbol-start (scan-sexps cmpl-symbol-end -1)
+		     )
+	       ;; Remove chars to ignore at the start.
+	       (cond ((= (char-syntax (char-after cmpl-symbol-start)) ?w)
+		      (goto-char cmpl-symbol-start)
+		      (forward-word 1)
+		      (setq cmpl-symbol-start (point))
+		      (goto-char cmpl-symbol-end)
+		      ))
+	       ;; Return completion if the length is reasonable.
+	       (if (and (<= (cmpl-read-time-eval
+			     completion-prefix-min-length)
+			    (- cmpl-symbol-end cmpl-symbol-start))
+			(<= (- cmpl-symbol-end cmpl-symbol-start)
+			    (cmpl-read-time-eval completion-max-length)))
+		   (buffer-substring cmpl-symbol-start cmpl-symbol-end)))))
+    ;; Restore syntax table.
+    (set-syntax-table cmpl-saved-syntax)))
 
 ;; tests for symbol-before-point-for-complete
 ;;  `^' indicates cursor pos. where value is returned

File lisp/packages/font-lock.el

 	  (t
 	   (remove-hook 'after-change-functions
 			'font-lock-after-change-function t)
-	   (remove-hook 'pre-idle-hook 'font-lock-pre-idle-hook)
+	   ;; We have no business doing this here, since 
+	   ;; pre-idle-hook is global.	Other buffers may
+	   ;; still be in font-lock mode.  -dkindred@cs.cmu.edu
+	   ;; (remove-hook 'pre-idle-hook 'font-lock-pre-idle-hook)
 	   ))
     (set (make-local-variable 'font-lock-mode) on-p)
     (cond (on-p

File lisp/packages/ps-print.el

 ;; Author:     Jim Thompson (was <thompson@wg2.waii.com>)
 ;; Maintainer: Jacques Duthen <duthen@cegelec-red.fr>
 ;; Keywords:   print, PostScript
-;; Time-stamp: <97/01/17 16:41:00 duthen>
+;; Time-stamp: <97/01/29 23:21:25 tjchol01>
 ;; Version:    3.05
 
 (defconst ps-print-version "3.05"
 ;; ------------------------
 ;;
 ;; To use a new font family, you MUST first teach ps-print
-;; this font, ie add its information to `ps-font-info-database',
+;; this font, i.e., add its information to `ps-font-info-database',
 ;; otherwise ps-print cannot correctly place line and page breaks.
 ;;
-;; For example, assuming `Helvetica' is unkown,
+;; For example, assuming `Helvetica' is unknown,
 ;; you first need to do the following ONLY ONCE:
 ;;
 ;; - create a new buffer
 ;; left and right margins and the font size.  On UN*X systems, do:
 ;; pr -t file | awk '{printf "%3d %s\n", length($0), $0}' | sort -r | head
 ;; to determine the longest lines of your file.
-;; Then, the command `ps-line-lengths' will give you the correspondance
+;; Then, the command `ps-line-lengths' will give you the correspondence
 ;; between a line length (number of characters) and the maximum font
 ;; size which doesn't wrap such a line with the current ps-print setup.
 ;;
 ;; The commands `ps-nb-pages-buffer' and `ps-nb-pages-region' display
-;; the correspondance between a number of pages and the maximum font
+;; the correspondence between a number of pages and the maximum font
 ;; size which allow the number of lines of the current buffer or of
 ;; its current region to fit in this number of pages.
 ;; Note: line folding is not taken into account in this process
 (defvar ps-razzle-dazzle t
   "*Non-nil means report progress while formatting buffer.")
 
-(defvar ps-adobe-tag "%!PS-Adobe-1.0\n"
+(defvar ps-adobe-tag "%!PS-Adobe-3.0\n"
   "*Contains the header line identifying the output as PostScript.
 By default, `ps-adobe-tag' contains the standard identifier.  Some
 printers require slightly different versions of this line.")
 
 ;;;###autoload
 (defun ps-line-lengths ()
-  "*Display the correspondance between a line length and a font size,
+  "*Display the correspondence between a line length and a font size,
 using the current ps-print setup.
 Try: pr -t file | awk '{printf \"%3d %s\n\", length($0), $0}' | sort -r | head"
   (interactive)
 
 ;;;###autoload
 (defun ps-nb-pages-buffer (nb-lines)
-  "*Display an approximate correspondance between a font size and the number
+  "*Display an approximate correspondence between a font size and the number
 of pages the current buffer would require to print
 using the current ps-print setup."
   (interactive (list (count-lines (point-min) (point-max))))
 
 ;;;###autoload
 (defun ps-nb-pages-region (nb-lines)
-  "*Display an approximate correspondance between a font size and the number
+  "*Display an approximate correspondence between a font size and the number
 of pages the current region would require to print
 using the current ps-print setup."
   (interactive (list (count-lines (mark) (point))))
 ;; Internal functions
 
 (defun ps-line-lengths-internal ()
-  "Display the correspondance between a line length and a font size,
+  "Display the correspondence between a line length and a font size,
 using the current ps-print setup.
 Try: pr -t file | awk '{printf \"%3d %s\n\", length($0), $0}' | sort -r | head"
   (let ((buf (get-buffer-create "*Line-lengths*"))
     (display-buffer buf 'not-this-window)))
 
 (defun ps-nb-pages (nb-lines)
-  "Display an approximate correspondance between a font size and the number
+  "Display an approximate correspondence between a font size and the number
 of pages the number of lines would require to print
 using the current ps-print setup."
   (let ((buf (get-buffer-create "*Nb-Pages*"))
   (ps-flush-output)
 
   ;; Check to see that the file exists and is readable; if not, throw
-  ;; and error.
+  ;; an error.
   (if (not (file-readable-p fname))
       (error "Could not read file `%s'" fname))
 
   (ps-output "%%Creator: " (user-full-name) "\n")
   (ps-output "%%CreationDate: " 
 	     (time-stamp-hh:mm:ss) " " (time-stamp-mon-dd-yyyy) "\n")
-  (ps-output "%% DocumentFonts: "
-	     ps-font " " ps-font-bold " " ps-font-italic " "
-	     ps-font-bold-italic " "
-	     ps-header-font " " ps-header-title-font "\n")
   (ps-output "%%Pages: (atend)\n")
   (ps-output "%%EndComments\n\n")
 
+  (ps-output "%%BeginProlog\n")
   (ps-output-boolean "LandscapeMode"             ps-landscape-mode)
   (ps-output (format "/NumberOfColumns %d def\n" ps-number-of-columns))
 
   (ps-output (format "/LineHeight   %s def\n" ps-line-height))
 
   (ps-output ps-print-prologue-1)
+  (ps-output "%%EndProlog\n\n")
+
+
+  (ps-output "%%BeginSetup\n")
 
   ;; Header fonts
   (ps-output				; /h0 14 /Helvetica-Bold Font
   (ps-output (format "/f3 %s /%s DefFont\n" ps-font-size ps-font-bold-italic))
 
   (ps-output "\nBeginDoc\n\n")
-  (ps-output "%%EndPrologue\n"))
+  (ps-output "%%EndSetup\n")
+)
 
 (defun ps-header-dirpart ()
   (let ((fname (buffer-file-name)))
   (setq ps-page-count 0))
 
 (defun ps-end-file ()
-  (ps-output "\nEndDoc\n\n")
-  (ps-output "%%Trailer\n")
+  (ps-output "\n\n%%Trailer\n")
   (ps-output (format "%%%%Pages: %d\n" (1+ (/ (1- ps-page-count)
-					      ps-number-of-columns)))))
+					      ps-number-of-columns))))
+  (ps-output "EndDoc\n")
+  (ps-output "%%EOF\n"))
 
 (defun ps-next-page ()
   (ps-end-page)
 	      (set-marker safe-marker (point-max))
 	    
 	      (goto-char (point-min))
-	      (if (looking-at (regexp-quote "%!PS-Adobe-1.0"))
+	      (if (looking-at (regexp-quote ps-adobe-tag))
 		  nil
 		(setq needs-begin-file t))
 	      (save-excursion

File lisp/prim/about.el

 ;;;		      and Chuck Thompson <cthomp@xemacs.org>
 ;;; More hacking for 19.12 by Chuck Thompson and Ben Wing.
 ;;; 19.13 and 19.14 updating done by Chuck Thompson.
-;;; 19.15 and 20.0 updating done by Steve Baur.
+;;; 19.15 and 20.0 updating done by Steve Baur and Martin Buchholz.
 
 (require 'browse-url)
 (defvar about-xref-map (let ((map (make-sparse-keymap)))
 
 	(insert "In almost all circumstances, Emacs-Lisp code written for
 	GNU Emacs versions 18 and 19 will run under XEmacs without
-        requiring any modifications, or at most will require small
+	requiring any modifications, or at most will require small
 	changes to accommodate an improved functional interface.\n\n\t")
 
     (insert "XEmacs provides a great number of ")
 	  (set-buffer-modified-p nil)
 	  )))
      (t
-      (switch-to-buffer (get-buffer-create
-			 (cond ((eq xref 'jwz) "About Jamie Zawinski")
-			       ((eq xref 'cthomp) "About Chuck Thompson")
-			       ((eq xref 'wing) "About Ben Wing")
-			       ((eq xref 'mly) "About Richard Mlynarik")
-			       ((eq xref 'vladimir) "About Vladimir Ivanovic")
-			       ((eq xref 'baw) "About Barry Warsaw")
-			       ((eq xref 'wmperry) "About William Perry")
-			       ((eq xref 'bw) "About Bob Weiner")
-			       ((eq xref 'piper) "About Andy Piper")
-			       ((eq xref 'stig) "About Jonathan Stigelman")
-			       ((eq xref 'steve) "About Steve Baur")
-			       ((eq xref 'mrb) "About Martin Buchholz")
-			       ((eq xref 'others) "About Everyone")
-			       ((eq xref 'features) "New XEmacs Features")
-			       ((eq xref 'history) "XEmacs History")
-			       )))
+      (switch-to-buffer
+       (get-buffer-create
+	(case xref
+	  ('jwz "About Jamie Zawinski")
+	  ('cthomp "About Chuck Thompson")
+	  ('wing "About Ben Wing")
+	  ('mly "About Richard Mlynarik")
+	  ('vladimir "About Vladimir Ivanovic")
+	  ('baw "About Barry Warsaw")
+	  ('wmperry "About William Perry")
+	  ('bw "About Bob Weiner")
+	  ('piper "About Andy Piper")
+	  ('stig "About Jonathan Stigelman")
+	  ('steve "About Steve Baur")
+	  ('mrb "About Martin Buchholz")
+	  ('others "About Everyone")
+	  ('features "New XEmacs Features")
+	  ('history "XEmacs History")
+	  )))
       (delete-other-windows)
       (buffer-disable-undo (current-buffer))
       (widen)
 
 	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
+	read-only, the ability to detect which parts of a buffer have
 	been modified, and many other features.
 
 	For our purposes, the existing version of Epoch was not
 	  (about-face "The Sun Microsystems, Inc. Point of View" 'italic)
 	  (insert "
 
-	Emacs 18 has been around for a long, long time.  Version 19 was
-	supposed to be the successor to v18 with X support.  It was
-	going to be available \"real soon\" for a long time (some
+	Emacs 18 has been around for a long, long time.  Version 19
+	was supposed to be the successor to v18 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 University of
-	Illinois (\"UofI\") and was based on v18.
+	decided to build their own X-aware Emacsen.  The most
+	important of these was probably Epoch, which came from the
+	University of Illinois (\"UofI\") and was based on v18.
 
-	Around three or four years ago what was then called SunPro (a
-	division of Sun Microsystems, Inc.) decided that it wanted an
-	integrated editor.  They contracted with UofI to provide a
-	number of basic enhancements to the functionality in Epoch.
-	UofI initially was planning to deliver this on top of Epoch
-	code.
+	Around 1990, the Developer Products group within Sun
+	Microsystems Inc., decided that it wanted an integrated
+	editor.  (This group is now known as DevPro.  It used to be
+	known as SunPro - the name was changed in mid-1994.)  They
+	contracted with the University of Illinois to provide a number
+	of basic enhancements to the functionality in Epoch.  UofI
+	initially was planning to deliver this on top of Epoch code.
 
-	In the meantime (actually some time before they talked with UofI)
-	Lucid had decided that it also wanted to provide an integrated
-	environment with an integrated editor.  Lucid decided that the
-	v19 basis was a better one than v18 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 v19 out.  At some point Stallman and Lucid parted ways.
-	Lucid kept working and got a v19 out that they called Lucid
-	Emacs 19.
+	In the meantime, (actually some time before they talked with
+	UofI) Lucid had decided that it also wanted to provide an
+	integrated environment with an integrated editor.  Lucid
+	decided that the Version 19 base was a better one than Version
+	18 and thus decided not to use Epoch but instead to work with
+	Richard Stallman, the head of the Free Software Foundation and
+	principal author of Emacs, on getting v19 out.  At some point
+	Stallman and Lucid parted ways.  Lucid kept working and got a
+	v19 out that they called Lucid Emacs 19.
 
-	After Lucid's v19 came out it became clear to UofI 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
-	SunPro was asking from UofI on top of this integrated
-	platform.  Through the last three or four years, SunPro has
-	been actively supporting this product and has been investing a
-	comparable amount of effort into it as Lucid has.  Substantial
+	After Lucid's v19 came out it became clear to us (the UofI and
+	Sun) that the right thing to do was to push for an integration
+	of both Lucid Emacs and Epoch, and to get the deliverables
+	that Sun was asking from the University of Illinois on top of
+	this integrated platform.  Until 1994, Sun and Lucid both
+	actively supported XEmacs as part of their product suite and
+	invested a comparable amount of effort into it.  Substantial
 	portions of the current code have originated under the support
-	of SunPro, either directly in SunPro, or in UofI but paid for
-	by SunPro.  This code was kept away from Lucid for a while,
-	but later was made available to them.  Initially Lucid didn't
-	know that SunPro was supporting UofI, but later they were open
-	about it.
+	of Sun, either directly within Sun, or at UofI but paid for by
+	Sun.  This code was kept away from Lucid for a while, but
+	later was made available to them.  Initially Lucid didn't know
+	that Sun was supporting UofI, but later Sun was open about it.
 
-	Around two years ago the SunPro-related code started showing up
-	in Lucid Emacs.  This started with the infusion of the Epoch
-	redisplay code.
+	Around 1992 DevPro-originated code started showing up in Lucid
+	Emacs, starting with the infusion of the Epoch redisplay code.
+	The separate code bases at Lucid, Sun, and the University of
+	Illinois were merged, allowing a single XEmacs to evolve from
+	that point on.
 
-	At this moment there is basically no difference in the source
-	trees between what is at UofI and at Sun.  All the development
-	sites are in sync.
-
-	SunPro originally called the integrated product ERA, for
-	\"Emacs Rewritten Again\".  SunPro and Lucid eventually came
+	Sun originally called the integrated product \"ERA\", for
+	\"Emacs Rewritten Again\".  Sun and Lucid eventually 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
-	tentatively agreed-upon name was \"XEmacs\", and this has
-	been the name of the product since version 19.11.)")
+	tentatively agreed-upon name was \"XEmacs\", and this has been
+	the name of the program since version 19.11.)
 
-	  (insert "\n\n\n\t")
-	  (about-face "SunPro is now DevPro (Sun Developer Products)\n" 'italic)
-	  (insert "
-	In mid-'94 Sun completed a reorganization where SunPro moved
-	to SunSoft.  As a consequence, SunPro was then called SunSoft
-	Developer Products, or DevPro for short.  De-planetization is
-	continuing in 1996, and the name `Sunsoft' is falling into
-	disuse in favour of `Sun'.")
+	As of 1997, Sun is shipping XEmacs as part of its Developer
+	Products integrated programming environment \"Sun WorkShop\".
+	Sun is continuing to support XEmacs development, with focus on
+	internationalization and quality improvement.")
 
 	  (insert "\n\n\n\t")
 	  (about-face "Lucid goes under\n" 'italic)
 	  (insert "
-	Around mid-'94, Lucid went out of business.  Development on
-	XEmacs, however, has continued unabated under the auspices of
-	Sun Microsystems and the University of Illinois, with help
-	from Amdahl Corporation and INS Engineering Corporation.
-	Sun plans to continue to support XEmacs into the future.")
+	Around mid-'94, Lucid went out of business.  Lucid founder
+	Richard Gabriel's book \"Patterns of Software\", which is
+	highly recommended reading in any case, documents the demise
+	of Lucid and suggests lessons to be learned for the whole
+	software development community.
+
+	Development on XEmacs, however, has continued unabated under
+	the auspices of Sun Microsystems and the University of
+	Illinois, with help from Amdahl Corporation and INS
+	Engineering Corporation.  Sun plans to continue to support
+	XEmacs into the future.")
 
 	  (insert "\n\n\n\t")
 	  (about-face "The Amdahl Corporation point of view" 'italic)
 	  (about-face "The INS Engineering point of view" 'italic)
 	  (insert "
 
-        INS Engineering Corporation, based in Tokyo, bought rights
+	INS Engineering Corporation, based in Tokyo, bought rights
 	to sell Energize when Lucid went out of business.  Unhappy
 	with the performance of the Japanese support in XEmacs 19.11,
 	INS also contributed to the XEmacs development from late 1994
 	Jamie Zawinski was primarily to blame for Lucid Emacs from its
 	inception in 1991, to 1994 when Lucid Inc. finally died.  He is
 	now to be found at Netscape Communications, hacking on Netscape
-        Navigator (he did the first Unix version and the mail reader).
-        Thankfully his extensive sleep deprivation experiments conducted
-        during 1994 and 1995 are now a thing of the past, but his
-        predilection for dark, Gothic music remains unabated.
+	Navigator (he did the first Unix version and the mail reader).
+	Thankfully his extensive sleep deprivation experiments conducted
+	during 1994 and 1995 are now a thing of the past, but his
+	predilection for dark, Gothic music remains unabated.
 
 	Come visit his glorified .plan file at
 
 	  (about-face "Martin Buchholz" 'bold)
 	  (insert " <mrb@eng.sun.com>
 
-	Martin Buchholz <Martin.Buchholz@sun.com>
-	Technical lead for XEmacs at DevPro (formerly SunPro), a
-	division of Sun Microsystems.  Martin used to do XEmacs as a
-	`hobby' while at IBM, and was crazy enough to try to do it
-	for a living at Sun.  Martin is currently working mostly on
-	Internationalization.")
+	Martin is the XEmacs guy at DevPro, a part of Sun Microsystems.
+	Martin used to do XEmacs as a `hobby' while at IBM, and was
+	crazy enough to try to make a living doing it at Sun.
+
+	Martin starting using Emacs originally not to edit files, but
+	to get the benefit of shell mode. He actually used to run
+	nothing but a shell buffer, and use `xterm -e vi' to edit
+	files.  But then he saw the light.  He dreams of rewriting
+	shell mode from scratch.  Stderr should show up in red!!
+
+	Martin is currently working mostly on Internationalization.
+	He spends most of his waking hours inside a Japanized XEmacs.")
 
 	  (insert "\n\n\tClick ")
 	  (about-xref "here" prev-page "Return to previous page")
 
 	Since April 1993, I've worked on XEmacs as a contractor
 	for various companies, changing hats faster than Ronald Reagan's
-        hair color (oops, did I just show my age?).  My main contributions
-        to XEmacs include rewriting large parts of the internals and the
-        gory Xt/Xlib interfacing, adding the Mule support, implementing
-        the external client widget, improving the documentation (especially
-        the Emacs Lisp manual), and being a general nuisance ... er,
-        brainstormer for many of the new features of XEmacs.
+	hair color (oops, did I just show my age?).  My main contributions
+	to XEmacs include rewriting large parts of the internals and the
+	gory Xt/Xlib interfacing, adding the Mule support, implementing
+	the external client widget, improving the documentation (especially
+	the Emacs Lisp manual), and being a general nuisance ... er,
+	brainstormer for many of the new features of XEmacs.
 
-        Recently I took a job at Dimension X, where I'm working on a
-        Java-based toolkit for developing VRML applications.")
+	Recently I took a job at Dimension X, where I'm working on a
+	Java-based toolkit for developing VRML applications.")
 	  (insert "\n\n\tClick ")
 	  (about-xref "here" prev-page "Return to previous page")
 	  (insert " to go back to the previous page.\n")
 	  (about-face "Vladimir Ivanovic" 'bold)
 	  (insert " <vladimir@mri.com>
 
-	Former technical lead for XEmacs at DevPro (formerly SunPro),
-	a division of Sun Microsystems.  He is now with Microtec
-	Research Inc., working on embedded systems development
-	tools.")
+	Former technical lead for XEmacs at Sun.  He is now with
+	Microtec Research Inc., working on embedded systems
+	development tools.")
 
 	  (insert "\n\n\tClick ")
 	  (about-xref "here" prev-page "Return to previous page")
 	browser.  He also designed the InfoDock integrated tool
 	framework for software engineers.  It runs atop XEmacs and is
 	available from his firm, InfoDock Associates, which offers custom
-        development and support packages for corporate users of XEmacs,
-        GNU Emacs and InfoDock.  See \"http://www.infodock.com>\".
+	development and support packages for corporate users of XEmacs,
+	GNU Emacs and InfoDock.  See \"http://www.infodock.com>\".
 	His interests include user interfaces, information management,
 	CASE tools, communications and enterprise integration.")
 
 	someone; we apologize!  You can see some of our faces further below.
 
 	") (about-xref "Vladimir Ivanovic" 'vladimir "Find out more about Vladimir Ivanovic") (insert " <vladimir@mri.com>
-	  Former technical lead for XEmacs at Sun Microsystems.  He is
-	  now with Microtec Research Inc., working on embedded systems
-	  development tools.
+	Former technical lead for XEmacs at Sun Microsystems.  He is
+	now with Microtec Research Inc., working on embedded systems
+	development tools.
 
 	") (about-xref "Jonathan Stigelman" 'stig "Find out more about Jonathan Stigelman") (insert " <stig@hackvan.com>
-          Peripatetic uninominal Emacs hacker.  Stig sometimes operates
-	  out of a big white van set up for nomadic living and hacking.
-	  Implemented the faster stay-up Lucid menus and hyper-apropos.
-	  Contributor of many dispersed improvements in the core Lisp code,
-	  and back-seat contributor for several of it's major packages.
+	Peripatetic uninominal Emacs hacker.  Stig sometimes operates
+	out of a big white van set up for nomadic living and hacking.
+	Implemented the faster stay-up Lucid menus and hyper-apropos.
+	Contributor of many dispersed improvements in the core Lisp code,
+	and back-seat contributor for several of it's major packages.
 
 	") (about-xref "Barry Warsaw" 'baw "Find out more about Barry Warsaw") (insert " <bwarsaw@cnri.reston.va.us>
-	  Author of cc-mode for C++, C, and Objective-C editing, and
-	  Supercite for mail and news citing.  Also various and sundry other
-	  Emacs utilities, fixes, enhancements and kludgery as whimsy,
-	  boredom, and ToT dictate (but not necessarily in that order).
+	Author of cc-mode for C++, C, and Objective-C editing, and
+	Supercite for mail and news citing.  Also various and sundry other
+	Emacs utilities, fixes, enhancements and kludgery as whimsy,
+	boredom, and ToT dictate (but not necessarily in that order).
 
 	") (about-xref "Andy Piper" 'piper "Find out more about Andy Piper") (insert " <andyp@parallax.co.uk>
-	  Created the prototype for the toolbars.  Has been the first to make
-	  use of many of the new XEmacs graphics features.
+	Created the prototype for the toolbars.  Has been the first to make
+	use of many of the new XEmacs graphics features.
 
 	") (about-xref "Bob Weiner" 'bw "Find out more about Bob Weiner") (insert " <weiner@infodock.com>
-	  Author of the Hyperbole everyday information management
-	  hypertext system and the OO-Browser multi-language code
-	  browser.  He also designed the InfoDock integrated tool
-	  framework for software engineers.  It runs atop XEmacs and is
-	  available from his firm, InfoDock Associates, which offers custom
-          development and support packages for corporate users of XEmacs,
-          GNU Emacs and InfoDock.  See \"http://www.infodock.com>\".
-	  His interests include user interfaces, information management,
- 	  CASE tools, communications and enterprise integration.
+	Author of the Hyperbole everyday information management
+	hypertext system and the OO-Browser multi-language code
+	browser.  He also designed the InfoDock integrated tool
+	framework for software engineers.  It runs atop XEmacs and is
+	available from his firm, InfoDock Associates, which offers custom
+	development and support packages for corporate users of XEmacs,
+	GNU Emacs and InfoDock.  See \"http://www.infodock.com>\".
+	His interests include user interfaces, information management,
+	CASE tools, communications and enterprise integration.
 
 	") (about-xref "William Perry" 'wmperry "Find out more about Bill Perry") (insert " <wmperry@aventail.com>
-	  Author of Emacs-w3, the builtin web browser that comes with XEmacs,
-	  and various additions to the C code (e.g. the database support,
-	  the PNG support, some of the GIF/JPEG support, the strikethru
-	  face attribute support).
+	Author of Emacs-w3, the builtin web browser that comes with XEmacs,
+	and various additions to the C code (e.g. the database support,
+	the PNG support, some of the GIF/JPEG support, the strikethru
+	face attribute support).
 
 	Kyle Jones <kyle@crystal.wonderworks.com>
-	  Author of VM (View Mail), a mail-reading package that is
-	  included in the standard XEmacs distribution, and
-	  contributor of many improvements and bug fixes.  Unlike most
-	  other mail-reading packages, VM uses the standard Unix-mail
-	  format for its mailboxes; thus, you can use VM concurrently
-	  with standard mail readers such as Unix mail and ELM.
+	Author of VM (View Mail), a mail-reading package that is
+	included in the standard XEmacs distribution, and
+	contributor of many improvements and bug fixes.  Unlike most
+	other mail-reading packages, VM uses the standard Unix-mail
+	format for its mailboxes; thus, you can use VM concurrently
+	with standard mail readers such as Unix mail and ELM.
 
 	Darrell Kindred <Darrell.Kindred@cmu.edu>
-	  Unofficial maintainer of the xemacs-beta list of extant
-	  bugs and contributor of an extraordinary number of
-	  important bug fixes, many of them in areas that neither
-	  Chuck nor Ben was particularly enthusiastic about
-	  investigating.
+	Unofficial maintainer of the xemacs-beta list of extant bugs
+	and contributor of an extraordinary number of important bug