annotate README @ 665:fdefd0186b75

[xemacs-hg @ 2001-09-20 06:28:42 by ben] The great integral types renaming. The purpose of this is to rationalize the names used for various integral types, so that they match their intended uses and follow consist conventions, and eliminate types that were not semantically different from each other. The conventions are: -- All integral types that measure quantities of anything are signed. Some people disagree vociferously with this, but their arguments are mostly theoretical, and are vastly outweighed by the practical headaches of mixing signed and unsigned values, and more importantly by the far increased likelihood of inadvertent bugs: Because of the broken "viral" nature of unsigned quantities in C (operations involving mixed signed/unsigned are done unsigned, when exactly the opposite is nearly always wanted), even a single error in declaring a quantity unsigned that should be signed, or even the even more subtle error of comparing signed and unsigned values and forgetting the necessary cast, can be catastrophic, as comparisons will yield wrong results. -Wsign-compare is turned on specifically to catch this, but this tends to result in a great number of warnings when mixing signed and unsigned, and the casts are annoying. More has been written on this elsewhere. -- All such quantity types just mentioned boil down to EMACS_INT, which is 32 bits on 32-bit machines and 64 bits on 64-bit machines. This is guaranteed to be the same size as Lisp objects of type `int', and (as far as I can tell) of size_t (unsigned!) and ssize_t. The only type below that is not an EMACS_INT is Hashcode, which is an unsigned value of the same size as EMACS_INT. -- Type names should be relatively short (no more than 10 characters or so), with the first letter capitalized and no underscores if they can at all be avoided. -- "count" == a zero-based measurement of some quantity. Includes sizes, offsets, and indexes. -- "bpos" == a one-based measurement of a position in a buffer. "Charbpos" and "Bytebpos" count text in the buffer, rather than bytes in memory; thus Bytebpos does not directly correspond to the memory representation. Use "Membpos" for this. -- "Char" refers to internal-format characters, not to the C type "char", which is really a byte. -- For the actual name changes, see the script below. I ran the following script to do the conversion. (NOTE: This script is idempotent. You can safely run it multiple times and it will not screw up previous results -- in fact, it will do nothing if nothing has changed. Thus, it can be run repeatedly as necessary to handle patches coming in from old workspaces, or old branches.) There are two tags, just before and just after the change: `pre-integral-type-rename' and `post-integral-type-rename'. When merging code from the main trunk into a branch, the best thing to do is first merge up to `pre-integral-type-rename', then apply the script and associated changes, then merge from `post-integral-type-change' to the present. (Alternatively, just do the merging in one operation; but you may then have a lot of conflicts needing to be resolved by hand.) Script `fixtypes.sh' follows: ----------------------------------- cut ------------------------------------ files="*.[ch] s/*.h m/*.h config.h.in ../configure.in Makefile.in.in ../lib-src/*.[ch] ../lwlib/*.[ch]" gr Memory_Count Bytecount $files gr Lstream_Data_Count Bytecount $files gr Element_Count Elemcount $files gr Hash_Code Hashcode $files gr extcount bytecount $files gr bufpos charbpos $files gr bytind bytebpos $files gr memind membpos $files gr bufbyte intbyte $files gr Extcount Bytecount $files gr Bufpos Charbpos $files gr Bytind Bytebpos $files gr Memind Membpos $files gr Bufbyte Intbyte $files gr EXTCOUNT BYTECOUNT $files gr BUFPOS CHARBPOS $files gr BYTIND BYTEBPOS $files gr MEMIND MEMBPOS $files gr BUFBYTE INTBYTE $files gr MEMORY_COUNT BYTECOUNT $files gr LSTREAM_DATA_COUNT BYTECOUNT $files gr ELEMENT_COUNT ELEMCOUNT $files gr HASH_CODE HASHCODE $files ----------------------------------- cut ------------------------------------ `fixtypes.sh' is a Bourne-shell script; it uses 'gr': ----------------------------------- cut ------------------------------------ #!/bin/sh # Usage is like this: # gr FROM TO FILES ... # globally replace FROM with TO in FILES. FROM and TO are regular expressions. # backup files are stored in the `backup' directory. from="$1" to="$2" shift 2 echo ${1+"$@"} | xargs global-replace "s/$from/$to/g" ----------------------------------- cut ------------------------------------ `gr' in turn uses a Perl script to do its real work, `global-replace', which follows: ----------------------------------- cut ------------------------------------ : #-*- Perl -*- ### global-modify --- modify the contents of a file by a Perl expression ## Copyright (C) 1999 Martin Buchholz. ## Copyright (C) 2001 Ben Wing. ## Authors: Martin Buchholz <martin@xemacs.org>, Ben Wing <ben@xemacs.org> ## Maintainer: Ben Wing <ben@xemacs.org> ## Current Version: 1.0, May 5, 2001 # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with XEmacs; see the file COPYING. If not, write to the Free # Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. eval 'exec perl -w -S $0 ${1+"$@"}' if 0; use strict; use FileHandle; use Carp; use Getopt::Long; use File::Basename; (my $myName = $0) =~ s@.*/@@; my $usage=" Usage: $myName [--help] [--backup-dir=DIR] [--line-mode] [--hunk-mode] PERLEXPR FILE ... Globally modify a file, either line by line or in one big hunk. Typical usage is like this: [with GNU print, GNU xargs: guaranteed to handle spaces, quotes, etc. in file names] find . -name '*.[ch]' -print0 | xargs -0 $0 's/\bCONST\b/const/g'\n [with non-GNU print, xargs] find . -name '*.[ch]' -print | xargs $0 's/\bCONST\b/const/g'\n The file is read in, either line by line (with --line-mode specified) or in one big hunk (with --hunk-mode specified; it's the default), and the Perl expression is then evalled with \$_ set to the line or hunk of text, including the terminating newline if there is one. It should destructively modify the value there, storing the changed result in \$_. Files in which any modifications are made are backed up to the directory specified using --backup-dir, or to `backup' by default. To disable this, use --backup-dir= with no argument. Hunk mode is the default because it is MUCH MUCH faster than line-by-line. Use line-by-line only when it matters, e.g. you want to do a replacement only once per line (the default without the `g' argument). Conversely, when using hunk mode, *ALWAYS* use `g'; otherwise, you will only make one replacement in the entire file! "; my %options = (); $Getopt::Long::ignorecase = 0; &GetOptions ( \%options, 'help', 'backup-dir=s', 'line-mode', 'hunk-mode', ); die $usage if $options{"help"} or @ARGV <= 1; my $code = shift; die $usage if grep (-d || ! -w, @ARGV); sub SafeOpen { open ((my $fh = new FileHandle), $_[0]); confess "Can't open $_[0]: $!" if ! defined $fh; return $fh; } sub SafeClose { close $_[0] or confess "Can't close $_[0]: $!"; } sub FileContents { my $fh = SafeOpen ("< $_[0]"); my $olddollarslash = $/; local $/ = undef; my $contents = <$fh>; $/ = $olddollarslash; return $contents; } sub WriteStringToFile { my $fh = SafeOpen ("> $_[0]"); binmode $fh; print $fh $_[1] or confess "$_[0]: $!\n"; SafeClose $fh; } foreach my $file (@ARGV) { my $changed_p = 0; my $new_contents = ""; if ($options{"line-mode"}) { my $fh = SafeOpen $file; while (<$fh>) { my $save_line = $_; eval $code; $changed_p = 1 if $save_line ne $_; $new_contents .= $_; } } else { my $orig_contents = $_ = FileContents $file; eval $code; if ($_ ne $orig_contents) { $changed_p = 1; $new_contents = $_; } } if ($changed_p) { my $backdir = $options{"backup-dir"}; $backdir = "backup" if !defined ($backdir); if ($backdir) { my ($name, $path, $suffix) = fileparse ($file, ""); my $backfulldir = $path . $backdir; my $backfile = "$backfulldir/$name"; mkdir $backfulldir, 0755 unless -d $backfulldir; print "modifying $file (original saved in $backfile)\n"; rename $file, $backfile; } WriteStringToFile ($file, $new_contents); } } ----------------------------------- cut ------------------------------------ In addition to those programs, I needed to fix up a few other things, particularly relating to the duplicate definitions of types, now that some types merged with others. Specifically: 1. in lisp.h, removed duplicate declarations of Bytecount. The changed code should now look like this: (In each code snippet below, the first and last lines are the same as the original, as are all lines outside of those lines. That allows you to locate the section to be replaced, and replace the stuff in that section, verifying that there isn't anything new added that would need to be kept.) --------------------------------- snip ------------------------------------- /* Counts of bytes or chars */ typedef EMACS_INT Bytecount; typedef EMACS_INT Charcount; /* Counts of elements */ typedef EMACS_INT Elemcount; /* Hash codes */ typedef unsigned long Hashcode; /* ------------------------ dynamic arrays ------------------- */ --------------------------------- snip ------------------------------------- 2. in lstream.h, removed duplicate declaration of Bytecount. Rewrote the comment about this type. The changed code should now look like this: --------------------------------- snip ------------------------------------- #endif /* The have been some arguments over the what the type should be that specifies a count of bytes in a data block to be written out or read in, using Lstream_read(), Lstream_write(), and related functions. Originally it was long, which worked fine; Martin "corrected" these to size_t and ssize_t on the grounds that this is theoretically cleaner and is in keeping with the C standards. Unfortunately, this practice is horribly error-prone due to design flaws in the way that mixed signed/unsigned arithmetic happens. In fact, by doing this change, Martin introduced a subtle but fatal error that caused the operation of sending large mail messages to the SMTP server under Windows to fail. By putting all values back to be signed, avoiding any signed/unsigned mixing, the bug immediately went away. The type then in use was Lstream_Data_Count, so that it be reverted cleanly if a vote came to that. Now it is Bytecount. Some earlier comments about why the type must be signed: This MUST BE SIGNED, since it also is used in functions that return the number of bytes actually read to or written from in an operation, and these functions can return -1 to signal error. Note that the standard Unix read() and write() functions define the count going in as a size_t, which is UNSIGNED, and the count going out as an ssize_t, which is SIGNED. This is a horrible design flaw. Not only is it highly likely to lead to logic errors when a -1 gets interpreted as a large positive number, but operations are bound to fail in all sorts of horrible ways when a number in the upper-half of the size_t range is passed in -- this number is unrepresentable as an ssize_t, so code that checks to see how many bytes are actually written (which is mandatory if you are dealing with certain types of devices) will get completely screwed up. --ben */ typedef enum lstream_buffering --------------------------------- snip ------------------------------------- 3. in dumper.c, there are four places, all inside of switch() statements, where XD_BYTECOUNT appears twice as a case tag. In each case, the two case blocks contain identical code, and you should *REMOVE THE SECOND* and leave the first.
author ben
date Thu, 20 Sep 2001 06:31:11 +0000
parents 3e13cd716cff
children eba92770173a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
623
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
1 This directory tree holds version 21.5 of XEmacs.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
2
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
3
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
4
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
5 *** What is XEmacs?
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
6
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
7 XEmacs is a powerful, highly customizable open source text editor and
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
8 application development system, with full GUI support. It is protected
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
9 under the GNU Public License and related to other versions of Emacs, in
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
10 particular GNU Emacs. Its emphasis is on modern graphical user
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
11 interface support and an open software development model, similar to
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
12 Linux. XEmacs has an active development community numbering in the
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
13 hundreds (and thousands of active beta testers on top of this), and runs
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
14 on all versions of MS Windows, on Linux, and on nearly every other
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
15 version of Unix in existence. Support for XEmacs has been supplied by
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
16 Sun Microsystems, University of Illinois, Lucid, ETL/Electrotechnical
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
17 Laboratory, Amdahl Corporation, BeOpen, and others, as well as the
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
18 unpaid time of a great number of individual developers.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
19
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
20
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
21
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
22 *** What platforms does it run on?
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
23
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
24 -- MS Windows (It has been tested on NT, 2000, 95, 98, and ME; you
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
25 can also compile Cygwin and MinGW versions.)
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
26 -- Unix (It is regularly tested on Linux, Solaris, SunOS, HP/UX,
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
27 FreeBSD, OpenBSD, BSD/OS aka BSDI, Tru64 aka DEC/OSF, SCO5,
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
28 and probably others. It should work on all versions of Unix
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
29 created in the last 10 years or so, perhaps with a bit of
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
30 work on more obscure platforms to correct bit-rot. It uses
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
31 a sophisticated configuration system to auto-detect zillions
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
32 of features that are implemented differently in different
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
33 versions of Unix, so it will probably work on your vendor's
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
34 version, possibly with a bit of tweaking, even if we've
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
35 never heard of it.)
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
36 -- MacOS/X (As an X Windows application. Unfortunately there is no
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
37 support currently for MacOS-specific features.)
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
38
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
39 There is also a port of XEmacs 19.14 (an older version, circa 1996)
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
40 for all versions of MacOS, with extensive support for MacOS-specific
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
41 features. See the FAQ for more details.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
42
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
43 There are rumors of an in-progress port to OS/2. See the FAQ.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
44
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
45 XEmacs will probably never work on MS/DOS or Windows 3.1, and we're
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
46 not particularly interested in patches for these platforms, as they
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
47 would introduce huge amounts of code clutter due to the woefully
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
48 underfeatured nature of these systems. (See GNU Emacs for a port to
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
49 MS/DOS.)
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
50
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
51
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
52
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
53 *** Where's the FAQ?
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
54
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
55 Look at `man/xemacs-faq.texi'.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
56
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
57 For the very latest version, see
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
58 http://cvs.xemacs.org/cgi-bin/cvswebxe/xemacs/man/xemacs-faq.texi.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
59
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
60
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
61
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
62 *** Where's the latest version?
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
63
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
64 For up-to-date information on XEmacs, see http://www.xemacs.org.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
65
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
66 To download XEmacs, see http://ftp.xemacs.org/ or
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
67 ftp://ftp.xemacs.org/pub/xemacs/.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
68
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
69 For the latest experimental sources, see http://cvs.xemacs.org/, which
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
70 gives instructions on how to get started with CVS access.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
71
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
72 There are numerous mailing lists for discussion of XEmacs. The
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
73 current description of these lists can be found at
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
74 http://www.xemacs.org/Lists/, or see `etc/MAILINGLISTS'. General
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
75 discussion of bugs, new features, etc. takes place on
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
76 xemacs-beta@xemacs.org.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
77
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
78
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
79
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
80 *** How do I build and install XEmacs?
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 See the file `etc/NEWS' for information on new features and other
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 user-visible changes since the last version of XEmacs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84
253
157b30c96d03 Import from CVS: tag r20-5b25
cvs
parents: 227
diff changeset
85 The file `INSTALL' in this directory says how to bring up XEmacs on
157b30c96d03 Import from CVS: tag r20-5b25
cvs
parents: 227
diff changeset
86 Unix and Cygwin, once you have loaded the entire subtree of this
157b30c96d03 Import from CVS: tag r20-5b25
cvs
parents: 227
diff changeset
87 directory.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88
253
157b30c96d03 Import from CVS: tag r20-5b25
cvs
parents: 227
diff changeset
89 See the file `nt/README' for instructions on building XEmacs for
157b30c96d03 Import from CVS: tag r20-5b25
cvs
parents: 227
diff changeset
90 Microsoft Windows.
157b30c96d03 Import from CVS: tag r20-5b25
cvs
parents: 227
diff changeset
91
424
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents: 412
diff changeset
92 The file 'README.packages' will guide you in the installation of
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents: 412
diff changeset
93 (essential) add on packages.
11054d720c21 Import from CVS: tag r21-2-20
cvs
parents: 412
diff changeset
94
623
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
95
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
96
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
97 *** How do I deal with bugs or with problems building, installing, or running?
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
98
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
99 The file `PROBLEMS' contains information on many common problems that
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
100 occur in building, installing and running XEmacs.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
101
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
102 Reports of bugs in XEmacs should be sent to xemacs-beta@xemacs.org.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
103 You can also post to the newsgroup comp.emacs.xemacs (or equivalentlt,
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
104 send to the mailing list xemacs@xemacs.org), but it is less likely
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
105 that the developers will see it in a timely fashion. See the "Bugs"
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
106 section of the XEmacs manual for more information on how to report
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
107 bugs. (The file `BUGS' in this directory explains how you can find
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
108 and read that section using the Info files that come with XEmacs.)
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
109 See `etc/MAILINGLISTS' for more information on mailing lists relating
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
110 to XEmacs.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
111
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
112
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
113 *** What's the basic layout of the code?
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
115 The file `configure' is a shell script to acclimate XEmacs to the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
116 oddities of your processor and operating system. It will create a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 file named `Makefile' (a script for the `make' program), which helps
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
118 automate the process of building and installing emacs. See INSTALL
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
119 for more detailed information.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
120
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121 The file `configure.in' is the input used by the autoconf program to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
122 construct the `configure' script. Since XEmacs has configuration
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123 requirements that autoconf can't meet, `configure.in' uses an unholy
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124 marriage of custom-baked configuration code and autoconf macros; it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125 may be wise to avoid rebuilding `configure' from `configure.in' when
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126 possible.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
127
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
128 The file `Makefile.in' is a template used by `configure' to create
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 `Makefile'.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
130
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
131 There are several subdirectories:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
132
623
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
133 `src' holds the C code for XEmacs (the XEmacs Lisp interpreter and its
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
134 primitives, the redisplay code, and some basic editing functions).
623
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
135 `lisp' holds the XEmacs Lisp code for XEmacs (most everything else).
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
136 `lib-src' holds the source code for some utility programs for use by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
137 or with XEmacs, like movemail and etags.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
138 `etc' holds miscellaneous architecture-independent data files
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
139 XEmacs uses, like the tutorial text and the Zippy the Pinhead quote
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
140 database. The contents of the `lisp', `info' and `man'
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
141 subdirectories are architecture-independent too.
623
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
142 `lwlib' holds the C code for the X toolkit objects used by XEmacs.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
143 `info' holds the Info documentation tree for XEmacs.
623
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
144 `man' holds the source code for the XEmacs online documentation.
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
145 `nt' holds files used compiling XEmacs under Microsoft Windows.