|
|
1.1 ! root 1: This file describes the standard distribution for the emacs editor. ! 2: The file contains instructions for compiling, a list of associated ! 3: software and files, and additional information for people with ! 4: special problems, like porting to odd machine types or using odd ! 5: operating systems. ! 6: ! 7: Anyone who is trying to maintain a copy of EMACS should send his ! 8: name, address, machine name, and login name to me: ! 9: ! 10: Warren Montgomery ! 11: IH 6C-501 ! 12: ! 13: (ihesa!warren or ihnss!warren) ! 14: ! 15: I will try to distribute news of interest about new versions or ! 16: features to anyone who is maintaining a copy ! 17: ! 18: COMPILATION AND INSTALLATION: ! 19: ! 20: The first step is to move all of the files into the directory that ! 21: you intend to keep the source in. Do this now if you haven't. ! 22: ! 23: The first line of the makefile describes any installation dependent ! 24: parameters needed to compile emacs. You will need to set the type ! 25: of system that you are compiling for now. You may want to set ! 26: other parameter as well, as described later in the text, but you ! 27: should be able to compile with just this option set. ! 28: ! 29: -Dux3: Set this option if you are compiling for any AT&T Unix ! 30: system released after 1980. (USG 3.0 or greater, system ! 31: III or greater, or version 7). If you have an older version ! 32: (version 6, PWB unix, USG 2.0 or 1.2), omit this option. ! 33: ! 34: -Dbsd: Set this when compiling for Berkeley unix (4.X bsd). ! 35: Depending on which version you compile for, you may get an ! 36: error in not being able to find one of the include files. ! 37: If you do, just change the pathname of the include file to ! 38: wherever it lives on your system and recompile. -Dbsd ! 39: should set it up for any Berkeley system of recent release). ! 40: ! 41: As distributed, emacs assumes 4.2BSD, with the select and ! 42: cbreak mechanisms appropriate to 4.2. If your system does ! 43: not have these, change the defines near the front of ! 44: emacs_io.c that set up SELECT, FLIM, and CBRAKE. ! 45: ! 46: The primary effect of these two options is to specify what kind of ! 47: terminal I/O control mechanism to use. If it is not set ! 48: correctly, emacs may not respond immediately to typed ! 49: characters (it may wait for 16 characters to be typed before ! 50: responding). ! 51: ! 52: -Du370 and -Duts: If you are compiling for unix/370 or amdahl uts, ! 53: set one of these, which affect the terminal initialization ! 54: code and some buffer size limits. ! 55: ! 56: -DTERMCAP or -DTERMINFO: If you have a termcap or terminfo system ! 57: installed, emacs can be compiled to use it. You must add ! 58: the appropriate library to the makefile entry for "xemacs" ! 59: before compiling. If neither of these options are set, ! 60: emacs will compile for it's own terminal support. ! 61: ! 62: -DPORTEXT: Set this flag when compiling with a compiler that does ! 63: not allocate external variables in the order in which they ! 64: are designed. This flag is set automatically when compiling ! 65: for uts or unix/370, but may need to be set manually if ! 66: needed on other machines ! 67: ! 68: To make a copy of emacs, just type make. The makefile will make ! 69: emacs, putting the result in a file called xemacs. EMACS requires ! 70: several files while running for its error messages, help ! 71: explanations, and statistics. These are kept in a directory known ! 72: as the emacs library. By default, this is the ! 73: directory in which emacs was made. You should make xemacs at least ! 74: once this way to test it. After you are satisfied with it, you can ! 75: cause the new versions of emacs, dired, and ecomp to be installed by ! 76: editing the makefile. Change the definitions of BINDIR and LIBDIR ! 77: to specify where you want the executable files to be put and where ! 78: you want the emacs library files to be put and type "make install". ! 79: This will cause some of the files to be recompiled in order to ! 80: accommodate the change in the library location, and will cause all of ! 81: the resulting objects to be moved to BINDIR and the support files ! 82: installed in LIBDIR. The pathname of LIBDIR is kept in the file ! 83: "terminals.x". ! 84: ! 85: TROUBLESHOOTING: ! 86: ! 87: If emacs won't make or doesn't behave as you think it should, there ! 88: is a primitive "expert system" that diagnoses common problems ! 89: included in this distribution. This system will ask you questions ! 90: about your installation of emacs and give suggestions on what you ! 91: can do to correct the problem. To use it, first make "hyde" ! 92: (HYpothesis Driven Expert). (If the make file won't run, just run ! 93: cc -o hyde hyde.c.) Once you have hyde built, you use it by ! 94: invoking "hyde kbase". Hyde will ask questions about your ! 95: installation. In general, it will present a series of statements, ! 96: each with numbers, and you respond by indicating all of the numbers ! 97: that apply to your situation. ! 98: ! 99: Hyde is a crude tool, capable only of diagnosing the common problems ! 100: that I have anticipated (or debugged for others) and put in it's ! 101: knowledge base. It may, however, save a lot of time in pointing up ! 102: things that you may have overlooked. ! 103: ! 104: OTHER FILES AND UTILITIES: ! 105: ! 106: EMACS can keep statistics on how it is being used and write these to a ! 107: file called s<version> (where <version> is the version number) in ! 108: the emacs library. If you want statistics, create such a file (such ! 109: as s4.7) in the emacs library give read and write access to ! 110: everybody. EMACS will produce one line of numbers for each ! 111: invocation, which can be processed with stat_proc. ! 112: ! 113: In addition to building xemacs, the makefile will build "ecomp" ! 114: which is the emacs macro compiler. It can be used to compile EML ! 115: programs into macros for emacs, and should be placed wherever you put ! 116: the emacs binary. Ecomp depends on the file "emacs_defs" to define ! 117: the macro language. This file should be kept in the emacs library. ! 118: (All of this is done automatically by making "install") ! 119: ! 120: The utility programs stat_proc.c and see_it.c have been sent along ! 121: with the EMACS sources. Both simply require compilation. stat_proc ! 122: processes the statistics file. Invoked with the name of the file to ! 123: crunch, it produces a summary, and a list of users and the number of ! 124: times each invoked EMACS. Invoked with a user name as the second ! 125: parameter, statistics for that user alone are given. If a - is ! 126: given as the second parameter, one summary is produced for each user. ! 127: ! 128: see_it works like cat, but translates non-ascii and control ! 129: characters into multi-character sequences, like EMACS. Thus the ! 130: character 201(octal) in the input would produce M-^A in the output. ! 131: Normally, all control characters except newline are translated. If ! 132: the -t option is given, tabs will also pass untranslated. ! 133: ! 134: Emacs_vt.c is a collection of screen manipulation routines based on ! 135: emacs. The makefile entry for emacs_vt.o will compile it, and the ! 136: mm source file emacs_vt.mm gives instructions for its use. ! 137: ! 138: Xusend.c is a write-around for a mis-feature of the usend file ! 139: sending command. It segments a list of files to avoid over running ! 140: the byte count limit of usend. Use should be self-explanatory. ! 141: ! 142: The cpio archive files MACROS and MACRO_SOURCE contain a collection ! 143: of sample macros that do various things. Macros for which source ! 144: code exists are distributed in MACRO_SOURCE. object code for all ! 145: macros is in MACROS. These will be automatically extracted into a ! 146: macros directory when you run the makefile. Most contain some ! 147: limited documentation in addition to that available from the help ! 148: command help. The file CATALOG in the macro library summarizes what ! 149: is available. ! 150: ! 151: The cpio archive file TERMINALS contains the terminal support ! 152: description files. When you first make emacs, a directory ! 153: "terminals" will be created and the terminal descriptions will be ! 154: loaded into it. You may wish to change some of the entries, or add ! 155: your own, depending on the terminals used on your machine and the ! 156: naming conventions for terminals. ! 157: ! 158: The file term_support contains a description of the terminal ! 159: description files, and instructions for adding support for a new terminal. ! 160: ! 161: The file hyde.c is a crude expert system inference engine used for ! 162: the troubleshooter. The kbase is it's knowledge base which ! 163: describes the specific problems in emacs. ! 164: ! 165: SPECIAL INSTRUCTIONS FOR SPECIAL SITUATIONS: ! 166: ! 167: PORTABILITY: ! 168: ! 169: EMACS should be portable to a different machine with relatively ! 170: little effort. Parts of it depend on a Unix environment, and parts ! 171: have been optimized to allow it to work in a 64K byte address space, ! 172: but most code is quite portable. Known points of ! 173: machine dependence are: ! 174: ! 175: The makefile unpacks several archives. These are in ascii ! 176: (-c) cpio format and should be portable to any unix system ! 177: having cpio. ! 178: ! 179: Several functions taking variable arguments depend on the ! 180: PDP-11 argument passing convention of storing the arguments ! 181: to a function consecutively on the stack. ! 182: ! 183: EMACS allocates storage above the end of its data area (the ! 184: symbol _end) by calling sbrk() directly to allocate more ! 185: space there. You cannot add code to emacs that calls on ! 186: malloc() or other dynamic storage allocators that call brk ! 187: or sbrk without modifying emacs. ! 188: ! 189: The normal terminal support code depends on types ! 190: (int) and (char *) occupying the same physical ! 191: space, and on external symbols being allocated consecutive ! 192: storage locations in the order in which they are declared. ! 193: This is true of most implementations of UNIX. Setting the ! 194: "PORTEXT" flag will eliminate this dependency with some loss ! 195: of speed on start-up and some expansion of the code. ! 196: ! 197: You may get some type clash warnings from some versions of the ! 198: C compiler. As long as they are all warnings, there ! 199: is no problem. ! 200: ! 201: SYSTEM INFORMATION: ! 202: ! 203: EMACS consumes lots of disk space for holding the buffer files and ! 204: the text in the kill stack. Currently, this is allocated in /tmp. ! 205: If space is scarce there, you can change the pathnames of the ! 206: temporary files by changing the definition of BTEMPATH in ! 207: emacs_buf.h, or by setting -DBTEMPATH=\"/wherever/tmp\" in the ! 208: VFLAGS line of the makefile. ! 209: ! 210: If your system has the termcap database installed, you ! 211: can use it instead of the internal ! 212: terminal support. You must set "-DTERMCAP" in the VFLAGS parameter, ! 213: and modify the makefile entry for xemacs so that the final load is ! 214: done with the library containing the termcap access routines. I do ! 215: not guarantee that every termcap supported terminal will work ! 216: optimally, since some of the parameters are not the same, however ! 217: most if not all should work acceptably. ! 218: ! 219: If you have the terminfo system, you can compile emacs to use it with ! 220: "-DTERMINFO". The makefile must be modified to include "-lcurses" ! 221: in the compilation entry for xemacs. Here are a couple of notes ! 222: about the terminfo/curses version: ! 223: ! 224: 1) If you have a version of the curses package compiled for a ! 225: single terminal (-DSINGLE), use it, as emacs needs only one ! 226: terminal and this compiles somewhat more compact and ! 227: efficient code. ! 228: ! 229: 2) In order to avoid dynamic memory allocation, emacs fiddles ! 230: with the cur_term structure, and is thus dependent on the ! 231: implementation of curses. If anything in the curses library ! 232: (or any other library) calls malloc() for dynamic memory ! 233: allocation, severe errors can result. If you suspect a ! 234: problem here, check it by looking for malloc in a name list ! 235: of functions loaded in xemacs. ! 236: ! 237: As distributed, emacs will time out input reads approximately every ! 238: 30 seconds to go and look for newly arrived mail and to update the ! 239: time display for time mode. The cost of this is that on a system ! 240: with little memory, it will force the emacs process to stay resident ! 241: or swap in frequently even if no input is entered. This can be ! 242: turned off by modifying the statement that sets the VMIN parameter ! 243: in emacs_io.c to set it to 1. instead of 0. ! 244: ! 245: The compilation parameter "MINFILES" controls the use of temporary ! 246: files. Without this parameter set, emacs keeps the data associated ! 247: with each buffer in a separate temporary file and keeps all of these ! 248: files open when running. On a heavily loaded unix system with a lot ! 249: of emacs users, this may result in overflowing the system "inode" or ! 250: file tables, which causes open(), pipe(), and other system calls ! 251: which open files to fail. Setting the parameter -DMINFILES in the ! 252: definition of VFLAGS causes emacs to only keep one of its temporary ! 253: files open at a time, thus reducing the use of inodes. Doing this ! 254: slows down emacs somewhat (for the time required to open and close ! 255: temporary files every time you switch buffers), and can cause ! 256: temporary files to be left in /tmp if emacs terminates abnormally. ! 257: Thus this setting is recommended only if your system has trouble ! 258: with file or inode table overflows. If you set it, watch for files ! 259: with names of the form em.buffer_number.process_id accumulating ! 260: in /tmp (or wherever you put the temporary files). ! 261: ! 262: Emacs will compile for most AT&T and Berkeley versions of unix. ! 263: There are some minor variations in functionality depending on what ! 264: version you pick. ! 265: ! 266: FUNCTION VARIATIONS ! 267: ! 268: display of time These update every 30 seconds on AT&T 3.0 or ! 269: and mail messages more recent, and on Berkeley systems with ! 270: select() (4.2bsd). ! 271: ! 272: flow_lim mode Works on AT&T 3.0 or more recent and ! 273: Berkeley systems with cbreak mode. On ! 274: Berkeley systems, this can consume some ! 275: extra cpu time. It is also more likely that ! 276: ^S or ^Q typed as commands will be ! 277: interpreted as flow control. This mode ! 278: should be used only when absolutely ! 279: necessary. ! 280: ! 281: Handling of BREAK: AT&T 3.0 or more recent and all Berkeley ! 282: unix with cbreak mode. ! 283: ! 284: ^@ (mark) command ^@ is a synonym for mark on AT&T systems, ! 285: but is not available on Berkeley unix ! 286: systems. ^@ will behave like break on ! 287: these. ! 288: ! 289: Sub-processes: Work on both AT&T and Berkeley unix. On ! 290: Berkeley unix, emacs will notice output from ! 291: the sub-process immediately, while on AT&T ! 292: systems there will be some delay. On ! 293: certain unix/370 or Amdahl systems with ! 294: front processors, there is a bug that ! 295: prevents timing out reads to the terminal, ! 296: and on these systems, emacs will not notice ! 297: output from the sub-process until you stop ! 298: typing. ! 299: ! 300: Suspension of emacs: Suspending emacs with the M-^Z command works ! 301: fine on Berkeley unix. On system V unix ! 302: running under "shl", you have to type an ! 303: extra ^Z to get it to suspend. ! 304: ! 305: A version of emacs is available to run on an IBM personal computer. ! 306: In order to prevent the massive unauthorized proliferation of copies ! 307: that occurred with the unix version of emacs, distribution is being ! 308: more carefully controlled. If you would like a copy, contact me by ! 309: unix mail to ihesa!warren. ! 310: ! 311: Running on a shared I&D space pdp-11: ! 312: ! 313: Because of growth in features and terminal support, fitting ! 314: emacs into a 64k address space is getting hard. To run ! 315: effectively, you will have to remove something. The main ! 316: effect of the limit is to limit the size of file (number of ! 317: lines) you can edit. Two bytes of data space are needed for ! 318: each line. Here are ! 319: some hints on things that don't matter very much that can be ! 320: removed without serious degradation. ! 321: ! 322: NSCRCOL: Changing NSCRCOL (emacs_disp.h) from 128 to 80 ! 323: saves over 1000 bytes, and has no impact unless you support ! 324: terminals with more than 80 columns of display. ! 325: ! 326: NBLOCK (emacs_gb.h) NBLOCK can be reduced from 16 to 2, saving ! 327: 512 bytes for each unit of reduction. Reducing it limits ! 328: the space available for macros, and thus the number of ! 329: macros that can be loaded. It also increases disk I/O somewhat. ! 330: ! 331: NBUF (emacs_buf.h) NBUF determines how many editor buffers ! 332: you can have. Reducing it saves about 150 bytes for each ! 333: one you get rid of. ! 334: ! 335: Time mode (functions dtime, tzset, localtime asctime, etc.) Getting ! 336: rid of all of the time mode related stuff will save about ! 337: 800 bytes. This is a seldom used feature. ! 338: ! 339: Statistics (functions statout & stats) These are seldom ! 340: used, and save about 300 bytes. ! 341: ! 342: M-". This command is almost never used, and saves ~300 bytes. ! 343: ! 344: insert/delete line and character. With a fast terminal, ! 345: these don't matter much, and getting rid of the code ! 346: (functions vadjust, lshift, rshift, and code to invoke them) ! 347: saves 800 bytes. ! 348: ! 349: Regular expressions. These are useful, but large (2000 bytes). ! 350: ! 351: Macros, very useful, but take a lot of code. ! 352: ! 353: Good luck! ! 354:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.