annotate README @ 814:a634e3b7acc8

[xemacs-hg @ 2002-04-14 12:41:59 by ben] latest changes TODO.ben-mule-21-5: Update. make-docfile.c: Add basic support for handling ISO 2022 doc strings -- we parse the basic charset designation sequences so we know whether we're in ASCII and have to pay attention to end quotes and such. Reformat code according to coding standards. abbrev.el: Add `global-abbrev-mode', which turns on or off abbrev-mode in all buffers. Added `defining-abbrev-turns-on-abbrev-mode' -- if non-nil, defining an abbrev through an interactive function will automatically turn on abbrev-mode, either globally or locally depending on the command. This is the "what you'd expect" behavior. indent.el: general function for indenting a balanced expression in a mode-correct way. Works similar to indent-region in that a mode can specify a specific command to do the whole operation; if not, figure out the region using forward-sexp and indent each line using indent-according-to-mode. keydefs.el: Removed. Modify M-C-backslash to do indent-region-or-balanced-expression. Make S-Tab just insert a TAB char, like it's meant to do. make-docfile.el: Now that we're using the call-process-in-lisp, we need to load an extra file win32-native.el because we're running a bare temacs. menubar-items.el: Totally redo the Cmds menu so that most used commands appear directly on the menu and less used commands appear in submenus. The old way may have been very pretty, but rather impractical. process.el: Under Windows, don't ever use old-call-process-internal, even in batch mode. We can do processes in batch mode. subr.el: Someone recoded truncate-string-to-width, saying "the FSF version is too complicated and does lots of hard-to-understand stuff" but the resulting recoded version was *totally* wrong! it misunderstood the basic point of this function, which is work in *columns* not chars. i dumped ours and copied the version from FSF 21.1. Also added truncate-string-with-continuation-dots, since this idiom is used often. config.inc.samp, xemacs.mak: Separate out debug and optimize flags. Remove all vestiges of USE_MINIMAL_TAGBITS, USE_INDEXED_LRECORD_IMPLEMENTATION, and GUNG_HO, since those ifdefs have long been removed. Make error-checking support actually work. Some rearrangement of config.inc.samp to make it more logical. Remove callproc.c and ntproc.c from xemacs.mak, no longer used. Make pdump the default. lisp.h: Add support for strong type-checking of Bytecount, Bytebpos, Charcount, Charbpos, and others, by making them classes, overloading the operators to provide integer-like operation and carefully controlling what operations are allowed. Not currently enabled in C++ builds because there are still a number of compile errors, and it won't really work till we merge in my "8-bit-Mule" workspace, in which I make use of the new types Charxpos, Bytexpos, Memxpos, representing a "position" either in a buffer or a string. (This is especially important in the extent code.) abbrev.c, alloc.c, eval.c, buffer.c, buffer.h, editfns.c, fns.c, text.h: Warning fixes, some of them related to new C++ strict type checking of Bytecount, Charbpos, etc. dired.c: Caught an actual error due to strong type checking -- char len being passed when should be byte len. alloc.c, backtrace.h, bytecode.c, bytecode.h, eval.c, sysdep.c: Further optimize Ffuncall: -- process arg list at compiled-function creation time, converting into an array for extra-quick access at funcall time. -- rewrite funcall_compiled_function to use it, and inline this function. -- change the order of check for magic stuff in SPECBIND_FAST_UNSAFE to be faster. -- move the check for need to garbage collect into the allocation code, so only a single flag needs to be checked in funcall. buffer.c, symbols.c: add debug funs to check on mule optimization info in buffers and strings. eval.c, emacs.c, text.c, regex.c, scrollbar-msw.c, search.c: Fix evil crashes due to eistrings not properly reinitialized under pdump. Redo a bit some of the init routines; convert some complex_vars_of() into simple vars_of(), because they didn't need complex processing. callproc.c, emacs.c, event-stream.c, nt.c, process.c, process.h, sysdep.c, sysdep.h, syssignal.h, syswindows.h, ntproc.c: Delete. Hallelujah, praise the Lord, there is no god but Allah!!! fix so that processes can be invoked in bare temacs -- thereby eliminating any need for callproc.c. (currently only eliminated under NT.) remove all crufty and unnecessary old process code in ntproc.c and elsewhere. move non-callproc-specific stuff (mostly environment) into process.c, so callproc.c can be left out under NT. console-tty.c, doc.c, file-coding.c, file-coding.h, lstream.c, lstream.h: fix doc string handling so it works with Japanese, etc docs. change handling of "character mode" so callers don't have to manually set it (quite error-prone). event-msw.c: spacing fixes. lread.c: eliminate unused crufty vintage-19 "FSF defun hack" code. lrecord.h: improve pdump description docs. buffer.c, ntheap.c, unexnt.c, win32.c, emacs.c: Mule-ize some unexec and startup code. It was pseudo-Mule-ized before by simply always calling the ...A versions of functions, but that won't cut it -- eventually we want to be able to run properly even if XEmacs has been installed in a Japanese directory. (The current problem is the timing of the loading of the Unicode tables; this will eventually be fixed.) Go through and fix various other places where the code was not Mule-clean. Provide a function mswindows_get_module_file_name() to get our own name without resort to PATH_MAX and such. Add a big comment in main() about the problem with Unicode table load timing that I just alluded to. emacs.c: When error-checking is enabled (interpreted as "user is developing XEmacs"), don't ask user to "pause to read messages" when a fatal error has occurred, because it will wedge if we are in an inner modal loop (typically when a menu is popped up) and make us unable to get a useful stack trace in the debugger. text.c: Correct update_entirely_ascii_p_flag to actually work. lisp.h, symsinit.h: declarations for above changes.
author ben
date Sun, 14 Apr 2002 12:43:31 +0000
parents eba92770173a
children 715eed24e30e
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
781
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
113 *** How do I get started developing XEmacs?
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
114
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
115 First, get yourself set up under CVS so that you can access the CVS
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
116 repositories containing the XEmacs sources and the XEmacs packages.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
117
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
118 Next, set up your layout. This is important, as a good layout will
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
119 facilitate getting things done efficiently, while a bad layout will could
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
120 lead to disaster, as you can't figure out which code is the most recent,
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
121 which can be thrown away, etc. We suggest the following layout: (feel free
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
122 to make changes)
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
123
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
124 -- Everything goes under /src/xemacs (use a different directory if you
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
125 want). From now, instead of saying /src/xemacs, we use <xsrc-top>, to
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
126 make it easier in case someone picked a different directory.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
127
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
128 -- Package source is in <xsrc-top>/package-src.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
129
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
130 -- Installed packages go under <xsrc-top>/xemacs-packages, and
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
131 <xsrc-top>/mule-packages.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
132
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
133 -- A "workspace" is a complete copy of the sources, in which you do work of
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
134 a particular kind. Workspaces can be differentiated by which branch of
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
135 the source tree they extend off of -- usually either the stable or
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
136 experimental, unless other branches have been created (for example, Ben
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
137 created a branch for his Mule work because (1) the project was long-term
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
138 and involved an enormous number of changes, (2) people wanted to be able
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
139 to look at what his work in progress, and (3) he wanted to be able to
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
140 check things in and in general use source-code control, since it was a
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
141 long-term project). Workspaces are also differentiated in what their
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
142 purpose is -- general working workspace, workspace for particular
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
143 projects, workspace keeping the latest copy of the code in one of the
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
144 branches without mods, etc.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
145
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
146 -- Various workspaces are subdirectories under <xsrc-top>, e.g.:
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
147
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
148 -- <xsrc-top>/working (the workspace you're actively working on,
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
149 periodically synched up with the latest trunk)
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
150
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
151 -- <xsrc-top>/stable (for making changes to the stable version of
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
152 XEmacs, which sits on a branch)
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
153
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
154 -- <xsrc-top>/unsigned-removal (a workspace for a specific, difficult
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
155 task that's going to affect lots of source and take a long time, and
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
156 so best done in its own workspace without the interference of other
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
157 work you're doing. Also, you can commit just this one large change,
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
158 separate from all the other changes).
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
159
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
160 -- <xsrc-top>/latest (a copy of the latest sources on the trunk,
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
161 i.e. the experimental version of XEmacs, with no patches in it;
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
162 either update it periodically, by hand, or set up a cron job to do it
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
163 automatically). Set it up so it can be built, and build it so you
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
164 have a working XEmacs. (Building it might also go into the cron job.)
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
165
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
166 This workspace serves a number of purposes:
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
167 -- 1. You always have a recent version of XEmacs you can compare
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
168 against when something you're working on breaks. It's true
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
169 that you can do this with cvs diff, but when you need to do
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
170 some serious investigation, this method just fails.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
171 -- 2. You (almost) always have a working, up-to-date executable that
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
172 can be used when your executable is crashing and you need to
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
173 keep developing it, or when you need an `xemacs' to build
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
174 packages, etc.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
175 -- 3. When creating new workspaces, you can just copy the `latest'
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
176 workspace using GNU cp -a. You have all the .elc's built,
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
177 everything else probably configured, any spare files in place
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
178 (e.g. some annoying xpm.dll under Windows, etc.).
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
179
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
180 -- <xsrc-top>/latest-stable/ (equivalent to <xsrc-top>/latest/, but
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
181 for the Stable branch of XEmacs, rather than the Experimental branch
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
182 of XEmacs). This may or may not be necessary depending on how much
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
183 development you do of the stable branch.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
184
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
185 -- <xsrc-top>/xemacsweb is a workspace for working on the XEmacs web site.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
186
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
187 -- <xsrc-top>/in-patches for patches received from email and saved to files.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
188
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
189 -- <xsrc-top>/out-patches for locally-generated patches to be sent to
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
190 xemacs-patches@xemacs.org. Less useful now that the patcher util has been
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
191 developed.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
192
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
193 -- <xsrc-top>/build, for build trees when compiling and testing XEmacs with
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
194 various configuration options turned off and on. The scripts in
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
195 xemacs-builds/ben (see below) can be used to automate building XEmacs
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
196 workspaces with many different configuration options and automatically
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
197 filtering out the normal output so that you see only the abnormal
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
198 output.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
199
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
200 -- <xsrc-top>/xemacs-builds, for the xemacs-builds module, which you need
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
201 to check out separately in CVS. This contains scripts used for building
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
202 XEmacs, automating and simplifying using CVS, etc. Under various
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
203 people's directories are their own build and other scripts. The
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
204 currently most-maintained scripts are under ben/, where there are easily
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
205 configurable scripts that can be used to easily build any workspace
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
206 (esp. if you've more or less followed the layout presented above)
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
207 unattended, with one or more configuration states (there's a
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
208 pre-determined list of the most useful, but it's easy to change). The
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
209 output is filtered and split up in various ways so that you can identify
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
210 which output came from where, and you can see the output either full or
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
211 with all "normal" output except occasional status messages filtered so
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
212 that you only see the abnormal ones.
eba92770173a [xemacs-hg @ 2002-03-18 10:13:39 by ben]
ben
parents: 623
diff changeset
213
623
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
214 *** What's the basic layout of the code?
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
215
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
216 The file `configure' is a shell script to acclimate XEmacs to the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
217 oddities of your processor and operating system. It will create a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
218 file named `Makefile' (a script for the `make' program), which helps
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
219 automate the process of building and installing emacs. See INSTALL
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
220 for more detailed information.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
221
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
222 The file `configure.in' is the input used by the autoconf program to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
223 construct the `configure' script. Since XEmacs has configuration
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
224 requirements that autoconf can't meet, `configure.in' uses an unholy
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
225 marriage of custom-baked configuration code and autoconf macros; it
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
226 may be wise to avoid rebuilding `configure' from `configure.in' when
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
227 possible.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
228
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
229 The file `Makefile.in' is a template used by `configure' to create
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
230 `Makefile'.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
231
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
232 There are several subdirectories:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
233
623
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
234 `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
235 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
236 `lisp' holds the XEmacs Lisp code for XEmacs (most everything else).
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
237 `lib-src' holds the source code for some utility programs for use by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
238 or with XEmacs, like movemail and etags.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
239 `etc' holds miscellaneous architecture-independent data files
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
240 XEmacs uses, like the tutorial text and the Zippy the Pinhead quote
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
241 database. The contents of the `lisp', `info' and `man'
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
242 subdirectories are architecture-independent too.
623
3e13cd716cff [xemacs-hg @ 2001-06-22 01:51:40 by ben]
ben
parents: 434
diff changeset
243 `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
244 `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
245 `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
246 `nt' holds files used compiling XEmacs under Microsoft Windows.