Marc Mengel has informed me that the Computing Division plans to drop support for GNU Emacs and only support XEmacs. If the distinction between these two things eludes you, please read XEmacs -- Emacs: The Next Generation. The FNALU cluster now supports both GNU Emacs 19.34 and XEMacs 20.4. GNU Emacs 20.3 is not supported.
I include here some extracts from mail exchanges with Marc.
> Regarding GNU Emacs and XEmacs. When does GNU Emacs 19.34 get dropped > from FNALU? When does it get announced that this is going to happen?We won't drop it until/unless it breaks. It will just be the last release of emacs that we put out -- future releases will be in the xemacs product.
For the ease of use of other people, we *may* release something called "emacs" which is really the xemacs product (so that people can "setup emacs" to get our latest release) -- but in this case, you would still be able to "setup emacs v19_34" to get that particular instance of emacs.
I will attempt here to describe the results of my investigations of XEmacs 20.4 on the FNALU cluster. My perspective is that of a GNU Emacs 19.34 user; in particular, I use GNU Emacs with a character cell terminal emulator & don't use X-Windows.
John McCarthy, Computer Science Department, Stanford, CA 94305 http://www-formal.stanford.edu/jmc/progress/
Robert Bihlmeyer
However, GNU Emacs 19 has incorporated many of the XEmacs features,
and vice versa, so using one or the other becomes more and more a
matter of preference.
< Which is better for using mostly under X, but I also sometimes want
to use in a regular terminal (vt100)?>
I'd say XEmacs might be your choice, as it has nicer "graphical"
features, but still runs on terminals (I used XEmacs on a terminal
solely for more than a year).
Hrvoje Niksic < hniksic@srce.hr %gt , FER Zagreb, Croatia
(now a XEmacs developer)
Matt Gushee,
Oshamanbe, Hokkaido, Japan
This is explained in Info node "(lispref)Character Type" (in the info
files that accompany XEmacs).
Try both. They each have their subtle strengths. You might find that
you like GNU Emacs mousing behavior and its defaults the most, and it
also is the flavor you'll find installed on most sites that don't
offer both, while you might appreciate some XEmacs features like
embedding images into frames (like X-Faces in gnus).
But those were only the technical reasons. *The* reason for not
merging is that a large part of XEmacs code base is not assigned to
the FSF (it's still GPL, however) which means Stallman refuses to add
XEmacs code to FSF Emacs. He claims it to be "unfair competition".
Then, there's the matter of control. Stallman has very tight control
over what goes to FSF Emacs and what doesn't. XEmacs development team
does its best to create an open development model with the mailing
lists etc. There is, to the best of my knowledge, no such thing in
GNU Emacs.
The legal advice Stallman received quite a few years ago is that
software owned by one institution has much better chances in court
than software owned by many people. This is why he asks for
assignments, not because of fear of termination.
from several messages posted by Hrvoje Niksic < hniksic@srce.hr >,
Zagreb, Croatia (now a XEmacs developer)
;; Comparison commands (define-key map "=" 'dired-diff) (define-key map "\M-=" 'dired-backup-diff)The Xemacs 20.4 people chose different mappings for these two functions. They use "=" as the prefix for various "diff" functions. "h" in a buffer in Dired mode tells us that "=d" runs "dired-diff" and "=b" runs "dired-backup-diff". In addition "dired-diff" wasn't working properly. It wasn't using the file name at the mark.
In Rmail "M-s" and "- M s" searches don't work properly, unless one switches from the preview buffer back to the actual rmail file (& for repeated searches this would have to be done constantly). The fix is to set "rmail-show-mime" to nil.
The problem was that the "dired-save-excursion" macro was preventing "dired-next-subdir" from moving the point. The solution was to move the function call to "dired-next-sudir" in "dired-hide-subdir" from within the argument passed to "dired-save-excursion".
XEmacs has instead a function "pop-tag-mark" (bound to M-*) which takes previously found tags off of a stack and goes to each one in turn. Two stacks are used for this purpose. Old tags come off stack 1 and go onto stack 2. If a prefix is used with the function, old tags come off stack 2 and go onto stack 1.
Subroutine RdFile(file_name,ifil)) then the tag is "RdFile". Use of a tag "rdfile" will not work. GNU Emacs did not have this case sensitivity.
GNU Emacs uses "html-mode" from "sgml-mode.el. XEmacs 20.4 uses 'define-derived-mode html-mode sgml-mode "HTML"' to define the mode it is using. This is found in "psgml-html.el".
5. In Indented Text mode, after using tab character to line up second line with a spot in the first line that is desired, M-q (bound to function fill-paragraph-or-region) does not cause the 3rd and later lines to line up with the second line. Instead, all the lines move to the left side of the screen. 5. In Indented Text mode, after using tab character to line up second line with a spot in the first line that is desired, M-q (bound to function fill-paragraph-or-region) does not cause the 3rd and later lines to line up with the second line. Instead, all the lines move to the left side of the screen.
From the Info files:
`keymap'
(keymap or `nil') This keymap is consulted for mouse clicks on this
extent or keypresses made while `point' is within the extent.
`local-map'
You can specify a different keymap for a portion of the text by
means of a `local-map' property. The property's value for the
character after point, if non-`nil', replaces the buffer's local
map.
"Follow mode" is a minor mode that makes two windows showing the same buffer scroll as one tall "virtual window." To use Follow mode, go to a frame with just one window, split it into two side-by-side windows using `C-x 3', and then type `M-x follow-mode'. From then on, you can edit the buffer in either of the two windows, or scroll either one; the other window follows it.
(substitute-in-file-name "$GTOOLS_DIR/info/tar.info")
It tries to translate GTOOLS as an environmental variable. The documentation for that function says not to terminate the name with an underscore, unless the name is enclosed in braces. GNU Emacs 19.34 doesn't enforce this rule in the same manner. It evaluates "$GTOOLS_DIR" as a whole, without using braces.
Using braces is the safe thing to do. Then both flavors of Emacs accept ${GTOOLS_DIR}.
A similar problem can occur in the *shell* buffer (resulting from "M-x shell"). For example, typing "cd $GTOOLS_DIR" in the "*shell*" buffer can result in an error message. It doesn't always do so. When it occurs, the interpretation is that XEmacs is trying to interpret GTOOLS as an environmental variable. The shell has no problem of this sort, but XEmacs is trying to keep track of directory changes in the "*shell*" buffer.
"man.el" for GNU Emacs 20.3 has key "q" bound to "Man-quit". This function invokes "quit-window", which doesn't exist in XEmacs.
"man.el" for XEmacs 20.4 seems unable to find the man page sh(1b) on node Fdei02, for example. "man.el" for GNU Emacs 19.34 finds it by specifying it as "1b sh".
`auto-show-mode' is a variable declared in Lisp. Value: nil This value is specific to the current buffer. Its default-value is t
Documentation: *Non-nil enables automatic horizontal scrolling, when lines are truncated. The default value is t. To change the default, do this: (set-default 'auto-show-mode nil) See also command `auto-show-mode'. This variable has no effect when lines are not being truncated. This variable is automatically local in each buffer where it is set.
window-edges: a built-in function. Return a list of the edge coordinates of WINDOW. (LEFT TOP RIGHT BOTTOM), all relative to 0, 0 at top left corner of frame. RIGHT is one more than the rightmost column used by WINDOW, and BOTTOM is one more than the bottommost row used by WINDOW and its mode-line. (window-edges &optional WINDOW)This is explained in the XEmacs (lispref) Info Node as follows: "There is no longer a function `window-edges' because it does not make sense in a world with variable-width and variable-height lines, as are allowed in XEmacs."
`\{n,m\}' this is an interval quantifier, which is analogous to `*' or `+', but specifies that the expression must match at least `n' times, but no more than `m' times. This syntax comes to us from `ed', `grep', and `perl'. The `etags' utility also supports it.
In comparing "gud.el" from our installation of "XEmacs 20.4 "Emerald" [Lucid] (alpha-dec-osf3.2) of Sat Feb 28 1998 on cobra.pa.dec.com" and that which comes with GNU Emacs 20.3, I see a number of inadequacies in the former. When using M-x dbx to invoke the "dbx" debugger the source isn't shown in another window (I am invoking XEmacs with the -nw option, on a character cell terminal (a VT100 emulator)). This seems to be because "gud-last-frame" isn't being set inside "gud-dbx-marker-filter". It is probably also because "gud-common-init" doesn't have "marker-filter" as one of its arguements. Also, the definition of the "dbx" function has in it the lines: (gud-def gud-break "file \"%d%f\"\nstop at %l" "\C-b" "Set breakpoint at current line.") ;; (gud-def gud-break "stop at \"%f\":%l" ;; "\C-b" "Set breakpoint at current line.") This appears to be a "poor man's" way of dealing with Unix flavors, since the commented out lines are appropriate for the flavor of Unix shown above. The GNU Emacs 20.3 "gud.el" has explicit handling of Unix flavor dependence. The "gud.el" that came with GNU Emacs 19.34 didn't have these inadequacies, as well. A check of one of the mirror sites for XEmacs indicated to me that there was no newer version of "gud.el" available. Was it too much to adapt the "gud.el" from GNU Emacs to XEmacs and keep the code that dealt with Unix flavor dependences for "dbx"? I'm puzzled by this state of affairs.
The GUD (Grand Unified Debugger) library provides an interface to various symbolic debuggers from within Emacs. We recommend the debugger GDB, which is free software, but you can also run DBX, SDB or XDB if you have them. GUD can also serve as an interface to the Perl's debugging mode, the Python debugger PDB, and to JDB, the Java Debugger.
The XEmacs regular expression syntax most closely resembles that of `ed', or `grep', the GNU versions of which all utilize the GNU `regex' library. XEmacs' version of `regex' has recently been extended with some perl-like capabilities, described in the next section.
Info node "(lispref)Syntax of Regexps" list the following:
`\{n,m\}'
this is an interval quantifier, which is analogous to `*' or `+',
but specifies that the expression must match at least `n' times,
but no more than `m' times. This syntax comes to us from `ed',
`grep', and `perl'. The `etags' utility also supports it.
This is not described in Info node "(xemacs)Regexps".
The presence of these extra packages in the XEmacs distribution probably accounts for the popularity of XEmacs at Fermilab (when compared to GNU Emacs).
The problem is traced to the use of "switch-to-buffer" in "rmail-set-attribute" in "rmail.el" in the Xemacs 20.4 distribution. The function "switch-to-buffer" changes the selected window; in GNU Emacs this function call isn't present.
For example. suppose one reads the newsgroup "comp.text.tex" with the Gnus newsreader that comes with Emacs. One can save messages to a file, whose name defaults to the name of the newsgroup if one has set the variable "gnus-use-long-file-name" to "t". This file can be in Babyl format, yet in XEmacs when one visits the file, the buffer is set to tex mode because of the file name suffix.
"If the optional argument IGNORED-HEADERS is non-nil, delete all header fields whose names match that regexp. Otherwise, if `rmail-displayed-headers' is non-nil, delete all header fields *except* those whose names match that regexp. Otherwise, delete all header fields whose names match `rmail-ignored-headers'."
The same function in XEmacs only uses the variable 'rmail-ignored-headers'.
If one uses the functions `rmail-next-labeled-message' or `rmail-previous-labeled-message' after having used `rmail-summary' to make a summary, the cursor doesn't move in the summary window.
VM can read and write Rmail files. If you want all new message files to be written in Rmail format, put this in your ~/.vm file:
(setq vm-default-folder-type 'babyl)
VM will automatically maintain and display message threads if you put this in your ~/.vm file:
(setq vm-startup-with-summary t vm-summary-show-threads t)
When MIME attachments are included with an e-mail message, VM expects to see a line like
MIME-Version: 1.0present. Without this line VM will not decode and handle the MIME attachments properly.
If one is attempting to share mail folders with both Rmail and VM, here is a "Catch 22" to watch for. In Rmail "t" is bound to `rmail-toggle-header'". If one uses this, note that the variable "rmail-ignored-headers" includes "Mime-Version:" and "Content-Type:". Therefore, toggling the headers strips out some headers that VM wants to find to decode MIME properly (having "(setq vm-default-folder-type 'babyl)" in one's ~/.vm file is no protection against this happening).
(setq tm-vm/strict-mime nil)present in the ".vm" or ".emacs" file TM will not require the MIME-Version line to be present. TM comes included in the XEmacs 20.4 distribution, and is described in Info node "(tm-vm-en)Top" for use with VM. However, Kyle Jones, maintainer of VM, says that TM-VM is unsupported.