From 5483e97d616f1d057edccd2683b499bcf75c402a Mon Sep 17 00:00:00 2001 From: tomo Date: Wed, 14 Nov 2001 10:41:46 +0000 Subject: [PATCH] Sync up with r21-2-42. --- CHANGES-beta | 7 + ChangeLog | 48 ++- PROBLEMS | 93 +++-- etc/NEWS | 3 + info/emodules.info | 38 +-- info/internals.info | 303 ++++++++--------- info/internals.info-1 | 2 +- info/internals.info-2 | 2 +- info/internals.info-3 | 2 +- info/internals.info-4 | 2 +- info/internals.info-5 | 2 +- info/internals.info-6 | 2 +- info/internals.info-7 | 2 +- info/internals.info-8 | 266 +++++---------- info/internals.info-9 | 5 +- info/texinfo.info | 620 ++++++++++++++++----------------- info/texinfo.info-1 | 2 +- info/texinfo.info-10 | 2 +- info/texinfo.info-11 | 2 +- info/texinfo.info-12 | 2 +- info/texinfo.info-2 | 2 +- info/texinfo.info-3 | 2 +- info/texinfo.info-4 | 2 +- info/texinfo.info-5 | 2 +- info/texinfo.info-6 | 2 +- info/texinfo.info-7 | 2 +- info/texinfo.info-8 | 2 +- info/texinfo.info-9 | 2 +- info/xemacs-faq.info | 478 +++++++++++++------------- info/xemacs-faq.info-1 | 2 +- info/xemacs.info | 773 +++++++++++++++++++++--------------------- info/xemacs.info-1 | 3 +- info/xemacs.info-10 | 2 +- info/xemacs.info-11 | 2 +- info/xemacs.info-12 | 2 +- info/xemacs.info-13 | 2 +- info/xemacs.info-14 | 2 +- info/xemacs.info-15 | 2 +- info/xemacs.info-16 | 2 +- info/xemacs.info-17 | 2 +- info/xemacs.info-18 | 2 +- info/xemacs.info-19 | 2 +- info/xemacs.info-2 | 27 +- info/xemacs.info-20 | 2 +- info/xemacs.info-21 | 2 +- info/xemacs.info-22 | 2 +- info/xemacs.info-3 | 2 +- info/xemacs.info-4 | 2 +- info/xemacs.info-5 | 2 +- info/xemacs.info-6 | 2 +- info/xemacs.info-7 | 2 +- info/xemacs.info-8 | 2 +- info/xemacs.info-9 | 2 +- lib-src/ChangeLog | 4 + lisp/ChangeLog | 44 +++ lisp/gui.el | 15 +- lisp/menubar-items.el | 37 +- lisp/package-get.el | 5 +- lisp/package-net.el | 45 +-- lisp/package-ui.el | 2 + lisp/packages.el | 2 +- lisp/wid-edit.el | 33 +- lwlib/ChangeLog | 4 + man/ChangeLog | 21 +- man/internals/internals.texi | 90 ++++- man/xemacs-faq.texi | 4 +- man/xemacs/frame.texi | 48 ++- netinstall/ChangeLog | 13 +- netinstall/ini.h | 8 +- nt/ChangeLog | 4 + src/.dbxrc | 6 +- src/.gdbinit | 6 +- src/ChangeLog | 83 +++++ src/alloc.c | 259 +++++++------- src/console-x.h | 13 +- src/fns.c | 16 +- src/glyphs-msw.c | 24 +- src/glyphs-widget.c | 151 +++++---- src/glyphs-x.c | 6 + src/glyphs.c | 2 +- src/gui.c | 122 ++++++- src/gui.h | 12 +- src/lisp.h | 33 +- src/lrecord.h | 2 + src/opaque.h | 7 - tests/ChangeLog | 4 + version.sh | 4 +- 87 files changed, 2164 insertions(+), 1709 deletions(-) diff --git a/CHANGES-beta b/CHANGES-beta index f7ff2b8..e70e4b9 100644 --- a/CHANGES-beta +++ b/CHANGES-beta @@ -1,3 +1,10 @@ +to 21.2.42 "Poseidon" +-- 64-bit platforms (Alpha) broken in 21.2.41 now fixed -- Martin Buchholz +-- Windows packaging changes -- Andy Piper +-- Widget bug fixes -- Andy Piper +-- Modeline scrolling documented -- Didier Verna +-- C-level alignment hackery -- Martin Buchholz + to 21.2.41 "Polyhymnia" -- A very important fix to the byte-compiler was made. RE-BYTE-COMPILE all your .el files that were compiled by any older diff --git a/ChangeLog b/ChangeLog index 5237c5c..e6db7a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -32,6 +32,28 @@ * configure.in: Add new option `--with-utf-2000'; define `UTF2000' if it is specified. +2001-01-20 Martin Buchholz + + * XEmacs 21.2.42 "Poseidon" is released. + +2001-01-18 Martin Buchholz + + * PROBLEMS (Sun/Solaris): Yet another microimprovement. + +2001-01-17 Martin Buchholz + + * PROBLEMS (Sun/Solaris): Replace --with-gnu-ld=no with + --with-ld=/usr/ccs/bin/ld + +2001-01-16 Robert Pluim + + * PROBLEMS (SunOS/Solaris): Document workaround for GNU ld bug on + Solaris. Half mine, half Raymond Toy, half Martin Buchholz. + +2001-01-16 Didier Verna + + * NEWS: document the modeline horizontal scrolling feature. + 2001-01-17 Martin Buchholz * XEmacs 21.2.41 "Polyhymnia" is released. @@ -143,7 +165,7 @@ 2000-10-10 Martin Buchholz - * configure.in: + * configure.in: Use stropts.h, not sys/stropts.h. Use strtio.h, not sys/strtio.h. @@ -258,21 +280,21 @@ 2000-07-12 Martin Buchholz - * configure.in: + * configure.in: Make sure Unix98 socklen_t is defined. Use ANSI C mode `-std1' with DEC C instead of `-std'. 2000-07-09 Martin Buchholz - * configure.in: + * configure.in: Replace SMART_INCLUDE with a dumber, but more reliable method. 2000-07-10 Martin Buchholz - * modules/zlib/Makefile: - * modules/sample/Makefile: - * modules/ldap/Makefile: - * modules/base64/Makefile: - * Makefile.in.in: + * modules/zlib/Makefile: + * modules/sample/Makefile: + * modules/ldap/Makefile: + * modules/base64/Makefile: + * Makefile.in.in: rm -f ==> $(RM) define SHELL=/bin/sh @@ -295,12 +317,12 @@ 2000-07-08 Ben Wing * configure.in: add -lcomdlg32 for cygwin. - + 2000-07-05 Craig Lanning * aclocal.m4 (can_build_shared): First pass at module support for cygwin and mingw. - + * configure: * configure (xe_check_libs): * configure (acfindx): @@ -405,11 +427,11 @@ 2000-04-19 Martin Buchholz - * configure.in: + * configure.in: * src/config.h.in: Rewrite SMART_INCLUDE implementation to actually work. Be paranoid - Avoid use of spaces in these macro definitions. - Leave alloca() definition at start of compilation unit, + Leave alloca() definition at start of compilation unit, as AIX requests. Rename SMART_INCLUDE_MACRO to SMART_INCLUDE_INDIRECTIONS. @@ -436,7 +458,7 @@ * xemacs/configure.in: Do a normal link when compiling with --pdump. Don't try compiling an unexec object file. - + 2000-03-27 Didier Verna * configure.in: reorganize the output by topic. diff --git a/PROBLEMS b/PROBLEMS index 4c5d43d..dab9c7c 100644 --- a/PROBLEMS +++ b/PROBLEMS @@ -187,6 +187,37 @@ Valdis.Kletnieks@vt.edu writes: ** SunOS/Solaris +*** Dumping error when using GNU binutils / GNU ld on a Sun. + +Errors similar to the following: + + Dumping under the name xemacs unexec(): + dldump(/space/rpluim/xemacs-obj/src/xemacs): ld.so.1: ./temacs: + fatal: /space/rpluim/xemacs-obj/src/xemacs: unknown dynamic entry: + 1879048176 + +are caused by using GNU ld. There are several workarounds available: + +In XEmacs 21.2 or later, configure using the new portable dumper +(--pdump). + +Alternatively, you can link using the Sun version of ld, which is +normally held in /usr/ccs/bin. This can be done by one of: + +- building gcc with these configure flags: + configure --with-ld=/usr/ccs/bin/ld --with-as=/usr/ccs/bin/as + +- adding -B/usr/ccs/bin/ to CFLAGS used to configure XEmacs + (Note: The trailing '/' there is significant.) + +- uninstalling GNU ld. + +The Solaris2 FAQ claims: + + When you install gcc, don't make the mistake of installing + GNU binutils or GNU libc, they are not as capable as their + counterparts you get with Solaris 2.x. + *** Link failure when using acc on a Sun. To use acc, you need additional options just before the libraries, such as @@ -208,7 +239,7 @@ it to `/usr/openwin'. There have been reports of Sun sed truncating very lines in the Makefile during configuration. The workaround is to use GNU sed or, -even better, think of a better way to generate Makefile, and send us a +even better, think of a better way to generate Makefile, and send us a patch. :-) *** On Solaris 2 I get undefined symbols from libcurses.a. @@ -230,7 +261,7 @@ This only occurs if you have LANG != C. This is a known bug with bash, as a workaround. *** On SunOS, you get linker errors - ld: Undefined symbol + ld: Undefined symbol _get_wmShellWidgetClass _get_applicationShellWidgetClass @@ -254,7 +285,7 @@ extensions to X11R5 are installed. *** On a Sun running SunOS 4.1.1, you get this error message from GNU ld: - /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment + /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment The problem is in the Sun shared C library, not in GNU ld. @@ -263,7 +294,7 @@ The solution is to install Patch-ID# 100267-03 from Sun. *** SunOS 4.1.2: undefined symbol _get_wmShellWidgetClass Apparently the version of libXmu.so.a that Sun ships is hosed: it's missing - some stuff that is in libXmu.a (the static version). Sun has a patch for + some stuff that is in libXmu.a (the static version). Sun has a patch for this, but a workaround is to use the static version of libXmu, by changing the link command from "-lXmu" to "-Bstatic -lXmu -Bdynamic". If you have OpenWindows 3.0, ask Sun for these patches: @@ -314,7 +345,7 @@ There are a couple of problems [with use of -rpath with Irix ld], though: 1. The ld in IRIX 5.3 ignores all but the last -rpath spec, so the patched configure spits out a warning if --x-libraries or --site-runtime-libraries are - specified under irix 5.x, and it only adds -rpath + specified under irix 5.x, and it only adds -rpath entries for the --site-runtime-libraries. This bug was fixed sometime between 5.3 and 6.2. @@ -420,7 +451,7 @@ Marcus Thiessel This might be a sed problem. For your own safety make sure to use GNU sed while dumping XEmacs. -*** On HP-UX 11.0 XEmacs causes excessive X11 errors when running. +*** On HP-UX 11.0 XEmacs causes excessive X11 errors when running. (also appears on AIX as reported in comp.emacs.xemacs) Marcus Thiessel @@ -435,7 +466,7 @@ Marcus Thiessel configure: --x-libraries="/usr/lib/Motif1.2_R6 -L/usr/lib/X11R6" - + Make sure /usr/lib/Motif1.2_R6/libXm.sl is a link to /usr/lib/Motif1.2_R6/libXm.3. @@ -456,7 +487,7 @@ Marcus Thiessel *** Native cc on SCO OpenServer 5 is now OK. Icc may still throw you a curve. Here is what Robert Lipe says: -Unlike XEmacs 19.13, building with the native cc on SCO OpenServer 5 +Unlike XEmacs 19.13, building with the native cc on SCO OpenServer 5 now produces a functional binary. I will typically build this configuration for COFF with: @@ -464,15 +495,15 @@ configuration for COFF with: --site-includes=/usr/local/include --site-libraries=/usr/local/lib \ --with-xpm --with-xface --with-sound=nas -This version now supports ELF builds. I highly recommend this to -reduce the in-core footprint of XEmacs. This is now how I compile +This version now supports ELF builds. I highly recommend this to +reduce the in-core footprint of XEmacs. This is now how I compile all my test releases. Build it like this: /path_to_XEmacs_source/configure --with-gcc=no \ --site-includes=/usr/local/include --site-libraries=/usr/local/lib \ --with-xpm --with-xface --with-sound=nas --dynamic -The compiler known as icc [ supplied with the OpenServer 5 Development +The compiler known as icc [ supplied with the OpenServer 5 Development System ] generates a working binary, but it takes forever to generate XEmacs. ICC also whines more about the code than /bin/cc does. I do believe all its whining is legitimate, however. Note that you do @@ -484,32 +515,32 @@ The way I handle the build procedure is: --site-includes=/usr/local/include --site-libraries=/usr/local/lib \ --with-xpm --with-xface --with-sound=nas --dynamic --compiler="icc" -NOTE I have the xpm, xface, and audio libraries and includes in +NOTE I have the xpm, xface, and audio libraries and includes in /usr/local/lib, /usr/local/include. If you don't have these, don't include the "--with-*" arguments in any of my examples. -In previous versions of XEmacs, you had to override the defaults while +In previous versions of XEmacs, you had to override the defaults while compiling font-lock.o and extents.o when building with icc. This seems to no longer be true, but I'm including this old information in case it resurfaces. The process I used was: - make -k - [ procure pizza, beer, repeat ] + make -k + [ procure pizza, beer, repeat ] cd src make CC="icc -W0,-mP1COPT_max_tree_size=3000" font-lock.o extents.o make LD=icc -If you want sound support, get the tls566 supplement from -ftp.sco.com:/TLS or any of its mirrors. It works just groovy +If you want sound support, get the tls566 supplement from +ftp.sco.com:/TLS or any of its mirrors. It works just groovy with XEmacs. The M-x manual-entry is known not to work. If you know Lisp and would like help in making it work, e-mail me at . (UNCHECKED for 19.15 -- it might work). -In earlier releases, gnuserv/gnuclient/gnudoit would open a frame +In earlier releases, gnuserv/gnuclient/gnudoit would open a frame just fine, but the client would lock up and the server would -terminate when you used C-x # to close the frame. This is now +terminate when you used C-x # to close the frame. This is now fixed in XEmacs. In etc/ there are two files of note. emacskeys.sco and emacsstrs.sco. @@ -550,7 +581,7 @@ leads to instability in XEmacs. *** The XEmacs executable crashes at startup. -This can be caused by many things. +This can be caused by many things. If you are running with X11 you need to have cygwin b19 or cygwin b20.1 or greater, cygwin b20 will not work. @@ -694,7 +725,7 @@ may need to add "#define static" to the m- or the s- file. Try evaluating the form (setq lock-directory nil) and see if that helps. There is a problem with file-locking on some systems (possibly related -to NFS) that I don't understand. Please send mail to the address +to NFS) that I don't understand. Please send mail to the address xemacs@xemacs.org if you figure this one out. *** When emacs starts up, I get lots of warnings about unknown keysyms. @@ -702,15 +733,15 @@ xemacs@xemacs.org if you figure this one out. If you are running the prebuilt binaries, the Motif library expects to find certain thing in the XKeysymDB file. This file is normally in /usr/lib/X11/ or in /usr/openwin/lib/. If you keep yours in a different place, set the -environment variable $XKEYSYMDB to point to it before starting emacs. If -you still have the problem after doing that, perhaps your version of X is +environment variable $XKEYSYMDB to point to it before starting emacs. If +you still have the problem after doing that, perhaps your version of X is too old. There is a copy of the MIT X11R5 XKeysymDB file in the emacs `etc' directory. Try using that one. *** My X resources used to work, and now some of them are being ignored. Check the resources in .../etc/Emacs.ad (which is the same as the file -sample.Xdefaults). Perhaps some of the default resources built in to +sample.Xdefaults). Perhaps some of the default resources built in to emacs are now overriding your existing resources. Copy and edit the resources in Emacs.ad as necessary. @@ -870,7 +901,7 @@ info. XEmacs has fairly new TTY redisplay support (beginning from 19.12), which doesn't include some basic TTY optimizations -- like using scrolling regions to move around blocks of text. This is why -redisplay on the traditional terminals, or over slow lines can be very +redisplay on the traditional terminals, or over slow lines can be very slow. If you are interested in fixing this, please let us know at @@ -1006,7 +1037,7 @@ problem by adding this to your .cshrc file: if ($?EMACS) then if ($EMACS == "t") then - unset edit + unset edit stty -icrnl -onlcr -echo susp ^Z endif endif @@ -1333,7 +1364,7 @@ As of this writing (1998-12-28) you may get crashes while running XEmacs in a non-C locale. For example, `LC_ALL=en_US xemacs' crashes while `LC_ALL=C xemacs' runs fine. This happens for example with GNU libc 2.0.7. Installing libintl.a and libintl.h built from gettext -0.10.35 and re-building XEmacs solves the crashes. Presumably soon +0.10.35 and re-building XEmacs solves the crashes. Presumably soon everyone will upgrade to GNU Libc 2.1 and this problem will go away. *** `C-z', or `M-x suspend-emacs' hangs instead of suspending. @@ -1377,7 +1408,7 @@ exist. The first line in the `/etc/hosts' file should look like this Also make sure that the `/etc/host.conf' files contains the following lines: - order hosts, bind + order hosts, bind multi on Any changes, permanent and temporary, to the host name should be @@ -1644,11 +1675,11 @@ is giving it back 3. The solution is to add a pair of quotes around `tty` to make it a single word: -if (`tty` == "/dev/console") +if (`tty` == "/dev/console") should be changed to: -if ("`tty`" == "/dev/console") +if ("`tty`" == "/dev/console") Even better, move things that set up terminal sections out of .cshrc and into .login. @@ -1786,7 +1817,7 @@ nobody is using and testing. and testers. It probably doesn't work. ** There are no `native XEmacs' TUTORIALs for any Asian languages, -including Japanese. FSF Emacs and XEmacs tutorials are quite similar, +including Japanese. FSF Emacs and XEmacs tutorials are quite similar, so it should be sufficient to skim through the differences and apply them to the Japanese version. diff --git a/etc/NEWS b/etc/NEWS index e2ae0ca..6bf41ea 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -33,6 +33,9 @@ file. * Changes in XEmacs 21.2 ======================== +** The modeline's text is now scrollable. Please refer to the variable +`modeline-scrolling-method' for more information. + ** The delete key now deletes forward by default. This is regulated by the variable `delete-key-deletes-forward', which diff --git a/info/emodules.info b/info/emodules.info index 15eb210..c527ed0 100644 --- a/info/emodules.info +++ b/info/emodules.info @@ -1,4 +1,4 @@ -This is ../info/emodules.info, produced by makeinfo version 4.0b from +This is ../info/emodules.info, produced by makeinfo version 4.0 from emodules.texi. This file documents the module loading technology of XEmacs. @@ -937,23 +937,23 @@ Index  Tag Table: -Node: Top1537 -Node: Introduction2884 -Node: Anatomy of a Module7392 -Node: Required Header File8206 -Node: Required Functions10125 -Node: Required Variables12849 -Node: Loading other Modules15535 -Node: Using ellcc17592 -Node: Compile Mode19386 -Node: Initialization Mode20754 -Node: Link Mode25788 -Node: Other ellcc options26933 -Node: Environment Variables29512 -Node: Defining Functions31203 -Node: Using DEFUN33214 -Node: Declaring Functions34925 -Node: Defining Variables36268 -Node: Index38511 +Node: Top1536 +Node: Introduction2883 +Node: Anatomy of a Module7391 +Node: Required Header File8205 +Node: Required Functions10124 +Node: Required Variables12848 +Node: Loading other Modules15534 +Node: Using ellcc17591 +Node: Compile Mode19385 +Node: Initialization Mode20753 +Node: Link Mode25787 +Node: Other ellcc options26932 +Node: Environment Variables29511 +Node: Defining Functions31202 +Node: Using DEFUN33213 +Node: Declaring Functions34924 +Node: Defining Variables36267 +Node: Index38510  End Tag Table diff --git a/info/internals.info b/info/internals.info index 0c437a8..0446b0a 100644 --- a/info/internals.info +++ b/info/internals.info @@ -1,4 +1,4 @@ -This is ../info/internals.info, produced by makeinfo version 4.0b from +This is ../info/internals.info, produced by makeinfo version 4.0 from internals/internals.texi. INFO-DIR-SECTION XEmacs Editor @@ -39,158 +39,159 @@ Foundation instead of in the original English.  Indirect: -internals.info-1: 1777 -internals.info-2: 46638 -internals.info-3: 94563 -internals.info-4: 144260 -internals.info-5: 194153 -internals.info-6: 243743 -internals.info-7: 287810 -internals.info-8: 336677 +internals.info-1: 1776 +internals.info-2: 46637 +internals.info-3: 94562 +internals.info-4: 144259 +internals.info-5: 194152 +internals.info-6: 243742 +internals.info-7: 287809 +internals.info-8: 336676 +internals.info-9: 380670  Tag Table: (Indirect) -Node: Top1777 -Node: A History of Emacs7041 -Node: Through Version 188566 -Node: Lucid Emacs12014 -Node: GNU Emacs 1915032 -Node: GNU Emacs 2017215 -Node: XEmacs17642 -Node: XEmacs From the Outside20821 -Node: The Lisp Language22588 -Node: XEmacs From the Perspective of Building32131 -Node: XEmacs From the Inside38256 -Node: The XEmacs Object System (Abstractly Speaking)46638 -Node: How Lisp Objects Are Represented in C60724 -Node: Rules When Writing New C Code65401 -Node: General Coding Rules66205 -Node: Writing Lisp Primitives72015 -Node: Adding Global Lisp Variables83184 -Node: Coding for Mule86822 -Node: Character-Related Data Types87801 -Node: Working With Character and Byte Positions90798 -Node: Conversion to and from External Data94563 -Node: General Guidelines for Writing Mule-Aware Code100704 -Node: An Example of Mule-Aware Code103392 -Node: Techniques for XEmacs Developers105373 -Node: A Summary of the Various XEmacs Modules113320 -Node: Low-Level Modules114140 -Node: Basic Lisp Modules121601 -Node: Modules for Standard Editing Operations128195 -Node: Editor-Level Control Flow Modules134083 -Node: Modules for the Basic Displayable Lisp Objects137594 -Node: Modules for other Display-Related Lisp Objects140547 -Node: Modules for the Redisplay Mechanism141888 -Node: Modules for Interfacing with the File System144260 -Node: Modules for Other Aspects of the Lisp Interpreter and Object System147958 -Node: Modules for Interfacing with the Operating System153411 -Node: Modules for Interfacing with X Windows160967 -Node: Modules for Internationalization164450 -Node: Allocation of Objects in XEmacs Lisp167087 -Node: Introduction to Allocation167608 -Node: Garbage Collection171294 -Node: GCPROing172450 -Node: Garbage Collection - Step by Step179454 -Node: Invocation179846 -Node: garbage_collect_1182859 -Node: mark_object192341 -Node: gc_sweep194153 -Node: sweep_lcrecords_1199216 -Node: compact_string_chars200211 -Node: sweep_strings202391 -Node: sweep_bit_vectors_1203356 -Node: Integers and Characters204032 -Node: Allocation from Frob Blocks204784 -Node: lrecords206388 -Node: Low-level allocation218614 -Node: Cons222721 -Node: Vector223447 -Node: Bit Vector224024 -Node: Symbol224517 -Node: Marker224871 -Node: String225426 -Node: Compiled Function229039 -Node: Dumping229208 -Node: Overview231429 -Node: Data descriptions231999 -Node: Dumping phase234004 -Node: Object inventory234407 -Node: Address allocation237343 -Node: The header238732 -Node: Data dumping239177 -Node: Pointers dumping239838 -Node: Reloading phase241228 -Node: Remaining issues242782 -Node: Events and the Event Loop243743 -Node: Introduction to Events244193 -Node: Main Loop246142 -Node: Specifics of the Event Gathering Mechanism249717 -Node: Specifics About the Emacs Event262170 -Node: The Event Stream Callback Routines262425 -Node: Other Event Loop Functions262670 -Node: Converting Events263810 -Node: Dispatching Events; The Command Builder264419 -Node: Evaluation; Stack Frames; Bindings264654 -Node: Evaluation264996 -Node: Dynamic Binding; The specbinding Stack; Unwind-Protects271551 -Node: Simple Special Forms273935 -Node: Catch and Throw274718 -Node: Symbols and Variables277293 -Node: Introduction to Symbols277557 -Node: Obarrays278625 -Node: Symbol Values282158 -Node: Buffers and Textual Representation284446 -Node: Introduction to Buffers285104 -Node: The Text in a Buffer287810 -Node: Buffer Lists294960 -Node: Markers and Extents296911 -Node: Bufbytes and Emchars299176 -Node: The Buffer Object299391 -Node: MULE Character Sets and Encodings302871 -Node: Character Sets303933 -Node: Encodings307418 -Node: Japanese EUC (Extended Unix Code)308485 -Node: JIS7309317 -Node: Internal Mule Encodings310667 -Node: Internal String Encoding312497 -Node: Internal Character Encoding314642 -Node: CCL316366 -Node: The Lisp Reader and Compiler323119 -Node: Lstreams323332 -Node: Creating an Lstream324363 -Node: Lstream Types325590 -Node: Lstream Functions325842 -Node: Lstream Methods329408 -Node: Consoles; Devices; Frames; Windows332550 -Node: Introduction to Consoles; Devices; Frames; Windows332865 -Node: Point335398 -Node: Window Hierarchy336677 -Node: The Window Object341129 -Node: The Redisplay Mechanism344566 -Node: Critical Redisplay Sections345358 -Node: Line Start Cache346345 -Node: Redisplay Piece by Piece349581 -Node: Extents351618 -Node: Introduction to Extents352152 -Node: Extent Ordering353294 -Node: Format of the Extent Info354535 -Node: Zero-Length Extents356422 -Node: Mathematics of Extent Ordering357822 -Node: Extent Fragments362579 -Node: Faces363665 -Node: Glyphs363781 -Node: Specifiers365968 -Node: Menus366097 -Node: Subprocesses368355 -Node: Interface to the X Window System370341 -Node: Lucid Widget Library370622 -Node: Generic Widget Interface371913 -Node: Scrollbars375472 -Node: Menubars375615 -Node: Checkboxes and Radio Buttons375758 -Node: Progress Bars375944 -Node: Tab Controls376104 -Node: Index376225 +Node: Top1776 +Node: A History of Emacs7040 +Node: Through Version 188565 +Node: Lucid Emacs12013 +Node: GNU Emacs 1915031 +Node: GNU Emacs 2017214 +Node: XEmacs17641 +Node: XEmacs From the Outside20820 +Node: The Lisp Language22587 +Node: XEmacs From the Perspective of Building32130 +Node: XEmacs From the Inside38255 +Node: The XEmacs Object System (Abstractly Speaking)46637 +Node: How Lisp Objects Are Represented in C60723 +Node: Rules When Writing New C Code65400 +Node: General Coding Rules66204 +Node: Writing Lisp Primitives72014 +Node: Adding Global Lisp Variables83183 +Node: Coding for Mule86821 +Node: Character-Related Data Types87800 +Node: Working With Character and Byte Positions90797 +Node: Conversion to and from External Data94562 +Node: General Guidelines for Writing Mule-Aware Code100703 +Node: An Example of Mule-Aware Code103391 +Node: Techniques for XEmacs Developers105372 +Node: A Summary of the Various XEmacs Modules113319 +Node: Low-Level Modules114139 +Node: Basic Lisp Modules121600 +Node: Modules for Standard Editing Operations128194 +Node: Editor-Level Control Flow Modules134082 +Node: Modules for the Basic Displayable Lisp Objects137593 +Node: Modules for other Display-Related Lisp Objects140546 +Node: Modules for the Redisplay Mechanism141887 +Node: Modules for Interfacing with the File System144259 +Node: Modules for Other Aspects of the Lisp Interpreter and Object System147957 +Node: Modules for Interfacing with the Operating System153410 +Node: Modules for Interfacing with X Windows160966 +Node: Modules for Internationalization164449 +Node: Allocation of Objects in XEmacs Lisp167086 +Node: Introduction to Allocation167607 +Node: Garbage Collection171293 +Node: GCPROing172449 +Node: Garbage Collection - Step by Step179453 +Node: Invocation179845 +Node: garbage_collect_1182858 +Node: mark_object192340 +Node: gc_sweep194152 +Node: sweep_lcrecords_1199215 +Node: compact_string_chars200210 +Node: sweep_strings202390 +Node: sweep_bit_vectors_1203355 +Node: Integers and Characters204031 +Node: Allocation from Frob Blocks204783 +Node: lrecords206387 +Node: Low-level allocation218613 +Node: Cons222720 +Node: Vector223446 +Node: Bit Vector224023 +Node: Symbol224516 +Node: Marker224870 +Node: String225425 +Node: Compiled Function229038 +Node: Dumping229207 +Node: Overview231428 +Node: Data descriptions231998 +Node: Dumping phase234003 +Node: Object inventory234406 +Node: Address allocation237342 +Node: The header238731 +Node: Data dumping239176 +Node: Pointers dumping239837 +Node: Reloading phase241227 +Node: Remaining issues242781 +Node: Events and the Event Loop243742 +Node: Introduction to Events244192 +Node: Main Loop246141 +Node: Specifics of the Event Gathering Mechanism249716 +Node: Specifics About the Emacs Event262169 +Node: The Event Stream Callback Routines262424 +Node: Other Event Loop Functions262669 +Node: Converting Events263809 +Node: Dispatching Events; The Command Builder264418 +Node: Evaluation; Stack Frames; Bindings264653 +Node: Evaluation264995 +Node: Dynamic Binding; The specbinding Stack; Unwind-Protects271550 +Node: Simple Special Forms273934 +Node: Catch and Throw274717 +Node: Symbols and Variables277292 +Node: Introduction to Symbols277556 +Node: Obarrays278624 +Node: Symbol Values282157 +Node: Buffers and Textual Representation284445 +Node: Introduction to Buffers285103 +Node: The Text in a Buffer287809 +Node: Buffer Lists294959 +Node: Markers and Extents296910 +Node: Bufbytes and Emchars299175 +Node: The Buffer Object299390 +Node: MULE Character Sets and Encodings302870 +Node: Character Sets303932 +Node: Encodings307417 +Node: Japanese EUC (Extended Unix Code)308484 +Node: JIS7309316 +Node: Internal Mule Encodings310666 +Node: Internal String Encoding312496 +Node: Internal Character Encoding314641 +Node: CCL316365 +Node: The Lisp Reader and Compiler323118 +Node: Lstreams323331 +Node: Creating an Lstream324362 +Node: Lstream Types325589 +Node: Lstream Functions325841 +Node: Lstream Methods329407 +Node: Consoles; Devices; Frames; Windows332549 +Node: Introduction to Consoles; Devices; Frames; Windows332864 +Node: Point335397 +Node: Window Hierarchy336676 +Node: The Window Object341128 +Node: The Redisplay Mechanism344565 +Node: Critical Redisplay Sections345357 +Node: Line Start Cache346344 +Node: Redisplay Piece by Piece349580 +Node: Extents351617 +Node: Introduction to Extents352151 +Node: Extent Ordering353293 +Node: Format of the Extent Info354534 +Node: Zero-Length Extents356421 +Node: Mathematics of Extent Ordering357821 +Node: Extent Fragments362578 +Node: Faces363664 +Node: Glyphs363780 +Node: Specifiers370413 +Node: Menus370542 +Node: Subprocesses372800 +Node: Interface to the X Window System374786 +Node: Lucid Widget Library375067 +Node: Generic Widget Interface376358 +Node: Scrollbars379917 +Node: Menubars380060 +Node: Checkboxes and Radio Buttons380203 +Node: Progress Bars380389 +Node: Tab Controls380549 +Node: Index380670  End Tag Table diff --git a/info/internals.info-1 b/info/internals.info-1 index b357f91..880768a 100644 --- a/info/internals.info-1 +++ b/info/internals.info-1 @@ -1,4 +1,4 @@ -This is ../info/internals.info, produced by makeinfo version 4.0b from +This is ../info/internals.info, produced by makeinfo version 4.0 from internals/internals.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/internals.info-2 b/info/internals.info-2 index 14bf799..0d0f625 100644 --- a/info/internals.info-2 +++ b/info/internals.info-2 @@ -1,4 +1,4 @@ -This is ../info/internals.info, produced by makeinfo version 4.0b from +This is ../info/internals.info, produced by makeinfo version 4.0 from internals/internals.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/internals.info-3 b/info/internals.info-3 index 48b542a..6cc8d80 100644 --- a/info/internals.info-3 +++ b/info/internals.info-3 @@ -1,4 +1,4 @@ -This is ../info/internals.info, produced by makeinfo version 4.0b from +This is ../info/internals.info, produced by makeinfo version 4.0 from internals/internals.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/internals.info-4 b/info/internals.info-4 index 7a7a4b7..c717881 100644 --- a/info/internals.info-4 +++ b/info/internals.info-4 @@ -1,4 +1,4 @@ -This is ../info/internals.info, produced by makeinfo version 4.0b from +This is ../info/internals.info, produced by makeinfo version 4.0 from internals/internals.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/internals.info-5 b/info/internals.info-5 index 17671f1..af423f8 100644 --- a/info/internals.info-5 +++ b/info/internals.info-5 @@ -1,4 +1,4 @@ -This is ../info/internals.info, produced by makeinfo version 4.0b from +This is ../info/internals.info, produced by makeinfo version 4.0 from internals/internals.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/internals.info-6 b/info/internals.info-6 index 9a9dbe1..5b89518 100644 --- a/info/internals.info-6 +++ b/info/internals.info-6 @@ -1,4 +1,4 @@ -This is ../info/internals.info, produced by makeinfo version 4.0b from +This is ../info/internals.info, produced by makeinfo version 4.0 from internals/internals.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/internals.info-7 b/info/internals.info-7 index e000598..8f3633d 100644 --- a/info/internals.info-7 +++ b/info/internals.info-7 @@ -1,4 +1,4 @@ -This is ../info/internals.info, produced by makeinfo version 4.0b from +This is ../info/internals.info, produced by makeinfo version 4.0 from internals/internals.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/internals.info-8 b/info/internals.info-8 index 664b43e..d641579 100644 --- a/info/internals.info-8 +++ b/info/internals.info-8 @@ -1,4 +1,4 @@ -This is ../info/internals.info, produced by makeinfo version 4.0b from +This is ../info/internals.info, produced by makeinfo version 4.0 from internals/internals.texi. INFO-DIR-SECTION XEmacs Editor @@ -705,13 +705,13 @@ screen images can be instantiated from a single glyph. Glyphs are lazily instantiated by calling one of the glyph functions. This usually occurs within redisplay when `Fglyph_height' is called. Instantiation causes an image-instance to be created and -cached. This cache is on a device basis for all glyphs except -glyph-widgets, and on a window basis for glyph widgets. The caching is -done by `image_instantiate' and is necessary because it is generally -possible to display an image-instance in multiple domains. For instance -if we create a Pixmap, we can actually display this on multiple windows -- even though we only need a single Pixmap instance to do this. If -caching wasn't done then it would be necessary to create +cached. This cache is on a per-device basis for all glyphs except +widget-glyphs, and on a per-window basis for widgets-glyphs. The +caching is done by `image_instantiate' and is necessary because it is +generally possible to display an image-instance in multiple domains. +For instance if we create a Pixmap, we can actually display this on +multiple windows - even though we only need a single Pixmap instance to +do this. If caching wasn't done then it would be necessary to create image-instances for every displayable occurrence of a glyph - and every usage - and this would be extremely memory and cpu intensive. @@ -723,6 +723,73 @@ widget-glyphs are cached on an XEmacs window basis. Any action on a glyph first consults the cache before actually instantiating a widget. +Glyph Instantiation +=================== + + Glyph instantiation is a hairy topic and requires some explanation. +The guts of glyph instantiation is contained within +`image_instantiate'. A glyph contains an image which is a specifier. +When a glyph function - for instance `Fglyph_height' - asks for a +property of the glyph that can only be determined from its instantiated +state, then the glyph image is instantiated and an image instance +created. The instantiation process is governed by the specifier code +and goes through a series of steps: + + * Validation. Instantiation of image instances happens dynamically - + often within the guts of redisplay. Thus it is often not feasible + to catch instantiator errors at instantiation time. Instead the + instantiator is validated at the time it is added to the image + specifier. This function is defined by `image_validate' and at a + simple level validates keyword value pairs. + + * Duplication. The specifier code by default takes a copy of the + instantiator. This is reasonable for most specifiers but in the + case of widget-glyphs can be problematic, since some of the + properties in the instantiator - for instance callbacks - could + cause infinite recursion in the copying process. Thus the image + code defines a function - `image_copy_instantiator' - which will + selectively copy values. This is controlled by the way that a + keyword is defined either using `IIFORMAT_VALID_KEYWORD' or + `IIFORMAT_VALID_NONCOPY_KEYWORD'. Note that the image caching and + redisplay code relies on instantiator copying to ensure that + current and new instantiators are actually different rather than + referring to the same thing. + + * Normalization. Once the instantiator has been copied it must be + converted into a form that is viable at instantiation time. This + can involve no changes at all, but typically involves things like + converting file names to the actual data. This function is defined + by `image_going_to_add' and `normalize_image_instantiator'. + + * Instantiation. When an image instance is actually required for + display it is instantiated using `image_instantiate'. This + involves calling instantiate methods that are specific to the type + of image being instantiated. + + The final instantiation phase also involves a number of steps. In +order to understand these we need to describe a number of concepts. + + An image is instantiated in a "domain", where a domain can be any +one of a device, frame, window or image-instance. The domain gives the +image-instance context and identity and properties that affect the +appearance of the image-instance may be different for the same glyph +instantiated in different domains. An example is the face used to +display the image-instance. + + Although an image is instantiated in a particular domain the +instantiation domain is not necessarily the domain in which the +image-instance is cached. For example a pixmap can be instantiated in a +window be actually be cached on a per-device basis. The domain in which +the image-instance is actually cached is called the "governing-domain". +A governing-domain is currently either a device or a window. +Widget-glyphs and text-glyphs have a window as a governing-domain, all +other image-instances have a device as the governing-domain. The +governing domain for an image-instance is determined using the +governing_domain image-instance method. + +Widget-Glyphs +============= + Widget-Glyphs in the MS-Windows Environment =========================================== @@ -737,6 +804,24 @@ primarily so that different toolkits can be supported for widget-glyphs, just as they are supported for features such as menubars etc. + Lwlib is extremely poorly documented and quite hairy so here is my +understanding of what goes on. + + Lwlib maintains a set of widget_instances which mirror the +hierarchical state of Xt widgets. I think this is so that widgets can +be updated and manipulated generically by the lwlib library. For +instance update_one_widget_instance can cope with multiple types of +widget and multiple types of toolkit. Each element in the widget +hierarchy is updated from its corresponding widget_instance by walking +the widget_instance tree recursively. + + This has desirable properties such as lw_modify_all_widgets which is +called from `glyphs-x.c' and updates all the properties of a widget +without having to know what the widget is or what toolkit it is from. +Unfortunately this also has hairy properties such as making the lwlib +code quite complex. And of course lwlib has to know at some level what +the widget is and how to set its properties. +  File: internals.info, Node: Specifiers, Next: Menus, Prev: Glyphs, Up: Top @@ -1023,168 +1108,3 @@ File: internals.info, Node: Tab Controls, Prev: Progress Bars, Up: Lucid Widg Tab Controls ------------ - -File: internals.info, Node: Index, Prev: Interface to the X Window System, Up: Top - -Index -***** - -* Menu: - -* Amdahl Corporation: XEmacs. -* Andreessen, Marc: XEmacs. -* asynchronous subprocesses: Modules for Interfacing with the Operating System. -* Baur, Steve: XEmacs. -* Benson, Eric: Lucid Emacs. -* bridge, playing: XEmacs From the Outside. -* Buchholz, Martin: XEmacs. -* Bufbyte: Character-Related Data Types. -* Bufpos: Character-Related Data Types. -* Bytecount: Character-Related Data Types. -* bytecount_to_charcount: Working With Character and Byte Positions. -* Bytind: Character-Related Data Types. -* C vs. Lisp: The Lisp Language. -* caller-protects (GCPRO rule): Writing Lisp Primitives. -* case table: Modules for Other Aspects of the Lisp Interpreter and Object System. -* Charcount: Character-Related Data Types. -* charcount_to_bytecount: Working With Character and Byte Positions. -* charptr_emchar: Working With Character and Byte Positions. -* charptr_n_addr: Working With Character and Byte Positions. -* closer: Lstream Methods. -* closure: The XEmacs Object System (Abstractly Speaking). -* Coding for Mule: Coding for Mule. -* Common Lisp: The Lisp Language. -* compact_string_chars: compact_string_chars. -* conservative garbage collection: GCPROing. -* copy-on-write: General Coding Rules. -* critical redisplay sections: Critical Redisplay Sections. -* DEC_CHARPTR: Working With Character and Byte Positions. -* Devin, Matthieu: Lucid Emacs. -* display order of extents: Mathematics of Extent Ordering. -* dynamic array: Low-Level Modules. -* dynamic scoping: The Lisp Language. -* dynamic types: The Lisp Language. -* Emchar: Character-Related Data Types. -* Energize: Lucid Emacs. -* Epoch <1>: XEmacs. -* Epoch: Lucid Emacs. -* Extbyte: Character-Related Data Types. -* Extcount: Character-Related Data Types. -* extent fragment: Extent Fragments. -* extent mathematics: Mathematics of Extent Ordering. -* extent ordering: Mathematics of Extent Ordering. -* extents, display order: Mathematics of Extent Ordering. -* external widget: Modules for Interfacing with X Windows. -* flusher: Lstream Methods. -* Free Software Foundation: A History of Emacs. -* FSF: A History of Emacs. -* FSF Emacs <1>: GNU Emacs 20. -* FSF Emacs: GNU Emacs 19. -* garbage collection: Garbage Collection. -* garbage collection protection: Writing Lisp Primitives. -* garbage collection step by step: Garbage Collection - Step by Step. -* garbage collection, conservative: GCPROing. -* garbage collection, invocation: Invocation. -* garbage_collect_1: garbage_collect_1. -* gc_sweep: gc_sweep. -* GNU Emacs 19: GNU Emacs 19. -* GNU Emacs 20: GNU Emacs 20. -* Gosling, James <1>: The Lisp Language. -* Gosling, James: Through Version 18. -* Great Usenet Renaming: Through Version 18. -* Hackers (Steven Levy): A History of Emacs. -* hierarchy of windows: Window Hierarchy. -* history of Emacs: A History of Emacs. -* Illinois, University of: XEmacs. -* INC_CHARPTR: Working With Character and Byte Positions. -* interactive: Modules for Standard Editing Operations. -* interning: The XEmacs Object System (Abstractly Speaking). -* ITS (Incompatible Timesharing System): A History of Emacs. -* Java: The Lisp Language. -* Java vs. Lisp: The Lisp Language. -* Jones, Kyle: XEmacs. -* Kaplan, Simon: XEmacs. -* Levy, Steven: A History of Emacs. -* line start cache: Line Start Cache. -* Lisp vs. C: The Lisp Language. -* Lisp vs. Java: The Lisp Language. -* lstream: Modules for Interfacing with the File System. -* Lstream_close: Lstream Functions. -* Lstream_fgetc: Lstream Functions. -* Lstream_flush: Lstream Functions. -* Lstream_fputc: Lstream Functions. -* Lstream_fungetc: Lstream Functions. -* Lstream_getc: Lstream Functions. -* Lstream_new: Lstream Functions. -* Lstream_putc: Lstream Functions. -* Lstream_read: Lstream Functions. -* Lstream_reopen: Lstream Functions. -* Lstream_rewind: Lstream Functions. -* Lstream_set_buffering: Lstream Functions. -* Lstream_ungetc: Lstream Functions. -* Lstream_unread: Lstream Functions. -* Lstream_write: Lstream Functions. -* Lucid Emacs: Lucid Emacs. -* Lucid Inc.: Lucid Emacs. -* mark and sweep: Garbage Collection. -* mark method <1>: lrecords. -* mark method: Modules for Other Aspects of the Lisp Interpreter and Object System. -* mark_object: mark_object. -* marker: Lstream Methods. -* mathematics of extents: Mathematics of Extent Ordering. -* MAX_EMCHAR_LEN: Working With Character and Byte Positions. -* merging attempts: XEmacs. -* MIT: A History of Emacs. -* Mlynarik, Richard: GNU Emacs 19. -* MULE merged XEmacs appears: XEmacs. -* NAS: Modules for Interfacing with the Operating System. -* native sound: Modules for Interfacing with the Operating System. -* network connections: Modules for Interfacing with the Operating System. -* network sound: Modules for Interfacing with the Operating System. -* Niksic, Hrvoje: XEmacs. -* pane: Modules for the Basic Displayable Lisp Objects. -* permanent objects: The XEmacs Object System (Abstractly Speaking). -* pi, calculating: XEmacs From the Outside. -* pseudo_closer: Lstream Methods. -* read syntax: The XEmacs Object System (Abstractly Speaking). -* read-eval-print: XEmacs From the Outside. -* reader: Lstream Methods. -* Redisplay Piece by Piece: Redisplay Piece by Piece. -* relocating allocator: Low-Level Modules. -* rename to XEmacs: XEmacs. -* rewinder: Lstream Methods. -* RMS: A History of Emacs. -* scanner: Modules for Other Aspects of the Lisp Interpreter and Object System. -* scoping, dynamic: The Lisp Language. -* seekable_p: Lstream Methods. -* selections: Modules for Interfacing with X Windows. -* set_charptr_emchar: Working With Character and Byte Positions. -* Sexton, Harlan: Lucid Emacs. -* sound, native: Modules for Interfacing with the Operating System. -* sound, network: Modules for Interfacing with the Operating System. -* SPARCWorks: XEmacs. -* Stallman, Richard: A History of Emacs. -* subprocesses, asynchronous: Modules for Interfacing with the Operating System. -* subprocesses, synchronous: Modules for Interfacing with the Operating System. -* Sun Microsystems: XEmacs. -* sweep_bit_vectors_1: sweep_bit_vectors_1. -* sweep_lcrecords_1: sweep_lcrecords_1. -* sweep_strings: sweep_strings. -* synchronous subprocesses: Modules for Interfacing with the Operating System. -* taxes, doing: XEmacs From the Outside. -* TECO: A History of Emacs. -* temporary objects: The XEmacs Object System (Abstractly Speaking). -* Thompson, Chuck: XEmacs. -* types, dynamic: The Lisp Language. -* University of Illinois: XEmacs. -* Win-Emacs: XEmacs. -* window (in Emacs): Modules for the Basic Displayable Lisp Objects. -* window hierarchy: Window Hierarchy. -* window point internals: The Window Object. -* Wing, Ben: XEmacs. -* writer: Lstream Methods. -* XEmacs: XEmacs. -* XEmacs goes it alone: XEmacs. -* Zawinski, Jamie: Lucid Emacs. - - diff --git a/info/internals.info-9 b/info/internals.info-9 index 368640b..0c91f06 100644 --- a/info/internals.info-9 +++ b/info/internals.info-9 @@ -38,7 +38,7 @@ may be included in a translation approved by the Free Software Foundation instead of in the original English.  -File: internals.info, Node: Index, Prev: Interface to X Windows, Up: Top +File: internals.info, Node: Index, Prev: Interface to the X Window System, Up: Top Index ***** @@ -91,7 +91,6 @@ Index * external widget: Modules for Interfacing with X Windows. * flusher: Lstream Methods. * Free Software Foundation: A History of Emacs. -* frob block: Introduction to Allocation. * FSF: A History of Emacs. * FSF Emacs <1>: GNU Emacs 20. * FSF Emacs: GNU Emacs 19. @@ -161,11 +160,9 @@ Index * permanent objects: The XEmacs Object System (Abstractly Speaking). * pi, calculating: XEmacs From the Outside. * pseudo_closer: Lstream Methods. -* pure space: Basic Lisp Modules. * read syntax: The XEmacs Object System (Abstractly Speaking). * read-eval-print: XEmacs From the Outside. * reader: Lstream Methods. -* record type: How Lisp Objects Are Represented in C. * Redisplay Piece by Piece: Redisplay Piece by Piece. * relocating allocator: Low-Level Modules. * rename to XEmacs: XEmacs. diff --git a/info/texinfo.info b/info/texinfo.info index 2064e9c..1f73e7f 100644 --- a/info/texinfo.info +++ b/info/texinfo.info @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system @@ -34,317 +34,317 @@ translation approved by the Free Software Foundation.  Indirect: -texinfo.info-1: 1485 -texinfo.info-2: 48708 -texinfo.info-3: 96682 -texinfo.info-4: 146074 -texinfo.info-5: 196056 -texinfo.info-6: 245148 -texinfo.info-7: 293747 -texinfo.info-8: 343562 -texinfo.info-9: 392875 -texinfo.info-10: 435253 -texinfo.info-11: 481369 -texinfo.info-12: 519529 +texinfo.info-1: 1484 +texinfo.info-2: 48707 +texinfo.info-3: 96681 +texinfo.info-4: 146073 +texinfo.info-5: 196055 +texinfo.info-6: 245147 +texinfo.info-7: 293746 +texinfo.info-8: 343561 +texinfo.info-9: 392874 +texinfo.info-10: 435252 +texinfo.info-11: 481368 +texinfo.info-12: 519528  Tag Table: (Indirect) -Node: Top1485 -Node: Copying23800 -Node: Overview25805 -Node: Overview-Footnotes27234 -Ref: Overview-Footnote-127298 -Node: Using Texinfo27770 -Node: Info Files30257 -Node: Info Files-Footnotes34293 -Ref: Info Files-Footnote-134361 -Node: Printed Books34540 -Node: Printed Books-Footnotes37212 -Ref: Printed Books-Footnote-137286 -Node: Formatting Commands37496 -Node: Formatting Commands-Footnotes40323 -Ref: Formatting Commands-Footnote-140409 -Node: Conventions41025 -Node: Comments43587 -Node: Minimum45010 -Node: Six Parts47196 -Node: Short Sample48708 -Node: Acknowledgements52844 -Node: Texinfo Mode53679 -Node: Texinfo Mode Overview55051 -Node: Emacs Editing55827 -Node: Inserting57957 -Node: Showing the Structure62238 -Node: Updating Nodes and Menus64765 -Node: Updating Commands65838 -Node: Updating Requirements71899 -Node: Other Updating Commands74196 -Node: Info Formatting77464 -Node: Printing78722 -Node: Texinfo Mode Summary81067 -Node: Beginning a File85821 -Node: Four Parts86712 -Node: Sample Beginning88182 -Node: Header89802 -Node: First Line91154 -Node: Start of Header92143 -Node: setfilename92856 -Node: settitle94792 -Node: setchapternewpage96682 -Node: paragraphindent99443 -Node: End of Header100925 -Node: Info Summary and Permissions101764 -Node: Titlepage & Copyright Page102783 -Node: titlepage104389 -Node: titlepage-Footnotes106671 -Ref: titlepage-Footnote-1106737 -Node: titlefont center sp107011 -Node: title subtitle author108237 -Node: Copyright & Permissions110509 -Node: end titlepage112510 -Node: headings on off114216 -Node: The Top Node116261 -Node: Title of Top Node117416 -Node: Master Menu Parts118669 -Node: Software Copying Permissions120906 -Node: Ending a File122074 -Node: Printing Indices & Menus122922 -Node: Contents125231 -Node: File End127571 -Node: Structuring128244 -Node: Tree Structuring129901 -Node: Structuring Command Types131344 -Node: makeinfo top133671 -Node: chapter134204 -Node: unnumbered & appendix135228 -Node: majorheading & chapheading136067 -Node: section136888 -Node: unnumberedsec appendixsec heading137652 -Node: subsection138641 -Node: unnumberedsubsec appendixsubsec subheading139213 -Node: subsubsection140166 -Node: Raise/lower sections141716 -Node: Nodes143851 -Node: Two Paths144788 -Node: Node Menu Illustration146074 -Node: node149769 -Node: Node Names152465 -Node: Writing a Node153541 -Node: Node Line Tips155559 -Node: Node Line Requirements156353 -Node: First Node157954 -Node: makeinfo top command159393 -Node: Top Node Summary160572 -Node: makeinfo Pointer Creation162022 -Node: Menus163269 -Node: Menus-Footnotes164208 -Ref: Menus-Footnote-1164266 -Node: Menu Location164559 -Node: Writing a Menu166236 -Node: Menu Parts167202 -Node: Less Cluttered Menu Entry168360 -Node: Menu Example168985 -Node: Other Info Files170506 -Node: Cross References172374 -Node: References173331 -Node: Cross Reference Commands175078 -Node: Cross Reference Parts176137 -Node: xref178973 -Node: Reference Syntax179772 -Node: One Argument181426 -Node: Two Arguments182438 -Node: Three Arguments183553 -Node: Four and Five Arguments185944 -Node: Top Node Naming188356 -Node: ref189366 -Node: pxref190758 -Node: inforef193140 -Node: uref194433 -Node: Marking Text195432 -Node: Indicating196056 -Node: Useful Highlighting197961 -Node: code199350 -Node: kbd202388 -Node: key204258 -Node: samp205591 -Node: var207178 -Node: file208971 -Node: dfn209578 -Node: cite210488 -Node: url210942 -Node: email211506 -Node: Emphasis212318 -Node: emph & strong213218 -Node: Smallcaps214204 -Node: Fonts215531 -Node: Customized Highlighting216619 -Node: Customized Highlighting-Footnotes219434 -Ref: Customized Highlighting-Footnote-1219528 -Node: Quotations and Examples219654 -Node: Block Enclosing Commands221276 -Node: quotation223301 -Node: example224391 -Node: noindent226446 -Node: Lisp Example227910 -Node: Lisp Example-Footnotes228612 -Ref: Lisp Example-Footnote-1228684 -Node: smallexample & smalllisp228802 -Node: display230827 -Node: format231459 -Node: exdent231920 -Node: flushleft & flushright233000 -Node: cartouche234266 -Node: Lists and Tables235033 -Node: Introducing Lists235709 -Node: itemize237374 -Node: enumerate239521 -Node: Two-column Tables242026 -Node: table242715 -Node: ftable vtable245148 -Node: itemx246249 -Node: Multi-column Tables247260 -Node: Multitable Column Widths247931 -Node: Multitable Rows249385 -Node: Indices251166 -Node: Index Entries252316 -Node: Predefined Indices253449 -Node: Indexing Commands254446 -Node: Combining Indices258986 -Node: syncodeindex260349 -Node: synindex262011 -Node: New Indices262536 -Node: Insertions264361 -Node: Braces Atsigns265545 -Node: Inserting An Atsign266097 -Node: Inserting Braces266371 -Node: Inserting Space266734 -Node: Not Ending a Sentence267238 -Node: Ending a Sentence268592 -Node: Multiple Spaces269721 -Node: dmn270940 -Node: Inserting Accents272147 -Node: Dots Bullets273904 -Node: dots274726 -Node: bullet275250 -Node: TeX and copyright275647 -Node: tex276214 -Node: copyright symbol276630 -Node: pounds276890 -Node: minus277254 -Node: math278176 -Node: Glyphs278904 -Node: Glyphs Summary280017 -Node: result280645 -Node: expansion281130 -Node: Print Glyph282086 -Node: Error Glyph282963 -Node: Equivalence283796 -Node: Point Glyph284484 -Node: Images286041 -Node: Breaks287708 -Node: Break Commands289139 -Node: Line Breaks289980 -Node: - and hyphenation290998 -Node: w292248 -Node: sp292961 -Node: page293370 -Node: group293747 -Node: need295490 -Node: Definition Commands296220 -Node: Def Cmd Template297791 -Node: Optional Arguments300788 -Node: deffnx302376 -Node: Def Cmds in Detail303331 -Node: Functions Commands304441 -Node: Variables Commands307446 -Node: Typed Functions309532 -Node: Typed Variables313074 -Node: Abstract Objects315057 -Node: Data Types320282 -Node: Def Cmd Conventions321537 -Node: Sample Function Definition322100 -Node: Footnotes324984 -Node: Footnotes-Footnotes325372 -Ref: Footnotes-Footnote-1325438 -Node: Footnote Commands325718 -Node: Footnote Commands-Footnotes327215 -Ref: Footnote Commands-Footnote-1327297 -Node: Footnote Styles327333 -Node: Conditionals329919 -Node: Conditional Commands330730 -Node: Conditional Not Commands332223 -Node: Raw Formatter Commands332968 -Node: set clear value334798 -Node: ifset ifclear335599 -Node: value338778 -Node: value Example340190 -Node: Macros341768 -Node: Defining Macros342473 -Node: Invoking Macros343562 -Node: Format/Print Hardcopy344668 -Node: Use TeX346505 -Node: Format with tex/texindex347133 -Node: Format with texi2dvi350774 -Node: Print with lpr351365 -Node: Within Emacs352219 -Node: Texinfo Mode Printing353138 -Node: Compile-Command356548 -Node: Requirements Summary357436 -Node: Preparing for TeX358749 -Node: Overfull hboxes361536 -Node: smallbook363095 -Node: A4 Paper364613 -Node: Cropmarks and Magnification365838 -Node: Create an Info File367779 -Node: makeinfo advantages369082 -Node: Invoking makeinfo369998 -Node: makeinfo options370686 -Node: Pointer Validation376170 -Node: makeinfo in Emacs377514 -Node: texinfo-format commands380072 -Node: Batch Formatting381343 -Node: Tag and Split Files382559 -Node: Install an Info File385913 -Node: Directory file386731 -Node: New Info File388599 -Node: Other Info Directories389660 -Node: Installing Dir Entries392875 -Node: Invoking install-info394868 -Node: Command List397283 -Node: Tips435253 -Node: Sample Texinfo File446663 -Node: Sample Permissions448782 -Node: Inserting Permissions449825 -Node: ifinfo Permissions452131 -Node: Titlepage Permissions453752 -Node: Include Files455014 -Node: Using Include Files456101 -Node: texinfo-multiple-files-update458056 -Node: Include File Requirements460417 -Node: Sample Include File461662 -Node: Include Files Evolution463181 -Node: Headings465152 -Node: Headings Introduced465789 -Node: Heading Format467677 -Node: Heading Choice470129 -Node: Custom Headings471501 -Node: Catching Mistakes475829 -Node: makeinfo Preferred477118 -Node: Debugging with Info478023 -Node: Debugging with TeX481369 -Node: Using texinfo-show-structure485649 -Node: Using occur488748 -Node: Running Info-Validate490285 -Node: Using Info-validate491346 -Node: Unsplit493188 -Node: Tagifying494234 -Node: Splitting495086 -Node: Refilling Paragraphs496702 -Node: Refilling Paragraphs-Footnotes498356 -Ref: Refilling Paragraphs-Footnote-1498444 -Node: Command Syntax498607 -Node: Obtaining TeX501564 -Node: Command and Variable Index503677 -Node: Concept Index519529 +Node: Top1484 +Node: Copying23799 +Node: Overview25804 +Node: Overview-Footnotes27233 +Ref: Overview-Footnote-127297 +Node: Using Texinfo27769 +Node: Info Files30256 +Node: Info Files-Footnotes34292 +Ref: Info Files-Footnote-134360 +Node: Printed Books34539 +Node: Printed Books-Footnotes37211 +Ref: Printed Books-Footnote-137285 +Node: Formatting Commands37495 +Node: Formatting Commands-Footnotes40322 +Ref: Formatting Commands-Footnote-140408 +Node: Conventions41024 +Node: Comments43586 +Node: Minimum45009 +Node: Six Parts47195 +Node: Short Sample48707 +Node: Acknowledgements52843 +Node: Texinfo Mode53678 +Node: Texinfo Mode Overview55050 +Node: Emacs Editing55826 +Node: Inserting57956 +Node: Showing the Structure62237 +Node: Updating Nodes and Menus64764 +Node: Updating Commands65837 +Node: Updating Requirements71898 +Node: Other Updating Commands74195 +Node: Info Formatting77463 +Node: Printing78721 +Node: Texinfo Mode Summary81066 +Node: Beginning a File85820 +Node: Four Parts86711 +Node: Sample Beginning88181 +Node: Header89801 +Node: First Line91153 +Node: Start of Header92142 +Node: setfilename92855 +Node: settitle94791 +Node: setchapternewpage96681 +Node: paragraphindent99442 +Node: End of Header100924 +Node: Info Summary and Permissions101763 +Node: Titlepage & Copyright Page102782 +Node: titlepage104388 +Node: titlepage-Footnotes106670 +Ref: titlepage-Footnote-1106736 +Node: titlefont center sp107010 +Node: title subtitle author108236 +Node: Copyright & Permissions110508 +Node: end titlepage112509 +Node: headings on off114215 +Node: The Top Node116260 +Node: Title of Top Node117415 +Node: Master Menu Parts118668 +Node: Software Copying Permissions120905 +Node: Ending a File122073 +Node: Printing Indices & Menus122921 +Node: Contents125230 +Node: File End127570 +Node: Structuring128243 +Node: Tree Structuring129900 +Node: Structuring Command Types131343 +Node: makeinfo top133670 +Node: chapter134203 +Node: unnumbered & appendix135227 +Node: majorheading & chapheading136066 +Node: section136887 +Node: unnumberedsec appendixsec heading137651 +Node: subsection138640 +Node: unnumberedsubsec appendixsubsec subheading139212 +Node: subsubsection140165 +Node: Raise/lower sections141715 +Node: Nodes143850 +Node: Two Paths144787 +Node: Node Menu Illustration146073 +Node: node149768 +Node: Node Names152464 +Node: Writing a Node153540 +Node: Node Line Tips155558 +Node: Node Line Requirements156352 +Node: First Node157953 +Node: makeinfo top command159392 +Node: Top Node Summary160571 +Node: makeinfo Pointer Creation162021 +Node: Menus163268 +Node: Menus-Footnotes164207 +Ref: Menus-Footnote-1164265 +Node: Menu Location164558 +Node: Writing a Menu166235 +Node: Menu Parts167201 +Node: Less Cluttered Menu Entry168359 +Node: Menu Example168984 +Node: Other Info Files170505 +Node: Cross References172373 +Node: References173330 +Node: Cross Reference Commands175077 +Node: Cross Reference Parts176136 +Node: xref178972 +Node: Reference Syntax179771 +Node: One Argument181425 +Node: Two Arguments182437 +Node: Three Arguments183552 +Node: Four and Five Arguments185943 +Node: Top Node Naming188355 +Node: ref189365 +Node: pxref190757 +Node: inforef193139 +Node: uref194432 +Node: Marking Text195431 +Node: Indicating196055 +Node: Useful Highlighting197960 +Node: code199349 +Node: kbd202387 +Node: key204257 +Node: samp205590 +Node: var207177 +Node: file208970 +Node: dfn209577 +Node: cite210487 +Node: url210941 +Node: email211505 +Node: Emphasis212317 +Node: emph & strong213217 +Node: Smallcaps214203 +Node: Fonts215530 +Node: Customized Highlighting216618 +Node: Customized Highlighting-Footnotes219433 +Ref: Customized Highlighting-Footnote-1219527 +Node: Quotations and Examples219653 +Node: Block Enclosing Commands221275 +Node: quotation223300 +Node: example224390 +Node: noindent226445 +Node: Lisp Example227909 +Node: Lisp Example-Footnotes228611 +Ref: Lisp Example-Footnote-1228683 +Node: smallexample & smalllisp228801 +Node: display230826 +Node: format231458 +Node: exdent231919 +Node: flushleft & flushright232999 +Node: cartouche234265 +Node: Lists and Tables235032 +Node: Introducing Lists235708 +Node: itemize237373 +Node: enumerate239520 +Node: Two-column Tables242025 +Node: table242714 +Node: ftable vtable245147 +Node: itemx246248 +Node: Multi-column Tables247259 +Node: Multitable Column Widths247930 +Node: Multitable Rows249384 +Node: Indices251165 +Node: Index Entries252315 +Node: Predefined Indices253448 +Node: Indexing Commands254445 +Node: Combining Indices258985 +Node: syncodeindex260348 +Node: synindex262010 +Node: New Indices262535 +Node: Insertions264360 +Node: Braces Atsigns265544 +Node: Inserting An Atsign266096 +Node: Inserting Braces266370 +Node: Inserting Space266733 +Node: Not Ending a Sentence267237 +Node: Ending a Sentence268591 +Node: Multiple Spaces269720 +Node: dmn270939 +Node: Inserting Accents272146 +Node: Dots Bullets273903 +Node: dots274725 +Node: bullet275249 +Node: TeX and copyright275646 +Node: tex276213 +Node: copyright symbol276629 +Node: pounds276889 +Node: minus277253 +Node: math278175 +Node: Glyphs278903 +Node: Glyphs Summary280016 +Node: result280644 +Node: expansion281129 +Node: Print Glyph282085 +Node: Error Glyph282962 +Node: Equivalence283795 +Node: Point Glyph284483 +Node: Images286040 +Node: Breaks287707 +Node: Break Commands289138 +Node: Line Breaks289979 +Node: - and hyphenation290997 +Node: w292247 +Node: sp292960 +Node: page293369 +Node: group293746 +Node: need295489 +Node: Definition Commands296219 +Node: Def Cmd Template297790 +Node: Optional Arguments300787 +Node: deffnx302375 +Node: Def Cmds in Detail303330 +Node: Functions Commands304440 +Node: Variables Commands307445 +Node: Typed Functions309531 +Node: Typed Variables313073 +Node: Abstract Objects315056 +Node: Data Types320281 +Node: Def Cmd Conventions321536 +Node: Sample Function Definition322099 +Node: Footnotes324983 +Node: Footnotes-Footnotes325371 +Ref: Footnotes-Footnote-1325437 +Node: Footnote Commands325717 +Node: Footnote Commands-Footnotes327214 +Ref: Footnote Commands-Footnote-1327296 +Node: Footnote Styles327332 +Node: Conditionals329918 +Node: Conditional Commands330729 +Node: Conditional Not Commands332222 +Node: Raw Formatter Commands332967 +Node: set clear value334797 +Node: ifset ifclear335598 +Node: value338777 +Node: value Example340189 +Node: Macros341767 +Node: Defining Macros342472 +Node: Invoking Macros343561 +Node: Format/Print Hardcopy344667 +Node: Use TeX346504 +Node: Format with tex/texindex347132 +Node: Format with texi2dvi350773 +Node: Print with lpr351364 +Node: Within Emacs352218 +Node: Texinfo Mode Printing353137 +Node: Compile-Command356547 +Node: Requirements Summary357435 +Node: Preparing for TeX358748 +Node: Overfull hboxes361535 +Node: smallbook363094 +Node: A4 Paper364612 +Node: Cropmarks and Magnification365837 +Node: Create an Info File367778 +Node: makeinfo advantages369081 +Node: Invoking makeinfo369997 +Node: makeinfo options370685 +Node: Pointer Validation376169 +Node: makeinfo in Emacs377513 +Node: texinfo-format commands380071 +Node: Batch Formatting381342 +Node: Tag and Split Files382558 +Node: Install an Info File385912 +Node: Directory file386730 +Node: New Info File388598 +Node: Other Info Directories389659 +Node: Installing Dir Entries392874 +Node: Invoking install-info394867 +Node: Command List397282 +Node: Tips435252 +Node: Sample Texinfo File446662 +Node: Sample Permissions448781 +Node: Inserting Permissions449824 +Node: ifinfo Permissions452130 +Node: Titlepage Permissions453751 +Node: Include Files455013 +Node: Using Include Files456100 +Node: texinfo-multiple-files-update458055 +Node: Include File Requirements460416 +Node: Sample Include File461661 +Node: Include Files Evolution463180 +Node: Headings465151 +Node: Headings Introduced465788 +Node: Heading Format467676 +Node: Heading Choice470128 +Node: Custom Headings471500 +Node: Catching Mistakes475828 +Node: makeinfo Preferred477117 +Node: Debugging with Info478022 +Node: Debugging with TeX481368 +Node: Using texinfo-show-structure485648 +Node: Using occur488747 +Node: Running Info-Validate490284 +Node: Using Info-validate491345 +Node: Unsplit493187 +Node: Tagifying494233 +Node: Splitting495085 +Node: Refilling Paragraphs496701 +Node: Refilling Paragraphs-Footnotes498355 +Ref: Refilling Paragraphs-Footnote-1498443 +Node: Command Syntax498606 +Node: Obtaining TeX501563 +Node: Command and Variable Index503676 +Node: Concept Index519528  End Tag Table diff --git a/info/texinfo.info-1 b/info/texinfo.info-1 index 8ee9a21..ffb02ba 100644 --- a/info/texinfo.info-1 +++ b/info/texinfo.info-1 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-10 b/info/texinfo.info-10 index 7ea65d1..aea9a20 100644 --- a/info/texinfo.info-10 +++ b/info/texinfo.info-10 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-11 b/info/texinfo.info-11 index 3f8c007..43fe115 100644 --- a/info/texinfo.info-11 +++ b/info/texinfo.info-11 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-12 b/info/texinfo.info-12 index 8868116..de69019 100644 --- a/info/texinfo.info-12 +++ b/info/texinfo.info-12 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-2 b/info/texinfo.info-2 index 2d9851d..fc54512 100644 --- a/info/texinfo.info-2 +++ b/info/texinfo.info-2 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-3 b/info/texinfo.info-3 index 02f4b8b..5eab100 100644 --- a/info/texinfo.info-3 +++ b/info/texinfo.info-3 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-4 b/info/texinfo.info-4 index 5d7fa08..c1e77ef 100644 --- a/info/texinfo.info-4 +++ b/info/texinfo.info-4 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-5 b/info/texinfo.info-5 index ad0ff64..f285171 100644 --- a/info/texinfo.info-5 +++ b/info/texinfo.info-5 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-6 b/info/texinfo.info-6 index 3cb8989..bbfb172 100644 --- a/info/texinfo.info-6 +++ b/info/texinfo.info-6 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-7 b/info/texinfo.info-7 index c64f1ee..10a127a 100644 --- a/info/texinfo.info-7 +++ b/info/texinfo.info-7 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-8 b/info/texinfo.info-8 index 7c39015..79ed349 100644 --- a/info/texinfo.info-8 +++ b/info/texinfo.info-8 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/texinfo.info-9 b/info/texinfo.info-9 index 97f0356..8448388 100644 --- a/info/texinfo.info-9 +++ b/info/texinfo.info-9 @@ -1,4 +1,4 @@ -This is ../info/texinfo.info, produced by makeinfo version 4.0b from +This is ../info/texinfo.info, produced by makeinfo version 4.0 from texinfo.texi. INFO-DIR-SECTION Texinfo documentation system diff --git a/info/xemacs-faq.info b/info/xemacs-faq.info index bbe2a0c..bd41315 100644 --- a/info/xemacs-faq.info +++ b/info/xemacs-faq.info @@ -9,10 +9,10 @@ END-INFO-DIR-ENTRY  Indirect: xemacs-faq.info-1: 205 -xemacs-faq.info-2: 50001 -xemacs-faq.info-3: 99619 -xemacs-faq.info-4: 149494 -xemacs-faq.info-5: 199356 +xemacs-faq.info-2: 49999 +xemacs-faq.info-3: 99617 +xemacs-faq.info-4: 149492 +xemacs-faq.info-5: 199354  Tag Table: (Indirect) @@ -29,240 +29,240 @@ Node: Q1.0.824887 Node: Q1.0.925102 Node: Q1.0.1025380 Node: Q1.0.1125623 -Node: Q1.0.1226012 -Node: Q1.0.1326380 -Node: Q1.0.1426629 -Node: Q1.1.127141 -Node: Q1.1.228183 -Node: Q1.1.328576 -Node: Q1.2.129527 -Node: Q1.2.230583 -Node: Q1.2.331017 -Node: Q1.3.132101 -Node: Q1.3.232752 -Node: Q1.3.333216 -Node: Q1.3.433457 -Node: Q1.3.534230 -Node: Q1.3.636635 -Node: Q1.3.738166 -Node: Q1.4.139101 -Node: Q1.4.239963 -Node: Q1.4.340304 -Node: Q1.4.440723 -Node: Q1.4.542263 -Node: Q1.4.642567 -Node: Installation43560 -Node: Q2.0.146135 -Node: Q2.0.246935 -Node: Q2.0.348703 -Node: Q2.0.450001 -Node: Q2.0.550593 -Node: Q2.0.650941 -Node: Q2.0.751322 -Node: Q2.0.851703 -Node: Q2.0.953280 -Node: Q2.0.1054718 -Node: Q2.0.1155562 -Node: Q2.0.1256503 -Node: Q2.0.1358026 -Node: Q2.0.1458515 -Node: Q2.1.159573 -Node: Q2.1.262315 -Node: Q2.1.363492 -Node: Q2.1.464785 -Node: Q2.1.565584 -Node: Q2.1.665946 -Node: Q2.1.766423 -Node: Q2.1.866776 -Node: Q2.1.968310 -Node: Q2.1.1068732 -Node: Q2.1.1169489 -Node: Q2.1.1270354 -Node: Q2.1.1371309 -Node: Q2.1.1472340 -Node: Q2.1.1573451 -Node: Q2.1.1680483 -Node: Q2.1.1781177 -Node: Q2.1.1881774 -Node: Q2.1.1981901 -Node: Q2.1.2082431 -Node: Q2.1.2182813 -Node: Q2.1.2283006 -Node: Q2.1.2384303 -Node: Q2.1.2484971 -Node: Q2.1.2585443 -Node: Customization86078 -Node: Q3.0.190916 -Node: Q3.0.291622 -Node: Q3.0.392186 -Node: Q3.0.492603 -Node: Q3.0.593436 -Node: Q3.0.694217 -Node: Q3.0.794797 -Node: Q3.0.895461 -Node: Q3.0.996419 -Node: Q3.1.196980 -Node: Q3.1.297717 -Node: Q3.1.398148 -Node: Q3.1.498337 -Node: Q3.1.598526 -Node: Q3.1.698910 -Node: Q3.1.799619 -Node: Q3.1.8101843 -Node: Q3.2.1102385 -Node: Q3.2.2104038 -Node: Q3.2.3104837 -Node: Q3.2.4105439 -Node: Q3.2.5106473 -Node: Q3.2.6106940 -Node: Q3.3.1107865 -Node: Q3.3.2108295 -Node: Q3.3.3108926 -Node: Q3.3.4109307 -Node: Q3.3.5110408 -Node: Q3.4.1111902 -Node: Q3.4.2112545 -Node: Q3.5.1113057 -Node: Q3.5.2114506 -Node: Q3.5.3114924 -Node: Q3.5.4115762 -Node: Q3.5.5116594 -Node: Q3.5.6117734 -Node: Q3.5.7118724 -Node: Q3.5.8120164 -Node: Q3.5.9120911 -Node: Q3.5.10121691 -Node: Q3.5.11122327 -Node: Q3.6.1122880 -Node: Q3.6.2123625 -Node: Q3.6.3124053 -Node: Q3.7.1124553 -Node: Q3.7.2125441 -Node: Q3.7.3126100 -Node: Q3.7.4126522 -Node: Q3.7.5126865 -Node: Q3.7.6127333 -Node: Q3.7.7128048 -Node: Q3.7.8129068 -Node: Q3.8.1129487 -Node: Q3.8.2129947 -Node: Q3.8.3130410 -Node: Q3.8.4131016 -Node: Q3.8.5131735 -Node: Q3.9.1132520 -Node: Q3.9.2133460 -Node: Q3.9.3134058 -Node: Q3.9.4134720 -Node: Q3.10.1135599 -Node: Q3.10.2136417 -Node: Q3.10.3137422 -Node: Q3.10.4138150 -Node: Q3.10.5138533 -Node: Subsystems139585 -Node: Q4.0.1142072 -Node: Q4.0.2142597 -Node: Q4.0.3143155 -Node: Q4.0.4143476 -Node: Q4.0.5143718 -Node: Q4.0.6143949 -Node: Q4.0.7144537 -Node: Q4.0.8144862 -Node: Q4.0.9146089 -Node: Q4.0.10148127 -Node: Q4.0.11148616 -Node: Q4.0.12149494 -Node: Q4.1.1150467 -Node: Q4.1.2150870 -Node: Q4.1.3151197 -Node: Q4.2.1151506 -Node: Q4.2.2152136 -Node: Q4.2.3152376 -Node: Q4.2.4152920 -Node: Q4.3.1153573 -Node: Q4.3.2154157 -Node: Q4.3.3155638 -Node: Q4.3.4155910 -Node: Q4.3.5156587 -Node: Q4.4.1157215 -Node: Q4.4.2158701 -Node: Q4.5.1159905 -Node: Q4.6.1160674 -Node: Q4.7.1165934 -Node: Q4.7.2166889 -Node: Q4.7.3167186 -Node: Q4.7.4167372 -Node: Q4.7.5168256 -Node: Q4.7.6169897 -Node: Miscellaneous170186 -Node: Q5.0.1173599 -Node: Q5.0.2174338 -Node: Q5.0.3175192 -Node: Q5.0.4175894 -Node: Q5.0.5176833 -Node: Q5.0.6178813 -Node: Q5.0.7179470 -Node: Q5.0.8180075 -Node: Q5.0.9180594 -Node: Q5.0.10181108 -Node: Q5.0.11181356 -Node: Q5.0.12181894 -Node: Q5.0.13182811 -Node: Q5.0.14183495 -Node: Q5.0.15184260 -Node: Q5.0.16184557 -Node: Q5.0.17185069 -Node: Q5.0.18185334 -Node: Q5.0.19185528 -Node: Q5.0.20185952 -Node: Q5.1.1186867 -Node: Q5.1.2188936 -Node: Q5.1.3189672 -Node: Q5.1.4193066 -Node: Q5.1.5193601 -Node: Q5.1.6195725 -Node: Q5.1.7197211 -Node: Q5.1.8198804 -Node: Q5.1.9199356 -Node: Q5.1.10200241 -Node: Q5.1.11201372 -Node: Q5.2.1201921 -Node: Q5.2.2202491 -Node: Q5.2.3202908 -Node: Q5.2.4203143 -Node: Q5.3.1204053 -Node: Q5.3.2205274 -Node: Q5.3.3206050 -Node: Q5.3.4206534 -Node: Q5.3.5207201 -Node: Q5.3.6208070 -Node: Q5.3.7208315 -Node: Q5.3.8210505 -Node: Q5.3.9210752 -Node: Q5.3.10211705 -Node: Q5.3.11213789 -Node: Q5.3.12215380 -Node: MS Windows216654 -Node: Q6.0.1218131 -Node: Q6.0.2218878 -Node: Q6.0.3219343 -Node: Q6.0.4219623 -Node: Q6.1.1221902 -Node: Q6.1.2222773 -Node: Q6.1.3223228 -Node: Q6.1.4223510 -Node: Q6.1.5223888 -Node: Q6.1.6224756 -Node: Q6.2.1227062 -Node: Q6.2.2227963 -Node: Q6.2.3228375 -Node: Q6.3.1228664 -Node: Q6.3.2229758 -Node: Q6.3.3232939 -Node: Q6.4.1233208 -Node: Current Events234543 -Node: Q7.0.1235197 -Node: Q7.0.2235836 -Node: Q7.0.3236909 -Node: Q7.0.4237137 +Node: Q1.0.1226010 +Node: Q1.0.1326378 +Node: Q1.0.1426627 +Node: Q1.1.127139 +Node: Q1.1.228181 +Node: Q1.1.328574 +Node: Q1.2.129525 +Node: Q1.2.230581 +Node: Q1.2.331015 +Node: Q1.3.132099 +Node: Q1.3.232750 +Node: Q1.3.333214 +Node: Q1.3.433455 +Node: Q1.3.534228 +Node: Q1.3.636633 +Node: Q1.3.738164 +Node: Q1.4.139099 +Node: Q1.4.239961 +Node: Q1.4.340302 +Node: Q1.4.440721 +Node: Q1.4.542261 +Node: Q1.4.642565 +Node: Installation43558 +Node: Q2.0.146133 +Node: Q2.0.246933 +Node: Q2.0.348701 +Node: Q2.0.449999 +Node: Q2.0.550591 +Node: Q2.0.650939 +Node: Q2.0.751320 +Node: Q2.0.851701 +Node: Q2.0.953278 +Node: Q2.0.1054716 +Node: Q2.0.1155560 +Node: Q2.0.1256501 +Node: Q2.0.1358024 +Node: Q2.0.1458513 +Node: Q2.1.159571 +Node: Q2.1.262313 +Node: Q2.1.363490 +Node: Q2.1.464783 +Node: Q2.1.565582 +Node: Q2.1.665944 +Node: Q2.1.766421 +Node: Q2.1.866774 +Node: Q2.1.968308 +Node: Q2.1.1068730 +Node: Q2.1.1169487 +Node: Q2.1.1270352 +Node: Q2.1.1371307 +Node: Q2.1.1472338 +Node: Q2.1.1573449 +Node: Q2.1.1680481 +Node: Q2.1.1781175 +Node: Q2.1.1881772 +Node: Q2.1.1981899 +Node: Q2.1.2082429 +Node: Q2.1.2182811 +Node: Q2.1.2283004 +Node: Q2.1.2384301 +Node: Q2.1.2484969 +Node: Q2.1.2585441 +Node: Customization86076 +Node: Q3.0.190914 +Node: Q3.0.291620 +Node: Q3.0.392184 +Node: Q3.0.492601 +Node: Q3.0.593434 +Node: Q3.0.694215 +Node: Q3.0.794795 +Node: Q3.0.895459 +Node: Q3.0.996417 +Node: Q3.1.196978 +Node: Q3.1.297715 +Node: Q3.1.398146 +Node: Q3.1.498335 +Node: Q3.1.598524 +Node: Q3.1.698908 +Node: Q3.1.799617 +Node: Q3.1.8101841 +Node: Q3.2.1102383 +Node: Q3.2.2104036 +Node: Q3.2.3104835 +Node: Q3.2.4105437 +Node: Q3.2.5106471 +Node: Q3.2.6106938 +Node: Q3.3.1107863 +Node: Q3.3.2108293 +Node: Q3.3.3108924 +Node: Q3.3.4109305 +Node: Q3.3.5110406 +Node: Q3.4.1111900 +Node: Q3.4.2112543 +Node: Q3.5.1113055 +Node: Q3.5.2114504 +Node: Q3.5.3114922 +Node: Q3.5.4115760 +Node: Q3.5.5116592 +Node: Q3.5.6117732 +Node: Q3.5.7118722 +Node: Q3.5.8120162 +Node: Q3.5.9120909 +Node: Q3.5.10121689 +Node: Q3.5.11122325 +Node: Q3.6.1122878 +Node: Q3.6.2123623 +Node: Q3.6.3124051 +Node: Q3.7.1124551 +Node: Q3.7.2125439 +Node: Q3.7.3126098 +Node: Q3.7.4126520 +Node: Q3.7.5126863 +Node: Q3.7.6127331 +Node: Q3.7.7128046 +Node: Q3.7.8129066 +Node: Q3.8.1129485 +Node: Q3.8.2129945 +Node: Q3.8.3130408 +Node: Q3.8.4131014 +Node: Q3.8.5131733 +Node: Q3.9.1132518 +Node: Q3.9.2133458 +Node: Q3.9.3134056 +Node: Q3.9.4134718 +Node: Q3.10.1135597 +Node: Q3.10.2136415 +Node: Q3.10.3137420 +Node: Q3.10.4138148 +Node: Q3.10.5138531 +Node: Subsystems139583 +Node: Q4.0.1142070 +Node: Q4.0.2142595 +Node: Q4.0.3143153 +Node: Q4.0.4143474 +Node: Q4.0.5143716 +Node: Q4.0.6143947 +Node: Q4.0.7144535 +Node: Q4.0.8144860 +Node: Q4.0.9146087 +Node: Q4.0.10148125 +Node: Q4.0.11148614 +Node: Q4.0.12149492 +Node: Q4.1.1150465 +Node: Q4.1.2150868 +Node: Q4.1.3151195 +Node: Q4.2.1151504 +Node: Q4.2.2152134 +Node: Q4.2.3152374 +Node: Q4.2.4152918 +Node: Q4.3.1153571 +Node: Q4.3.2154155 +Node: Q4.3.3155636 +Node: Q4.3.4155908 +Node: Q4.3.5156585 +Node: Q4.4.1157213 +Node: Q4.4.2158699 +Node: Q4.5.1159903 +Node: Q4.6.1160672 +Node: Q4.7.1165932 +Node: Q4.7.2166887 +Node: Q4.7.3167184 +Node: Q4.7.4167370 +Node: Q4.7.5168254 +Node: Q4.7.6169895 +Node: Miscellaneous170184 +Node: Q5.0.1173597 +Node: Q5.0.2174336 +Node: Q5.0.3175190 +Node: Q5.0.4175892 +Node: Q5.0.5176831 +Node: Q5.0.6178811 +Node: Q5.0.7179468 +Node: Q5.0.8180073 +Node: Q5.0.9180592 +Node: Q5.0.10181106 +Node: Q5.0.11181354 +Node: Q5.0.12181892 +Node: Q5.0.13182809 +Node: Q5.0.14183493 +Node: Q5.0.15184258 +Node: Q5.0.16184555 +Node: Q5.0.17185067 +Node: Q5.0.18185332 +Node: Q5.0.19185526 +Node: Q5.0.20185950 +Node: Q5.1.1186865 +Node: Q5.1.2188934 +Node: Q5.1.3189670 +Node: Q5.1.4193064 +Node: Q5.1.5193599 +Node: Q5.1.6195723 +Node: Q5.1.7197209 +Node: Q5.1.8198802 +Node: Q5.1.9199354 +Node: Q5.1.10200239 +Node: Q5.1.11201370 +Node: Q5.2.1201919 +Node: Q5.2.2202489 +Node: Q5.2.3202906 +Node: Q5.2.4203141 +Node: Q5.3.1204051 +Node: Q5.3.2205272 +Node: Q5.3.3206048 +Node: Q5.3.4206532 +Node: Q5.3.5207199 +Node: Q5.3.6208068 +Node: Q5.3.7208313 +Node: Q5.3.8210503 +Node: Q5.3.9210750 +Node: Q5.3.10211703 +Node: Q5.3.11213787 +Node: Q5.3.12215378 +Node: MS Windows216652 +Node: Q6.0.1218129 +Node: Q6.0.2218876 +Node: Q6.0.3219341 +Node: Q6.0.4219621 +Node: Q6.1.1221900 +Node: Q6.1.2222771 +Node: Q6.1.3223226 +Node: Q6.1.4223508 +Node: Q6.1.5223886 +Node: Q6.1.6224754 +Node: Q6.2.1227060 +Node: Q6.2.2227961 +Node: Q6.2.3228373 +Node: Q6.3.1228662 +Node: Q6.3.2229756 +Node: Q6.3.3232937 +Node: Q6.4.1233206 +Node: Current Events234541 +Node: Q7.0.1235195 +Node: Q7.0.2235834 +Node: Q7.0.3236907 +Node: Q7.0.4237135  End Tag Table diff --git a/info/xemacs-faq.info-1 b/info/xemacs-faq.info-1 index 4f6b9b0..6706c9f 100644 --- a/info/xemacs-faq.info-1 +++ b/info/xemacs-faq.info-1 @@ -609,7 +609,7 @@ Q1.0.11: Is there a port of XEmacs to the Macintosh? Yes, there is a port of XEmacs 19.14, tested on MacOS 7.6.1 and MacOS 8.5.1 by Pitts Jarvis . It's available at -`http://my.ispchannel.com/~pjarvis/xemacs.html'. +`http://homepage.mac.com/pjarvis/xemacs.html'.  File: xemacs-faq.info, Node: Q1.0.12, Next: Q1.0.13, Prev: Q1.0.11, Up: Introduction diff --git a/info/xemacs.info b/info/xemacs.info index a30efe7..b2ba08b 100644 --- a/info/xemacs.info +++ b/info/xemacs.info @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor @@ -31,33 +31,33 @@ translation approved by the author instead of in the original English.  Indirect: -xemacs.info-1: 1351 +xemacs.info-1: 1350 xemacs.info-2: 48996 -xemacs.info-3: 96093 -xemacs.info-4: 145333 -xemacs.info-5: 194484 -xemacs.info-6: 242144 -xemacs.info-7: 282227 -xemacs.info-8: 332190 -xemacs.info-9: 379660 -xemacs.info-10: 428178 -xemacs.info-11: 476002 -xemacs.info-12: 525173 -xemacs.info-13: 574356 -xemacs.info-14: 623433 -xemacs.info-15: 672813 -xemacs.info-16: 722680 -xemacs.info-17: 771316 -xemacs.info-18: 820011 -xemacs.info-19: 868928 -xemacs.info-20: 915111 -xemacs.info-21: 964515 -xemacs.info-22: 1007101 +xemacs.info-3: 96978 +xemacs.info-4: 146218 +xemacs.info-5: 195369 +xemacs.info-6: 243029 +xemacs.info-7: 283112 +xemacs.info-8: 333075 +xemacs.info-9: 380545 +xemacs.info-10: 429063 +xemacs.info-11: 476887 +xemacs.info-12: 526058 +xemacs.info-13: 575241 +xemacs.info-14: 624318 +xemacs.info-15: 673698 +xemacs.info-16: 723565 +xemacs.info-17: 772201 +xemacs.info-18: 820896 +xemacs.info-19: 869813 +xemacs.info-20: 915996 +xemacs.info-21: 965400 +xemacs.info-22: 1007986  Tag Table: (Indirect) -Node: Top1351 -Node: License22791 +Node: Top1350 +Node: License22790 Node: Distrib36072 Node: Intro37736 Node: Frame40607 @@ -65,367 +65,368 @@ Node: Point44652 Node: Echo Area46619 Node: Mode Line48996 Node: GUI Components53427 -Node: Menubar Basics54657 -Node: Scrollbar Basics56573 -Node: Toolbar Basics57464 -Node: Gutter Basics58131 -Node: Inhibiting60185 -Node: Customizing62556 -Node: XEmacs under X62805 -Node: XEmacs under MS Windows66019 -Node: Keystrokes66434 -Node: Intro to Keystrokes67278 -Node: Representing Keystrokes69381 -Node: Key Sequences70738 -Node: String Key Sequences74079 -Node: Meta Key74462 -Node: Super and Hyper Keys75935 -Node: Character Representation82180 -Node: Commands83200 -Node: Pull-down Menus86049 -Node: File Menu89398 -Node: Edit Menu93220 -Node: Apps Menu95603 -Node: Options Menu96093 -Node: Buffers Menu100111 -Node: Tools Menu100418 -Node: Help Menu100909 -Node: Menu Customization101310 -Node: Entering Emacs105540 -Node: Exiting108437 -Node: Command Switches112910 -Node: Startup Paths122932 -Node: Basic130262 -Node: Inserting Text131666 -Node: Moving Point134662 -Node: Erasing138268 -Node: Basic Files139573 -Node: Basic Help141495 -Node: Blank Lines142090 -Node: Continuation Lines143666 -Node: Position Info145333 -Node: Arguments148749 -Node: Undo152848 -Node: Minibuffer155795 -Node: Minibuffer File158405 -Node: Minibuffer Edit160210 -Node: Completion163151 -Node: Completion Example165082 -Node: Completion Commands166177 -Node: Strict Completion169153 -Node: Completion Options170934 -Node: Minibuffer History172442 -Node: Repetition175626 -Node: M-x178471 -Node: Help183565 -Node: Help Summary184975 -Node: Key Help187761 -Node: Name Help188720 -Node: Apropos191365 -Node: Library Keywords194484 -Node: Help Mode196805 -Node: Misc Help197302 -Node: Mark200450 -Node: Setting Mark202304 -Node: Using Region205426 -Node: Marking Objects206163 -Node: Mark Ring208001 -Node: Mouse Selection209717 -Node: Additional Mouse Operations211724 -Node: Killing215928 -Node: Yanking221564 -Node: Kill Ring222367 -Node: Appending Kills223969 -Node: Earlier Kills226006 -Node: Using X Selections228619 -Node: X Clipboard Selection229869 -Node: X Selection Commands232046 -Node: X Cut Buffers233132 -Node: Active Regions234491 -Node: Accumulating Text239071 -Node: Rectangles242144 -Node: Registers245663 -Node: RegPos247117 -Node: RegText248273 -Node: RegRect249379 -Node: RegConfig250258 -Node: RegNumbers251198 -Node: RegFiles251916 -Node: Bookmarks252574 -Node: Display255946 -Node: Scrolling257441 -Node: Horizontal Scrolling261584 -Node: Selective Display262779 -Node: Display Vars263998 -Node: Search266676 -Node: Incremental Search267869 -Node: Non-Incremental Search276797 -Node: Word Search278239 -Node: Regexp Search279857 -Node: Regexps282227 -Node: Search Case296224 -Node: Replace297005 -Node: Unconditional Replace297953 -Node: Regexp Replace299088 -Node: Replacement and Case300023 -Node: Query Replace301003 -Node: Other Repeating Search304230 -Node: Fixit305485 -Node: Kill Errors306065 -Node: Transpose307398 -Node: Fixing Case309802 -Node: Spelling310448 -Node: Files311909 -Node: File Names313219 -Node: Visiting317556 -Node: Saving324388 -Node: Backup329311 -Node: Backup Names330707 -Node: Backup Deletion332190 -Node: Backup Copying333340 -Node: Interlocking335046 -Node: Reverting339174 -Node: Auto Save341086 -Node: Auto Save Files342053 -Node: Auto Save Control343894 -Node: Recover345732 -Node: Version Control346887 -Node: Concepts of VC348925 -Node: Editing with VC350535 -Node: Variables for Check-in/out355791 -Node: Log Entries357690 -Node: Change Logs and VC358870 -Node: Old Versions362137 -Node: VC Status364140 -Node: Renaming and VC365854 -Node: Snapshots366533 -Node: Making Snapshots367034 -Node: Snapshot Caveats368327 -Node: Version Headers370136 -Node: ListDir372835 -Node: Comparing Files374884 -Node: Dired376417 -Node: Dired Enter377088 -Node: Dired Edit377913 -Node: Dired Deletion379660 -Node: Dired Immed382883 -Node: Misc File Ops384159 -Node: Buffers386647 -Node: Select Buffer388805 -Node: List Buffers390600 -Node: Misc Buffer392358 -Node: Kill Buffer394001 -Node: Several Buffers395131 -Node: Windows398998 -Node: Basic Window399709 -Node: Split Window401428 -Node: Other Window403561 -Node: Pop Up Window405992 -Node: Change Window407497 -Node: Mule410405 -Node: Mule Intro411668 -Node: Language Environments412684 -Node: Input Methods414791 -Node: Select Input Method418511 -Node: Coding Systems420666 -Node: Recognize Coding424852 -Node: Specify Coding428178 -Node: Major Modes433109 -Node: Choosing Modes435328 -Node: Indentation437718 -Node: Indentation Commands439813 -Node: Tab Stops442542 -Node: Just Spaces444391 -Node: Text445206 -Node: Text Mode447189 -Node: Nroff Mode449268 -Node: TeX Mode450911 -Node: TeX Editing453163 -Node: TeX Print456597 -Node: Outline Mode459816 -Node: Outline Format461297 -Node: Outline Motion464097 -Node: Outline Visibility465650 -Node: Words468571 -Node: Sentences471518 -Node: Paragraphs473714 -Node: Pages476002 -Node: Filling478602 -Node: Auto Fill479173 -Node: Fill Commands481320 -Node: Fill Prefix483485 -Node: Case485673 -Node: Programs487701 -Node: Program Modes490251 -Node: Lists492483 -Node: Defuns498323 -Node: Grinding500976 -Node: Basic Indent501604 -Node: Multi-line Indent503625 -Node: Lisp Indent505241 -Node: C Indent508691 -Node: Matching513931 -Node: Comments515453 -Node: Balanced Editing521905 -Node: Lisp Completion522919 -Node: Documentation523934 -Node: Change Log525173 -Node: Tags527751 -Node: Tag Syntax529400 -Node: Create Tags Table533344 -Node: Etags Regexps537404 -Node: Select Tags Table542062 -Node: Find Tag545835 -Node: Tags Search548799 -Node: List Tags552255 -Node: Fortran553284 -Node: Fortran Motion554360 -Node: Fortran Indent555180 -Node: ForIndent Commands555865 -Node: ForIndent Num557010 -Node: ForIndent Conv558284 -Node: ForIndent Vars559060 -Node: Fortran Comments560228 -Node: Fortran Columns563826 -Node: Fortran Abbrev565249 -Node: Asm Mode566158 -Node: Running566710 -Node: Compilation567679 -Node: Lisp Modes572529 -Node: Lisp Libraries573802 -Node: Loading574356 -Node: Compiling Libraries578816 -Node: Mocklisp581707 -Node: Lisp Eval582384 -Node: Lisp Debug586024 -Node: Lisp Interaction591451 -Node: External Lisp592806 -Node: Packages594880 -Node: Package Terminology595735 -Node: Using Packages597093 -Node: Building Packages605971 -Node: Creating Packages608514 -Node: Available Packages613514 -Node: Abbrevs618787 -Node: Defining Abbrevs620986 -Node: Expanding Abbrevs623433 -Node: Editing Abbrevs626135 -Node: Saving Abbrevs628008 -Node: Dynamic Abbrevs629963 -Node: Picture631265 -Node: Basic Picture633698 -Node: Insert in Picture635983 -Node: Tabs in Picture637405 -Node: Rectangles in Picture638926 -Node: Sending Mail640834 -Node: Mail Format642545 -Node: Mail Headers643895 -Node: Mail Mode650303 -Node: Reading Mail653916 -Node: Calendar/Diary655491 -Node: Calendar Motion657165 -Node: Calendar Unit Motion658048 -Node: Move to Beginning or End660371 -Node: Specified Dates661504 -Node: Scroll Calendar662392 -Node: Mark and Region664183 -Node: General Calendar666089 -Node: LaTeX Calendar667697 -Node: Holidays669711 -Node: Sunrise/Sunset672813 -Node: Lunar Phases675852 -Node: Other Calendars677237 -Node: Calendar Systems678724 -Node: To Other Calendar681835 -Node: From Other Calendar683826 -Node: Mayan Calendar686131 -Node: Diary689326 -Node: Diary Commands691075 -Node: Format of Diary File694398 -Node: Date Formats697268 -Node: Adding to Diary699842 -Node: Special Diary Entries701473 -Node: Calendar Customization706812 -Node: Calendar Customizing707674 -Node: Holiday Customizing710909 -Node: Date Display Format717396 -Node: Time Display Format718354 -Node: Daylight Savings719492 -Node: Diary Customizing722680 -Node: Hebrew/Islamic Entries727301 -Node: Fancy Diary Display730641 -Node: Included Diary Files732557 -Node: Sexp Diary Entries733538 -Node: Appt Customizing738628 -Node: Sorting739674 -Node: Shell744480 -Node: Single Shell745773 -Node: Interactive Shell747387 -Node: Shell Mode751152 -Node: Terminal emulator753643 -Node: Term Mode755952 -Node: Paging in Term756866 -Node: Narrowing757664 -Node: Hardcopy759614 -Node: Recursive Edit760586 -Node: Dissociated Press763573 -Node: CONX766136 -Node: Amusements767160 -Node: Emulation767640 -Node: Customization769500 -Node: Minor Modes771316 -Node: Variables772948 -Node: Examining774904 -Node: Easy Customization776365 -Node: Customization Groups777379 -Node: Changing an Option780308 -Node: Face Customization786578 -Node: Specific Customization788342 -Node: Edit Options790949 -Node: Locals792533 -Node: File Variables795712 -Node: Keyboard Macros800262 -Node: Basic Kbd Macro802433 -Node: Save Kbd Macro804365 -Node: Kbd Macro Query806023 -Node: Key Bindings807965 -Node: Keymaps808839 -Node: Rebinding812689 -Node: Interactive Rebinding813388 -Node: Programmatic Rebinding815577 -Node: Key Bindings Using Strings818384 -Node: Disabling820011 -Node: Syntax821790 -Node: Syntax Entry822671 -Node: Syntax Change826755 -Node: Init File828924 -Node: Init Syntax830388 -Node: Init Examples832739 -Node: Terminal Init836929 -Node: Audible Bell838666 -Node: Faces842097 -Node: Frame Components846939 -Node: X Resources847384 -Node: Geometry Resources849043 -Node: Iconic Resources851491 -Node: Resource List851963 -Node: Face Resources858470 -Node: Widgets862147 -Node: Menubar Resources863086 -Node: Quitting864600 -Node: Lossage867578 -Node: Stuck Recursive868222 -Node: Screen Garbled868928 -Node: Text Garbled870062 -Node: Unasked-for Search870701 -Node: Emergency Escape871486 -Node: Total Frustration873265 -Node: Bugs873896 -Node: Glossary883457 -Node: Manifesto915111 -Node: Key Index938588 -Node: Command Index964515 -Node: Variable Index1007101 -Node: Concept Index1023187 +Node: Menubar Basics54708 +Node: Scrollbar Basics56624 +Node: Mode Line Basics57517 +Node: Toolbar Basics58349 +Node: Gutter Basics59016 +Node: Inhibiting61070 +Node: Customizing63441 +Node: XEmacs under X63690 +Node: XEmacs under MS Windows66904 +Node: Keystrokes67319 +Node: Intro to Keystrokes68163 +Node: Representing Keystrokes70266 +Node: Key Sequences71623 +Node: String Key Sequences74964 +Node: Meta Key75347 +Node: Super and Hyper Keys76820 +Node: Character Representation83065 +Node: Commands84085 +Node: Pull-down Menus86934 +Node: File Menu90283 +Node: Edit Menu94105 +Node: Apps Menu96488 +Node: Options Menu96978 +Node: Buffers Menu100996 +Node: Tools Menu101303 +Node: Help Menu101794 +Node: Menu Customization102195 +Node: Entering Emacs106425 +Node: Exiting109322 +Node: Command Switches113795 +Node: Startup Paths123817 +Node: Basic131147 +Node: Inserting Text132551 +Node: Moving Point135547 +Node: Erasing139153 +Node: Basic Files140458 +Node: Basic Help142380 +Node: Blank Lines142975 +Node: Continuation Lines144551 +Node: Position Info146218 +Node: Arguments149634 +Node: Undo153733 +Node: Minibuffer156680 +Node: Minibuffer File159290 +Node: Minibuffer Edit161095 +Node: Completion164036 +Node: Completion Example165967 +Node: Completion Commands167062 +Node: Strict Completion170038 +Node: Completion Options171819 +Node: Minibuffer History173327 +Node: Repetition176511 +Node: M-x179356 +Node: Help184450 +Node: Help Summary185860 +Node: Key Help188646 +Node: Name Help189605 +Node: Apropos192250 +Node: Library Keywords195369 +Node: Help Mode197690 +Node: Misc Help198187 +Node: Mark201335 +Node: Setting Mark203189 +Node: Using Region206311 +Node: Marking Objects207048 +Node: Mark Ring208886 +Node: Mouse Selection210602 +Node: Additional Mouse Operations212609 +Node: Killing216813 +Node: Yanking222449 +Node: Kill Ring223252 +Node: Appending Kills224854 +Node: Earlier Kills226891 +Node: Using X Selections229504 +Node: X Clipboard Selection230754 +Node: X Selection Commands232931 +Node: X Cut Buffers234017 +Node: Active Regions235376 +Node: Accumulating Text239956 +Node: Rectangles243029 +Node: Registers246548 +Node: RegPos248002 +Node: RegText249158 +Node: RegRect250264 +Node: RegConfig251143 +Node: RegNumbers252083 +Node: RegFiles252801 +Node: Bookmarks253459 +Node: Display256831 +Node: Scrolling258326 +Node: Horizontal Scrolling262469 +Node: Selective Display263664 +Node: Display Vars264883 +Node: Search267561 +Node: Incremental Search268754 +Node: Non-Incremental Search277682 +Node: Word Search279124 +Node: Regexp Search280742 +Node: Regexps283112 +Node: Search Case297109 +Node: Replace297890 +Node: Unconditional Replace298838 +Node: Regexp Replace299973 +Node: Replacement and Case300908 +Node: Query Replace301888 +Node: Other Repeating Search305115 +Node: Fixit306370 +Node: Kill Errors306950 +Node: Transpose308283 +Node: Fixing Case310687 +Node: Spelling311333 +Node: Files312794 +Node: File Names314104 +Node: Visiting318441 +Node: Saving325273 +Node: Backup330196 +Node: Backup Names331592 +Node: Backup Deletion333075 +Node: Backup Copying334225 +Node: Interlocking335931 +Node: Reverting340059 +Node: Auto Save341971 +Node: Auto Save Files342938 +Node: Auto Save Control344779 +Node: Recover346617 +Node: Version Control347772 +Node: Concepts of VC349810 +Node: Editing with VC351420 +Node: Variables for Check-in/out356676 +Node: Log Entries358575 +Node: Change Logs and VC359755 +Node: Old Versions363022 +Node: VC Status365025 +Node: Renaming and VC366739 +Node: Snapshots367418 +Node: Making Snapshots367919 +Node: Snapshot Caveats369212 +Node: Version Headers371021 +Node: ListDir373720 +Node: Comparing Files375769 +Node: Dired377302 +Node: Dired Enter377973 +Node: Dired Edit378798 +Node: Dired Deletion380545 +Node: Dired Immed383768 +Node: Misc File Ops385044 +Node: Buffers387532 +Node: Select Buffer389690 +Node: List Buffers391485 +Node: Misc Buffer393243 +Node: Kill Buffer394886 +Node: Several Buffers396016 +Node: Windows399883 +Node: Basic Window400594 +Node: Split Window402313 +Node: Other Window404446 +Node: Pop Up Window406877 +Node: Change Window408382 +Node: Mule411290 +Node: Mule Intro412553 +Node: Language Environments413569 +Node: Input Methods415676 +Node: Select Input Method419396 +Node: Coding Systems421551 +Node: Recognize Coding425737 +Node: Specify Coding429063 +Node: Major Modes433994 +Node: Choosing Modes436213 +Node: Indentation438603 +Node: Indentation Commands440698 +Node: Tab Stops443427 +Node: Just Spaces445276 +Node: Text446091 +Node: Text Mode448074 +Node: Nroff Mode450153 +Node: TeX Mode451796 +Node: TeX Editing454048 +Node: TeX Print457482 +Node: Outline Mode460701 +Node: Outline Format462182 +Node: Outline Motion464982 +Node: Outline Visibility466535 +Node: Words469456 +Node: Sentences472403 +Node: Paragraphs474599 +Node: Pages476887 +Node: Filling479487 +Node: Auto Fill480058 +Node: Fill Commands482205 +Node: Fill Prefix484370 +Node: Case486558 +Node: Programs488586 +Node: Program Modes491136 +Node: Lists493368 +Node: Defuns499208 +Node: Grinding501861 +Node: Basic Indent502489 +Node: Multi-line Indent504510 +Node: Lisp Indent506126 +Node: C Indent509576 +Node: Matching514816 +Node: Comments516338 +Node: Balanced Editing522790 +Node: Lisp Completion523804 +Node: Documentation524819 +Node: Change Log526058 +Node: Tags528636 +Node: Tag Syntax530285 +Node: Create Tags Table534229 +Node: Etags Regexps538289 +Node: Select Tags Table542947 +Node: Find Tag546720 +Node: Tags Search549684 +Node: List Tags553140 +Node: Fortran554169 +Node: Fortran Motion555245 +Node: Fortran Indent556065 +Node: ForIndent Commands556750 +Node: ForIndent Num557895 +Node: ForIndent Conv559169 +Node: ForIndent Vars559945 +Node: Fortran Comments561113 +Node: Fortran Columns564711 +Node: Fortran Abbrev566134 +Node: Asm Mode567043 +Node: Running567595 +Node: Compilation568564 +Node: Lisp Modes573414 +Node: Lisp Libraries574687 +Node: Loading575241 +Node: Compiling Libraries579701 +Node: Mocklisp582592 +Node: Lisp Eval583269 +Node: Lisp Debug586909 +Node: Lisp Interaction592336 +Node: External Lisp593691 +Node: Packages595765 +Node: Package Terminology596620 +Node: Using Packages597978 +Node: Building Packages606856 +Node: Creating Packages609399 +Node: Available Packages614399 +Node: Abbrevs619672 +Node: Defining Abbrevs621871 +Node: Expanding Abbrevs624318 +Node: Editing Abbrevs627020 +Node: Saving Abbrevs628893 +Node: Dynamic Abbrevs630848 +Node: Picture632150 +Node: Basic Picture634583 +Node: Insert in Picture636868 +Node: Tabs in Picture638290 +Node: Rectangles in Picture639811 +Node: Sending Mail641719 +Node: Mail Format643430 +Node: Mail Headers644780 +Node: Mail Mode651188 +Node: Reading Mail654801 +Node: Calendar/Diary656376 +Node: Calendar Motion658050 +Node: Calendar Unit Motion658933 +Node: Move to Beginning or End661256 +Node: Specified Dates662389 +Node: Scroll Calendar663277 +Node: Mark and Region665068 +Node: General Calendar666974 +Node: LaTeX Calendar668582 +Node: Holidays670596 +Node: Sunrise/Sunset673698 +Node: Lunar Phases676737 +Node: Other Calendars678122 +Node: Calendar Systems679609 +Node: To Other Calendar682720 +Node: From Other Calendar684711 +Node: Mayan Calendar687016 +Node: Diary690211 +Node: Diary Commands691960 +Node: Format of Diary File695283 +Node: Date Formats698153 +Node: Adding to Diary700727 +Node: Special Diary Entries702358 +Node: Calendar Customization707697 +Node: Calendar Customizing708559 +Node: Holiday Customizing711794 +Node: Date Display Format718281 +Node: Time Display Format719239 +Node: Daylight Savings720377 +Node: Diary Customizing723565 +Node: Hebrew/Islamic Entries728186 +Node: Fancy Diary Display731526 +Node: Included Diary Files733442 +Node: Sexp Diary Entries734423 +Node: Appt Customizing739513 +Node: Sorting740559 +Node: Shell745365 +Node: Single Shell746658 +Node: Interactive Shell748272 +Node: Shell Mode752037 +Node: Terminal emulator754528 +Node: Term Mode756837 +Node: Paging in Term757751 +Node: Narrowing758549 +Node: Hardcopy760499 +Node: Recursive Edit761471 +Node: Dissociated Press764458 +Node: CONX767021 +Node: Amusements768045 +Node: Emulation768525 +Node: Customization770385 +Node: Minor Modes772201 +Node: Variables773833 +Node: Examining775789 +Node: Easy Customization777250 +Node: Customization Groups778264 +Node: Changing an Option781193 +Node: Face Customization787463 +Node: Specific Customization789227 +Node: Edit Options791834 +Node: Locals793418 +Node: File Variables796597 +Node: Keyboard Macros801147 +Node: Basic Kbd Macro803318 +Node: Save Kbd Macro805250 +Node: Kbd Macro Query806908 +Node: Key Bindings808850 +Node: Keymaps809724 +Node: Rebinding813574 +Node: Interactive Rebinding814273 +Node: Programmatic Rebinding816462 +Node: Key Bindings Using Strings819269 +Node: Disabling820896 +Node: Syntax822675 +Node: Syntax Entry823556 +Node: Syntax Change827640 +Node: Init File829809 +Node: Init Syntax831273 +Node: Init Examples833624 +Node: Terminal Init837814 +Node: Audible Bell839551 +Node: Faces842982 +Node: Frame Components847824 +Node: X Resources848269 +Node: Geometry Resources849928 +Node: Iconic Resources852376 +Node: Resource List852848 +Node: Face Resources859355 +Node: Widgets863032 +Node: Menubar Resources863971 +Node: Quitting865485 +Node: Lossage868463 +Node: Stuck Recursive869107 +Node: Screen Garbled869813 +Node: Text Garbled870947 +Node: Unasked-for Search871586 +Node: Emergency Escape872371 +Node: Total Frustration874150 +Node: Bugs874781 +Node: Glossary884342 +Node: Manifesto915996 +Node: Key Index939473 +Node: Command Index965400 +Node: Variable Index1007986 +Node: Concept Index1024072  End Tag Table diff --git a/info/xemacs.info-1 b/info/xemacs.info-1 index 33161cb..b87fb89 100644 --- a/info/xemacs.info-1 +++ b/info/xemacs.info-1 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor @@ -599,6 +599,7 @@ authors' reputations. modification follow. TERMS AND CONDITIONS + 1. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The diff --git a/info/xemacs.info-10 b/info/xemacs.info-10 index e8f5cf6..0c68a6c 100644 --- a/info/xemacs.info-10 +++ b/info/xemacs.info-10 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-11 b/info/xemacs.info-11 index bf640bd..8e0ab08 100644 --- a/info/xemacs.info-11 +++ b/info/xemacs.info-11 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-12 b/info/xemacs.info-12 index 76201a0..0233211 100644 --- a/info/xemacs.info-12 +++ b/info/xemacs.info-12 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-13 b/info/xemacs.info-13 index 675da4b..739ba70 100644 --- a/info/xemacs.info-13 +++ b/info/xemacs.info-13 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-14 b/info/xemacs.info-14 index 34910d2..5147bce 100644 --- a/info/xemacs.info-14 +++ b/info/xemacs.info-14 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-15 b/info/xemacs.info-15 index 295663b..57f9bb7 100644 --- a/info/xemacs.info-15 +++ b/info/xemacs.info-15 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-16 b/info/xemacs.info-16 index 0b9d211..4b02aad 100644 --- a/info/xemacs.info-16 +++ b/info/xemacs.info-16 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-17 b/info/xemacs.info-17 index ae00ab1..a03c890 100644 --- a/info/xemacs.info-17 +++ b/info/xemacs.info-17 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-18 b/info/xemacs.info-18 index 497f813..ad966c0 100644 --- a/info/xemacs.info-18 +++ b/info/xemacs.info-18 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-19 b/info/xemacs.info-19 index d72440c..4192a79 100644 --- a/info/xemacs.info-19 +++ b/info/xemacs.info-19 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-2 b/info/xemacs.info-2 index 7849bf6..f2754c1 100644 --- a/info/xemacs.info-2 +++ b/info/xemacs.info-2 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor @@ -143,6 +143,7 @@ function, and on a tab in the gutter to switch buffers. * Menubar Basics:: How XEmacs uses the menubar. * Scrollbar Basics:: How XEmacs uses scrollbars. +* Mode Line Basics:: How XEmacs uses modelines. * Toolbar Basics:: How XEmacs uses toolbars. * Gutter Basics:: How XEmacs uses gutters. * Inhibiting:: What if you don't like GUI? @@ -185,7 +186,7 @@ descriptions of these menus, *Note Pull-down Menus::. (In 21.2 XEmacsen, the `Mule' menu will be moved under `Options'.)  -File: xemacs.info, Node: Scrollbar Basics, Next: Toolbar Basics, Prev: Menubar Basics, Up: GUI Components +File: xemacs.info, Node: Scrollbar Basics, Next: Mode Line Basics, Prev: Menubar Basics, Up: GUI Components XEmacs Scrollbars ================= @@ -206,7 +207,27 @@ present in all windows (except the minibuffer), and there is no horizontal scrollbar.  -File: xemacs.info, Node: Toolbar Basics, Next: Gutter Basics, Prev: Scrollbar Basics, Up: GUI Components +File: xemacs.info, Node: Mode Line Basics, Next: Toolbar Basics, Prev: Scrollbar Basics, Up: GUI Components + +XEmacs Mode Lines +================= + + When used in a windowing system, the XEmacs modelines can be dragged +vertically. The effect is to resize the windows above and below the +modeline (this includes the minibuffer window). + + Additionally, a modeline can be dragged horizontally, in which case +it scrolls its own text. This behavior is not enabled by default +because it could be considered as disturbing when dragging vertically. +When this behavior is enabled, the modeline's text can be dragged +either in the same direction as the mouse, or in the opposite sense, +making the modeline act as a scrollbar for its own text. + + You can select the behavior you want from the `Display' submenu of +the `Options' menu. + + +File: xemacs.info, Node: Toolbar Basics, Next: Gutter Basics, Prev: Mode Line Basics, Up: GUI Components XEmacs Toolbars =============== diff --git a/info/xemacs.info-20 b/info/xemacs.info-20 index f55fcc1..9ce962e 100644 --- a/info/xemacs.info-20 +++ b/info/xemacs.info-20 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-21 b/info/xemacs.info-21 index 62d8003..fe8b724 100644 --- a/info/xemacs.info-21 +++ b/info/xemacs.info-21 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-22 b/info/xemacs.info-22 index 43c34d6..e5b56b3 100644 --- a/info/xemacs.info-22 +++ b/info/xemacs.info-22 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-3 b/info/xemacs.info-3 index 1fdc4de..f3f6e3a 100644 --- a/info/xemacs.info-3 +++ b/info/xemacs.info-3 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-4 b/info/xemacs.info-4 index d8a425c..53fc1cd 100644 --- a/info/xemacs.info-4 +++ b/info/xemacs.info-4 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-5 b/info/xemacs.info-5 index 41187a8..7a27615 100644 --- a/info/xemacs.info-5 +++ b/info/xemacs.info-5 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-6 b/info/xemacs.info-6 index e6c1b6f..1637f0f 100644 --- a/info/xemacs.info-6 +++ b/info/xemacs.info-6 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-7 b/info/xemacs.info-7 index 8fcc8e1..eb360e0 100644 --- a/info/xemacs.info-7 +++ b/info/xemacs.info-7 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-8 b/info/xemacs.info-8 index 81ad49c..e72246b 100644 --- a/info/xemacs.info-8 +++ b/info/xemacs.info-8 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/xemacs.info-9 b/info/xemacs.info-9 index 7c95cda..0d949e6 100644 --- a/info/xemacs.info-9 +++ b/info/xemacs.info-9 @@ -1,4 +1,4 @@ -This is ../info/xemacs.info, produced by makeinfo version 4.0b from +This is ../info/xemacs.info, produced by makeinfo version 4.0 from xemacs/xemacs.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 151a0a1..ca78666 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,7 @@ +2001-01-20 Martin Buchholz + + * XEmacs 21.2.42 "Poseidon" is released. + 2001-01-17 Martin Buchholz * XEmacs 21.2.41 "Polyhymnia" is released. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 79af2c0..95cd5b7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -557,6 +557,50 @@ * files.el (insert-file-contents-literally): Treat file as binary; call file-name-handlers. [sync with Emacs 20.3.10] +2001-01-20 Martin Buchholz + + * XEmacs 21.2.42 "Poseidon" is released. + +2001-01-12 Andy Piper + + * package-get.el (package-get-custom): call + package-net-update-installed-db. + + * package-ui.el (pui-install-selected-packages): call + package-net-update-installed-db. + + * package-net.el (package-net-update-installed-db): use + packages-package-list so that we reflect reality. + + * packages.el (packages-package-list): Make docstring reflect + reality. + + * package-net.el (package-net-convert-index-to-ini): exclude mule entries. + + * postinstall.cc (do_postinstall): don't pick up shells if cygwin + isn't installed. + +2001-01-17 Andy Piper + + * wid-edit.el (widget-activation-glyph-mapper): activate or + deactivate native widgets. + (widget-glyph-insert-glyph): record instantiator. + (widget-push-button-value-create): use it. + + * gui.el (gui-button-action): new function. Make button's domain + buffer current when calling. + (make-gui-button): update to use gui-button-action. + +2001-01-16 Didier Verna + + * menubar-items.el (default-menubar): add an entry for modeline + horizontal scrolling in Options -> Display. + +2001-01-17 Steve Youngs + + * package-get.el (package-get-require-signed-base): Set to nil + by default. + 2001-01-17 Martin Buchholz * XEmacs 21.2.41 "Polyhymnia" is released. diff --git a/lisp/gui.el b/lisp/gui.el index 9eb0c79..4d2e3d9 100644 --- a/lisp/gui.el +++ b/lisp/gui.el @@ -94,14 +94,25 @@ Normally it also has no modelines, menubars, or toolbars." (set-face-foreground 'gui-button-face '(((x color) . "black") ((mswindows color) . "black"))))) + +(defun gui-button-action (instance action user-data) + (let ((domain (image-instance-domain instance))) + (with-current-buffer (if (windowp domain) + (window-buffer domain) nil) + (funcall action user-data)))) + (defun make-gui-button (string &optional action user-data) "Make a GUI button whose label is STRING and whose action is ACTION. If the button is inserted in a buffer and then clicked on, and ACTION -is non-nil, ACTION will be called with one argument, USER-DATA." +is non-nil, ACTION will be called with one argument, USER-DATA. +When ACTION is called, the buffer containing the button is made current." (vector 'button :descriptor string :face 'gui-button-face - :callback `(funcall (quote ,action) (quote ,user-data)))) + :callback-ex `(lambda (image-instance event) + (gui-button-action image-instance + (quote ,action) + (quote ,user-data))))) (defun insert-gui-button (button &optional pos buffer) "Insert GUI button BUTTON at POS in BUFFER." diff --git a/lisp/menubar-items.el b/lisp/menubar-items.el index 31e54a6..088c499 100644 --- a/lisp/menubar-items.el +++ b/lisp/menubar-items.el @@ -401,13 +401,13 @@ which will not be used as accelerators." ;; hack-o-matic, we can't force a load of package-base here ;; since it triggers dialog box interactions which we can't ;; deal with while using a menu - ("Using %_Custom" + ("Using %_Custom" :filter (lambda (&rest junk) (if package-get-base (submenu-generate-accelerator-spec (cdr (custom-menu-create 'packages))) '("Please load Package Index")))) - + ["%_Help" (Info-goto-node "(xemacs)Packages")]) ("%_Internet" ["Read Mail %_1 (VM)..." vm @@ -932,7 +932,7 @@ which will not be used as accelerators." (eq browse-url-browser-function 'browse-url-grail)) :active (and (boundp 'browse-url-browser-function) (fboundp 'browse-url-grail))] - ["%_Kfm" + ["%_Kfm" (customize-set-variable 'browse-url-browser-function 'browse-url-kfm) :style radio @@ -940,7 +940,7 @@ which will not be used as accelerators." (eq browse-url-browser-function 'browse-url-kfm)) :active (and (boundp 'browse-url-browser-function) (fboundp 'browse-url-kfm))] - )) + )) ("%_Troubleshooting" ["%_Debug on Error" (customize-set-variable 'debug-on-error (not debug-on-error)) @@ -968,17 +968,32 @@ which will not be used as accelerators." (not scrollbars-visible-p)) :style toggle :selected scrollbars-visible-p])) - ["%_3D Modeline" - (customize-set-variable 'modeline-3d-p - (not modeline-3d-p)) - :style toggle - :selected modeline-3d-p] ["%_Wrap Long Lines" (progn;; becomes buffer-local (setq truncate-lines (not truncate-lines)) (customize-set-variable 'truncate-lines truncate-lines)) :style toggle :selected (not truncate-lines)] + "----" + ["%_3D Modeline" + (customize-set-variable 'modeline-3d-p + (not modeline-3d-p)) + :style toggle + :selected modeline-3d-p] + ("Modeline %_Horizontal Scrolling" + ["%_None" + (customize-set-variable 'modeline-scrolling-method nil) + :style radio + :selected (not modeline-scrolling-method)] + ["As %_Text" + (customize-set-variable 'modeline-scrolling-method t) + :style radio + :selected (eq modeline-scrolling-method t)] + ["As %_Scrollbar" + (customize-set-variable 'modeline-scrolling-method 'scrollbar) + :style radio + :selected (eq modeline-scrolling-method 'scrollbar)] + ) ,@(if (featurep 'toolbar) '("---" ["%_Toolbars Visible" @@ -1105,7 +1120,7 @@ which will not be used as accelerators." (not column-number-mode)) (redraw-modeline)) :style toggle :selected column-number-mode] - + ("\"Other %_Window\" Location" ["%_Always in Same Frame" (customize-set-variable @@ -1156,7 +1171,7 @@ which will not be used as accelerators." :selected (and (boundp 'gnuserv-frame) (eq gnuserv-frame t)) :active (boundp 'gnuserv-frame)] ) - ) + ) ("%_Menubars" ["%_Frame-Local Font Menu" (customize-set-variable 'font-menu-this-frame-only-p diff --git a/lisp/package-get.el b/lisp/package-get.el index 88be9d3..954d099 100644 --- a/lisp/package-get.el +++ b/lisp/package-get.el @@ -269,7 +269,7 @@ Otherwise respect the `force-current' argument of `package-get-require-base'." :type 'boolean :group 'package-get) -(defcustom package-get-require-signed-base-updates t +(defcustom package-get-require-signed-base-updates nil "*If set to a non-nil value, require explicit user confirmation for updates to the package-get database which cannot have their signature verified via PGP. When nil, updates which are not PGP signed are allowed without confirmation." @@ -1048,7 +1048,8 @@ lead to Emacs accessing remote sites." (if (eval (intern (concat (symbol-name (car pkg)) "-package"))) (package-get (car pkg) nil)) t) - package-get-base)) + package-get-base) + (package-net-update-installed-db)) (defun package-get-ever-installed-p (pkg &optional notused) (string-match "-package$" (symbol-name pkg)) diff --git a/lisp/package-net.el b/lisp/package-net.el index 63199c5..015c990 100644 --- a/lisp/package-net.el +++ b/lisp/package-net.el @@ -185,28 +185,31 @@ DESTDIR defaults to the value of `data-directory'." "Write out the installed package index in a net install suitable format. If DESTDIR is non-nil then use that as the destination directory. DESTDIR defaults to the value of `package-net-setup-directory'." - ;; Need the local version - (package-get-require-base) - (setq destdir (file-name-as-directory - (or destdir (package-net-setup-directory)))) - (let ((buf (get-buffer-create "*installed.db*"))) - (unwind-protect - (save-excursion - (set-buffer buf) - (erase-buffer buf) - (goto-char (point-min)) - (let ((entries package-get-base) entry plist) - (while entries - (setq entry (car entries)) - (setq plist (car (cdr entry))) - (insert (format "%s %s %s\n" (symbol-name (car entry)) - (plist-get plist 'filename) - (plist-get plist 'size))) - (setq entries (cdr entries)))) - (make-directory-path destdir) - (write-region (point-min) (point-max) (concat destdir "installed.db"))) - (kill-buffer buf)))) + (when (or (eq system-type 'cygwin32) + (eq system-type 'window-nt)) + (setq destdir (file-name-as-directory + (or destdir (package-net-setup-directory)))) + (let ((buf (get-buffer-create "*installed.db*"))) + (unwind-protect + (save-excursion + (set-buffer buf) + (erase-buffer buf) + (goto-char (point-min)) + ;; we use packages-package-list here as we actually want to + ;; update relative to the installed reality + (let ((entries packages-package-list) entry version) + (while entries + (setq entry (car entries)) + (setq version (plist-get (cdr entry) :version)) + ;; Unfortunately we can't read the size from this + (insert (format "%s %s-%3.2f-pkg.tar.gz 0\n" (symbol-name (car entry)) + (symbol-name (car entry)) + version)) + (setq entries (cdr entries)))) + (make-directory-path destdir) + (write-region (point-min) (point-max) (concat destdir "installed.db"))) + (kill-buffer buf))))) (defun package-net-convert-download-sites-to-mirrors (&optional destdir) "Write out the download site list in a net install suitable format. diff --git a/lisp/package-ui.el b/lisp/package-ui.el index 806bcf0..1c5bc13 100644 --- a/lisp/package-ui.el +++ b/lisp/package-ui.el @@ -424,6 +424,8 @@ and whether or not it is up-to-date." (if pui-deleted-packages (pui-list-packages) (error "No packages have been selected!"))) + ;; sync with windows type systems + (package-net-update-installed-db) )) (defun pui-add-required-packages () diff --git a/lisp/packages.el b/lisp/packages.el index 810b1f7..07832ce 100644 --- a/lisp/packages.el +++ b/lisp/packages.el @@ -55,7 +55,7 @@ ;;; Package versioning (defvar packages-package-list nil - "Database of loaded packages and version numbers") + "Database of installed packages and version numbers") (defvar packages-hierarchy-depth 1 "Depth of package hierarchies.") diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index dfcdbe4..d9e203a 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -480,14 +480,22 @@ Suitable for use with `map-extents'." (let* ((glyph-widget (extent-property extent 'glyph-widget)) (up-glyph (widget-get glyph-widget :glyph-up)) (inactive-glyph (widget-get glyph-widget :glyph-inactive)) + (instantiator (widget-get glyph-widget :glyph-instantiator)) (new-glyph (if activate-p up-glyph inactive-glyph))) + (cond + ;; Assume that an instantiator means a native widget. + (instantiator + (setq instantiator + (set-instantiator-property instantiator :active activate-p)) + (widget-put glyph-widget :glyph-instantiator instantiator) + (set-glyph-image up-glyph instantiator)) ;; Check that the new glyph exists, and differs from the ;; default one. - (and up-glyph inactive-glyph (not (eq up-glyph inactive-glyph)) - ;; Check if the glyph is already installed. - (not (eq (extent-end-glyph extent) new-glyph)) - ;; Change it. - (set-extent-end-glyph extent new-glyph))))) + ((and up-glyph inactive-glyph (not (eq up-glyph inactive-glyph)) + ;; Check if the glyph is already installed. + (not (eq (extent-end-glyph extent) new-glyph))) + ;; Change it. + (set-extent-end-glyph extent new-glyph)))))) nil) (defun widget-specify-inactive (widget from to) @@ -785,10 +793,12 @@ only because of compatibility." (insert tag)) glyph)) -(defun widget-glyph-insert-glyph (widget glyph &optional down inactive) +(defun widget-glyph-insert-glyph (widget glyph &optional down inactive + instantiator) "In WIDGET, insert GLYPH. If optional arguments DOWN and INACTIVE are given, they should be -glyphs used when the widget is pushed and inactive, respectively." +glyphs used when the widget is pushed and inactive, respectively. +INSTANTIATOR is the vector used to create the glyph." (insert "*") (let ((extent (make-extent (point) (1- (point)))) (help-echo (and widget (widget-get widget :help-echo))) @@ -810,6 +820,7 @@ glyphs used when the widget is pushed and inactive, respectively." (when widget (widget-put widget :glyph-up glyph) (when down (widget-put widget :glyph-down down)) + (when instantiator (widget-put widget :glyph-instantiator instantiator)) (when inactive (widget-put widget :glyph-inactive inactive)))) @@ -1924,7 +1935,7 @@ If END is omitted, it defaults to the length of LIST." (tag-glyph (widget-get widget :tag-glyph)) (text (concat widget-push-button-prefix tag widget-push-button-suffix)) - gui) + gui inst) (cond (tag-glyph (widget-glyph-insert widget text tag-glyph)) ;; We must check for console-on-window-system-p here, @@ -1933,9 +1944,9 @@ If END is omitted, it defaults to the length of LIST." ((and widget-push-button-gui (console-on-window-system-p)) (let* ((gui-button-shadow-thickness 1)) - (setq gui (make-glyph - (make-gui-button tag 'widget-gui-action widget)))) - (widget-glyph-insert-glyph widget gui)) + (setq inst (make-gui-button tag 'widget-gui-action widget)) + (setq gui (make-glyph inst))) + (widget-glyph-insert-glyph widget gui nil nil inst)) (t (insert text))))) diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index 39bf349..0d982b7 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,7 @@ +2001-01-20 Martin Buchholz + + * XEmacs 21.2.42 "Poseidon" is released. + 2001-01-17 Martin Buchholz * XEmacs 21.2.41 "Polyhymnia" is released. diff --git a/man/ChangeLog b/man/ChangeLog index 18db821..da16c29 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,22 @@ +2001-01-20 Martin Buchholz + + * XEmacs 21.2.42 "Poseidon" is released. + +2001-01-18 Martin Buchholz + + * xemacs-faq.texi (Q1.0.11): Change XEmacs for MacOS URL. + +2001-01-17 Andy Piper + + * internals.texi: some glyph documentation. + +2001-01-16 Didier Verna + + * frame.texi (Mode Line Basics): new node ... + * frame.texi (GUI Components): ... under this one ... + * frame.texi (Scrollbar Basics): ... after this one ... + * frame.texi (Toolbar Basics): ... before this one. + 2001-01-17 Martin Buchholz * XEmacs 21.2.41 "Polyhymnia" is released. @@ -523,7 +542,7 @@ 2000-07-09 Martin Buchholz - * lispref/postgresql.texi: + * lispref/postgresql.texi: - Don't mention ".so" extension. - Make installation instructions more generic. - Mention M-x describe-installation. diff --git a/man/internals/internals.texi b/man/internals/internals.texi index 8cc49ad..db888d1 100644 --- a/man/internals/internals.texi +++ b/man/internals/internals.texi @@ -8734,8 +8734,8 @@ screen images can be instantiated from a single glyph. Glyphs are lazily instantiated by calling one of the glyph functions. This usually occurs within redisplay when @code{Fglyph_height} is called. Instantiation causes an image-instance -to be created and cached. This cache is on a device basis for all glyphs -except glyph-widgets, and on a window basis for glyph widgets. The +to be created and cached. This cache is on a per-device basis for all glyphs +except widget-glyphs, and on a per-window basis for widgets-glyphs. The caching is done by @code{image_instantiate} and is necessary because it is generally possible to display an image-instance in multiple domains. For instance if we create a Pixmap, we can actually display @@ -8752,6 +8752,74 @@ cached on an XEmacs window basis. Any action on a glyph first consults the cache before actually instantiating a widget. +@section Glyph Instantiation + +Glyph instantiation is a hairy topic and requires some explanation. The +guts of glyph instantiation is contained within +@code{image_instantiate}. A glyph contains an image which is a +specifier. When a glyph function - for instance @code{Fglyph_height} - +asks for a property of the glyph that can only be determined from its +instantiated state, then the glyph image is instantiated and an image +instance created. The instantiation process is governed by the specifier +code and goes through a series of steps: + +@itemize @bullet +@item +Validation. Instantiation of image instances happens dynamically - often +within the guts of redisplay. Thus it is often not feasible to catch +instantiator errors at instantiation time. Instead the instantiator is +validated at the time it is added to the image specifier. This function +is defined by @code{image_validate} and at a simple level validates +keyword value pairs. +@item +Duplication. The specifier code by default takes a copy of the +instantiator. This is reasonable for most specifiers but in the case of +widget-glyphs can be problematic, since some of the properties in the +instantiator - for instance callbacks - could cause infinite recursion +in the copying process. Thus the image code defines a function - +@code{image_copy_instantiator} - which will selectively copy values. +This is controlled by the way that a keyword is defined either using +@code{IIFORMAT_VALID_KEYWORD} or +@code{IIFORMAT_VALID_NONCOPY_KEYWORD}. Note that the image caching and +redisplay code relies on instantiator copying to ensure that current and +new instantiators are actually different rather than referring to the +same thing. +@item +Normalization. Once the instantiator has been copied it must be +converted into a form that is viable at instantiation time. This can +involve no changes at all, but typically involves things like converting +file names to the actual data. This function is defined by +@code{image_going_to_add} and @code{normalize_image_instantiator}. +@item +Instantiation. When an image instance is actually required for display +it is instantiated using @code{image_instantiate}. This involves calling +instantiate methods that are specific to the type of image being +instantiated. +@end itemize + +The final instantiation phase also involves a number of steps. In order +to understand these we need to describe a number of concepts. + +An image is instantiated in a @dfn{domain}, where a domain can be any +one of a device, frame, window or image-instance. The domain gives the +image-instance context and identity and properties that affect the +appearance of the image-instance may be different for the same glyph +instantiated in different domains. An example is the face used to +display the image-instance. + +Although an image is instantiated in a particular domain the +instantiation domain is not necessarily the domain in which the +image-instance is cached. For example a pixmap can be instantiated in a +window be actually be cached on a per-device basis. The domain in which +the image-instance is actually cached is called the +@dfn{governing-domain}. A governing-domain is currently either a device +or a window. Widget-glyphs and text-glyphs have a window as a +governing-domain, all other image-instances have a device as the +governing-domain. The governing domain for an image-instance is +determined using the governing_domain image-instance method. + +@section Widget-Glyphs + @section Widget-Glyphs in the MS-Windows Environment To Do @@ -8763,6 +8831,24 @@ Library}) for manipulating the native toolkit objects. This is primarily so that different toolkits can be supported for widget-glyphs, just as they are supported for features such as menubars etc. +Lwlib is extremely poorly documented and quite hairy so here is my +understanding of what goes on. + +Lwlib maintains a set of widget_instances which mirror the hierarchical +state of Xt widgets. I think this is so that widgets can be updated and +manipulated generically by the lwlib library. For instance +update_one_widget_instance can cope with multiple types of widget and +multiple types of toolkit. Each element in the widget hierarchy is updated +from its corresponding widget_instance by walking the widget_instance +tree recursively. + +This has desirable properties such as lw_modify_all_widgets which is +called from @file{glyphs-x.c} and updates all the properties of a widget +without having to know what the widget is or what toolkit it is from. +Unfortunately this also has hairy properties such as making the lwlib +code quite complex. And of course lwlib has to know at some level what +the widget is and how to set its properties. + @node Specifiers, Menus, Glyphs, Top @chapter Specifiers diff --git a/man/xemacs-faq.texi b/man/xemacs-faq.texi index 4f4bdab..690aa76 100644 --- a/man/xemacs-faq.texi +++ b/man/xemacs-faq.texi @@ -7,7 +7,7 @@ @finalout @titlepage @title XEmacs FAQ -@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2000/11/14 23:29:27 $ +@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/01/18 13:35:02 $ @sp 1 @author Tony Rossini @author Ben Wing @@ -698,7 +698,7 @@ Yes, @xref{MS Windows}. Yes, there is a port of XEmacs 19.14, tested on MacOS 7.6.1 and MacOS 8.5.1 by @email{pjarvis@@ispchannel.com, Pitts Jarvis}. It's available -at @uref{http://my.ispchannel.com/~pjarvis/xemacs.html}. +at @uref{http://homepage.mac.com/pjarvis/xemacs.html}. @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction @unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep? diff --git a/man/xemacs/frame.texi b/man/xemacs/frame.texi index 5919818..35e4200 100644 --- a/man/xemacs/frame.texi +++ b/man/xemacs/frame.texi @@ -21,16 +21,16 @@ you can split the frame into two or more subwindows. If you are running XEmacs under the X window system, that means you can have several @dfn{XEmacs windows} inside the X window that contains the XEmacs frame. You can even have multiple frames in different X windows, each with -their own set of subwindows. +their own set of subwindows. @refill @end table -Each XEmacs frame displays a variety of information: +Each XEmacs frame displays a variety of information: @itemize @bullet @item The biggest area usually displays the text you are editing. It may consist of one window or of two or more windows if you need to look at two -buffers a the same time. +buffers a the same time. @item Below each text window's last line is a @dfn{mode line} (@pxref{Mode Line}), which describes what is going on in that window. The mode line @@ -78,12 +78,12 @@ visible in all XEmacs windows containing that buffer. @menu -* Point:: The place in the text where editing commands operate. -* Echo Area:: Short messages appear at the bottom of the frame. +* Point:: The place in the text where editing commands operate. +* Echo Area:: Short messages appear at the bottom of the frame. * Mode Line:: Interpreting the mode line. * GUI Components:: Menubar, toolbars, gutters. -* XEmacs under X:: Some information on using XEmacs under the X - Window System. +* XEmacs under X:: Some information on using XEmacs under the X + Window System. * XEmacs under MS Windows:: Some information on using XEmacs under Microsoft Windows. @end menu @@ -203,7 +203,7 @@ looking. @var{ch} contains two stars (@samp{**}) if the text in the buffer has been edited (the buffer is ``modified''), or two dashes (@samp{--}) if the -buffer has not been edited. Exception: for a read-only buffer, it is +buffer has not been edited. Exception: for a read-only buffer, it is @samp{%%}. @var{buf} is the name of the window's chosen @dfn{buffer}. The chosen @@ -214,7 +214,7 @@ currently selected buffer. @xref{Buffers}. @var{pos} tells you whether there is additional text above the top of the screen or below the bottom. If your file is small and it is -completely visible on the screen, @var{pos} is @samp{All}. Otherwise, +completely visible on the screen, @var{pos} is @samp{All}. Otherwise, @var{pos} is @samp{Top} if you are looking at the beginning of the file, @samp{Bot} if you are looking at the end of the file, or @samp{@var{nn}%}, where @var{nn} is the percentage of the file above the @@ -274,7 +274,7 @@ controls whether the mode line is displayed in inverse video (assuming the terminal supports it); @code{nil} means no inverse video. The default is @code{t}. For X frames, simply set the foreground and background colors appropriately. - + @node GUI Components, XEmacs under X, Mode Line, Frame @comment node-name, next, previous, up @section GUI Components @@ -294,6 +294,7 @@ function, and on a tab in the gutter to switch buffers. @menu * Menubar Basics:: How XEmacs uses the menubar. * Scrollbar Basics:: How XEmacs uses scrollbars. +* Mode Line Basics:: How XEmacs uses modelines. * Toolbar Basics:: How XEmacs uses toolbars. * Gutter Basics:: How XEmacs uses gutters. * Inhibiting:: What if you don't like GUI? @@ -336,7 +337,7 @@ Other menus which are typically available are the @samp{Options}, detailed descriptions of these menus, @ref{Pull-down Menus}. (In 21.2 XEmacsen, the @samp{Mule} menu will be moved under @samp{Options}.) -@node Scrollbar Basics, Toolbar Basics, Menubar Basics, GUI Components +@node Scrollbar Basics, Mode Line Basics, Menubar Basics, GUI Components @comment node-name, next, previous, up @section XEmacs Scrollbars @@ -355,7 +356,25 @@ may be customized by the user. By default a vertical scrollbar is present in all windows (except the minibuffer), and there is no horizontal scrollbar. -@node Toolbar Basics, Gutter Basics, Scrollbar Basics, GUI Components +@node Mode Line Basics, Toolbar Basics, Scrollbar Basics, GUI Components +@comment node-name, next, previous, up +@section XEmacs Mode Lines + +When used in a windowing system, the XEmacs modelines can be dragged +vertically. The effect is to resize the windows above and below the +modeline (this includes the minibuffer window). + +Additionally, a modeline can be dragged horizontally, in which case it +scrolls its own text. This behavior is not enabled by default because it +could be considered as disturbing when dragging vertically. When this +behavior is enabled, the modeline's text can be dragged either in the +same direction as the mouse, or in the opposite sense, making the +modeline act as a scrollbar for its own text. + +You can select the behavior you want from the @samp{Display} submenu of +the @samp{Options} menu. + +@node Toolbar Basics, Gutter Basics, Mode Line Basics, GUI Components @comment node-name, next, previous, up @section XEmacs Toolbars @@ -491,7 +510,7 @@ in first. This is normally bound to @kbd{C-x 5 b}. You can specify a different default frame size other than the one provided. Use the variable @code{default-frame-alist}, which is an alist of default values for frame creation other than the first one. These may be set in -your init file, like this: +your init file, like this: @example (setq default-frame-alist '((width . 80) (height . 55))) @@ -509,7 +528,7 @@ When you create a new frame, the variable @code{create-frame-hook} is called with one argument, the frame just created. If you want to close one or more of the X windows you created using -@b{New Frame}, use the @b{Delete Frame} menu item from the @b{File} menu. +@b{New Frame}, use the @b{Delete Frame} menu item from the @b{File} menu. @vindex frame-title-format @vindex frame-icon-title-format @@ -549,4 +568,3 @@ with MS Windows. Where possible, native MS Windows GUI components and capabilities are used in XEmacs. - diff --git a/netinstall/ChangeLog b/netinstall/ChangeLog index 1d8a0b0..d9bd985 100644 --- a/netinstall/ChangeLog +++ b/netinstall/ChangeLog @@ -1,3 +1,12 @@ +2001-01-20 Martin Buchholz + + * XEmacs 21.2.42 "Poseidon" is released. + +2001-01-17 Andy Piper + + * ini.h: move extern "C" to aid win32 compilation. From Fabrice + Popineau. + 2001-01-17 Martin Buchholz * XEmacs 21.2.41 "Polyhymnia" is released. @@ -166,5 +175,5 @@ * all: port from cygwin setup. -%%% $Id: ChangeLog,v 1.1.2.9 2001/01/12 16:11:12 andyp Exp $ -$Revision: 1.1.2.9 $ +%%% $Id: ChangeLog,v 1.1.2.11 2001/01/17 21:54:32 andyp Exp $ +$Revision: 1.1.2.11 $ diff --git a/netinstall/ini.h b/netinstall/ini.h index 6e5eab2..2a2cf88 100644 --- a/netinstall/ini.h +++ b/netinstall/ini.h @@ -61,15 +61,15 @@ typedef struct { } info[NTRUST+1]; /* +1 for TRUST_UNKNOWN */ } Package; +#ifdef __cplusplus +extern "C" { +#endif + extern Package *package; extern Package *xemacs_package; extern int npackages; -#ifdef __cplusplus -extern "C" { -#endif - Package *new_package (char *name); void ini_init (char *string); diff --git a/nt/ChangeLog b/nt/ChangeLog index a42d785..b4ee642 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,7 @@ +2001-01-20 Martin Buchholz + + * XEmacs 21.2.42 "Poseidon" is released. + 2001-01-17 Martin Buchholz * XEmacs 21.2.41 "Polyhymnia" is released. diff --git a/src/.dbxrc b/src/.dbxrc index 13a52eb..4e749e2 100644 --- a/src/.dbxrc +++ b/src/.dbxrc @@ -204,14 +204,14 @@ function update-elc { run -nd -batch -l ../lisp/update-elc.el } -document dump-temacs << 'end' -Usage: dump-temacs +document dmp << 'end' +Usage: dmp Run the dumping part of the build procedure. Use when debugging temacs, not xemacs! Use this when temacs builds successfully, but xemacs does not. end -function dump-temacs { +function dmp { environment-to-run-temacs run -nd -batch -l ../lisp/loadup.el dump } diff --git a/src/.gdbinit b/src/.gdbinit index 4cf1c3e..e3804b6 100644 --- a/src/.gdbinit +++ b/src/.gdbinit @@ -166,13 +166,13 @@ Use when debugging temacs, not xemacs! Use this when temacs builds successfully, but xemacs does not. end -define dump-temacs +define dmp environment-to-run-temacs run -nd -batch -l ../lisp/loadup.el dump end -document dump-temacs -Usage: dump-temacs +document dmp +Usage: dmp Run the dumping part of the build procedure. Use when debugging temacs, not xemacs! Use this when temacs builds successfully, but xemacs does not. diff --git a/src/ChangeLog b/src/ChangeLog index 607bd64..4e65cd4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -3430,6 +3430,89 @@ (Vcharset_thai_tis620): Likewise. (Vcharset_katakana_jisx0201): Likewise. +2001-01-20 Martin Buchholz + + * XEmacs 21.2.42 "Poseidon" is released. + +2001-01-20 Martin Buchholz + + * console-x.h: typo fix du jour. Remove #if 0'ed code. + +2001-01-19 Martin Buchholz + + De-kludgify FIXED_TYPE free list frobbing. + Fix crashes on 64-bit platforms introduced by my patch of 2001-01-13. + * alloc.c (DECLARE_FIXED_TYPE_ALLOC): Use Lisp_Free. + * alloc.c (ALLOCATE_FIXED_TYPE_1): Use new definitions. + * alloc.c (Lisp_Free): New pseudo lisp object definition. + * alloc.c (LRECORD_FREE_P): New. + * alloc.c (MARK_LRECORD_AS_FREE): New. + * alloc.c (MARK_LRECORD_AS_NOT_FREE): New. + * alloc.c (STRUCT_FREE_P): Deleted. + * alloc.c (MARK_STRUCT_AS_FREE): Deleted. + * alloc.c (MARK_STRUCT_AS_NOT_FREE): Deleted. + * alloc.c (STRING_CHARS_FREE_P): New. + * alloc.c (MARK_STRING_CHARS_AS_FREE): New. + * alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST): Use new definitions. + * alloc.c (FREE_FIXED_TYPE): Use new definitions. + * alloc.c (STRING_CHARS_FREE_P): Use new definitions. + * alloc.c (resize_string): Use new definitions. + * alloc.c (SWEEP_FIXED_TYPE_BLOCK): Use new definitions. + * alloc.c (verify_string_chars_integrity): Use new definitions. + * alloc.c (compact_string_chars): Use new definitions. + * alloc.c: Update monster comments. + * lrecord.h (lrecord_type): Add some new lrecord types for + alloc.c's use. + +2001-01-18 Martin Buchholz + + Improve alignment hackery. + * lisp.h (ALIGNOF): Better definition for the non-gcc case. + (max_align_t): Moved from opaque.h - general purpose. + (ALIGN_PTR): Use size_t, not long. + * opaque.h (max_align_t): Move to lisp.h. + +2001-01-18 Norbert Koch + + * gui.h: Fix and add prototypes to fix build problems. + +2001-01-18 Martin Buchholz + + temacs is going away, so `dump-temacs' is now a bad name. + * .dbxrc (dump-temacs): Rename to `dmp'. + * .gdbinit (dump-temacs): Rename to `dmp'. + +2001-01-17 Andy Piper + + * glyphs.c (print_image_instance): comment to make martin happy. + + * glyphs-x.c (x_redisplay_widget): update faces after a frame + change. + + * glyphs-msw.c (mswindows_redisplay_widget): add code to cope with + activation. + (mswindows_tab_control_redisplay): warning suppression. + + * glyphs-widget.c (widget_update): re-write to cope with updated + items. + (widget_instantiate): use new gui_item functions. + (tab_control_update): deleted. + (progress_gauge_update): deleted. + (image_instantiator_progress_guage): take out update reference. + (image_instantiator_tree_view): ditto. + (image_instantiator_tab_control): ditto. + + * gui.c (widget_gui_parse_item_keywords): new function. Do things + Right the new way. + (gui_item_add_keyval_pair): re-write to cope with descriptors and + return whether anything was changed. + (update_gui_item_keywords): as it sounds. + + * gui.h: declare widget_gui_parse_item_keywords. + + * fns.c (safe_copy_tree): new function taken from Fcopy_tree. + (Fcopy_tree): use it. Stops infloop death in bogus instantiators. + 2001-01-17 Martin Buchholz * XEmacs 21.2.41 "Polyhymnia" is released. diff --git a/src/alloc.c b/src/alloc.c index e0dbeda..9e0174d 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -586,35 +586,27 @@ dbg_eq (Lisp_Object obj1, Lisp_Object obj2) currently executing functions; the gcpro list; etc.) and recursively marking all objects that are accessible. - At the beginning of the sweep stage, the conses in the cons - blocks are in one of three states: in use and marked, in use - but not marked, and not in use (already freed). Any conses - that are marked have been marked in the mark stage just - executed, because as part of the sweep stage we unmark any - marked objects. The way we tell whether or not a cons cell - is in use is through the FREE_STRUCT_P macro. This basically - looks at the first 4 bytes (or however many bytes a pointer - fits in) to see if all the bits in those bytes are 1. The - resulting value (0xFFFFFFFF) is not a valid pointer and is - not a valid Lisp_Object. All current fixed-size types have - a pointer or Lisp_Object as their first element with the - exception of strings; they have a size value, which can - never be less than zero, and so 0xFFFFFFFF is invalid for - strings as well. Now assuming that a cons cell is in use, - the way we tell whether or not it is marked is to look at - the mark bit of its car (each Lisp_Object has one bit - reserved as a mark bit, in case it's needed). Note that - different types of objects use different fields to indicate - whether the object is marked, but the principle is the same. - - Conses on the free_cons_list are threaded through a pointer - stored in the bytes directly after the bytes that are set - to 0xFFFFFFFF (we cannot overwrite these because the cons - is still in a cons_block and needs to remain marked as - not in use for the next time that GC happens). This - implies that all fixed-size types must be at least big - enough to store two pointers, which is indeed the case - for all current fixed-size types. + At the beginning of the sweep stage, the conses in the cons blocks + are in one of three states: in use and marked, in use but not + marked, and not in use (already freed). Any conses that are marked + have been marked in the mark stage just executed, because as part + of the sweep stage we unmark any marked objects. The way we tell + whether or not a cons cell is in use is through the LRECORD_FREE_P + macro. This uses a special lrecord type `lrecord_type_free', + which is never associated with any valid object. + + Conses on the free_cons_list are threaded through a pointer stored + in the conses themselves. Because the cons is still in a + cons_block and needs to remain marked as not in use for the next + time that GC happens, we need room to store both the "free" + indicator and the chaining pointer. So this pointer is stored + after the lrecord header (actually where C places a pointer after + the lrecord header; they are not necessarily contiguous). This + implies that all fixed-size types must be big enough to contain at + least one pointer. This is true for all current fixed-size types, + with the possible exception of Lisp_Floats, for which we define the + meat of the struct using a union of a pointer and a double to + ensure adequate space for the free list chain pointer. Some types of objects need additional "finalization" done when an object is converted from in use to not in use; @@ -628,19 +620,18 @@ dbg_eq (Lisp_Object obj1, Lisp_Object obj2) WARNING: Things are in an extremely bizarre state when the ADDITIONAL_FREE_type macros are called, so beware! - When ERROR_CHECK_GC is defined, we do things differently - so as to maximize our chances of catching places where - there is insufficient GCPROing. The thing we want to - avoid is having an object that we're using but didn't - GCPRO get freed by GC and then reallocated while we're - in the process of using it -- this will result in something - seemingly unrelated getting trashed, and is extremely - difficult to track down. If the object gets freed but - not reallocated, we can usually catch this because we - set all bytes of a freed object to 0xDEADBEEF. (The - first four bytes, however, are 0xFFFFFFFF, and the next - four are a pointer used to chain freed objects together; - we play some tricks with this pointer to make it more + When ERROR_CHECK_GC is defined, we do things differently so as to + maximize our chances of catching places where there is insufficient + GCPROing. The thing we want to avoid is having an object that + we're using but didn't GCPRO get freed by GC and then reallocated + while we're in the process of using it -- this will result in + something seemingly unrelated getting trashed, and is extremely + difficult to track down. If the object gets freed but not + reallocated, we can usually catch this because we set most of the + bytes of a freed object to 0xDEADBEEF. (The lisp object type is set + to the invalid type `lrecord_type_free', however, and a pointer + used to chain freed objects together is stored after the lrecord + header; we play some tricks with this pointer to make it more bogus, so crashes are more likely to occur right away.) We want freed objects to stay free as long as possible, @@ -705,8 +696,8 @@ struct type##_block \ static struct type##_block *current_##type##_block; \ static int current_##type##_block_index; \ \ -static structtype *type##_free_list; \ -static structtype *type##_free_list_tail; \ +static Lisp_Free *type##_free_list; \ +static Lisp_Free *type##_free_list_tail; \ \ static void \ init_##type##_alloc (void) \ @@ -746,43 +737,38 @@ static int gc_count_num_##type##_freelist cell was not GC-protected and was getting collected before free_cons() was called. */ -#define ALLOCATE_FIXED_TYPE_1(type, structtype, result) \ -do \ -{ \ - if (gc_count_num_##type##_freelist > \ - MINIMUM_ALLOWED_FIXED_TYPE_CELLS_##type) \ - { \ - result = type##_free_list; \ - /* Before actually using the chain pointer, we complement all its \ - bits; see FREE_FIXED_TYPE(). */ \ - type##_free_list = \ - (structtype *) ~(unsigned long) \ - (* (structtype **) ((char *) result + sizeof (void *))); \ - gc_count_num_##type##_freelist--; \ - } \ - else \ - ALLOCATE_FIXED_TYPE_FROM_BLOCK (type, result); \ - MARK_STRUCT_AS_NOT_FREE (result); \ +#define ALLOCATE_FIXED_TYPE_1(type, structtype, result) do { \ + if (gc_count_num_##type##_freelist > \ + MINIMUM_ALLOWED_FIXED_TYPE_CELLS_##type) \ + { \ + result = (structtype *) type##_free_list; \ + /* Before actually using the chain pointer, \ + we complement all its bits; see FREE_FIXED_TYPE(). */ \ + type##_free_list = (Lisp_Free *) \ + (~ (EMACS_UINT) (type##_free_list->chain)); \ + gc_count_num_##type##_freelist--; \ + } \ + else \ + ALLOCATE_FIXED_TYPE_FROM_BLOCK (type, result); \ + MARK_LRECORD_AS_NOT_FREE (result); \ } while (0) #else /* !ERROR_CHECK_GC */ -#define ALLOCATE_FIXED_TYPE_1(type, structtype, result) \ -do \ -{ \ +#define ALLOCATE_FIXED_TYPE_1(type, structtype, result) do { \ if (type##_free_list) \ { \ - result = type##_free_list; \ - type##_free_list = \ - * (structtype **) ((char *) result + sizeof (void *)); \ + result = (structtype *) type##_free_list; \ + type##_free_list = type##_free_list->chain; \ } \ else \ ALLOCATE_FIXED_TYPE_FROM_BLOCK (type, result); \ - MARK_STRUCT_AS_NOT_FREE (result); \ + MARK_LRECORD_AS_NOT_FREE (result); \ } while (0) #endif /* !ERROR_CHECK_GC */ + #define ALLOCATE_FIXED_TYPE(type, structtype, result) \ do \ { \ @@ -797,70 +783,54 @@ do \ NOSEEUM_INCREMENT_CONS_COUNTER (sizeof (structtype), #type); \ } while (0) -/* INVALID_POINTER_VALUE should be a value that is invalid as a pointer - to a Lisp object and invalid as an actual Lisp_Object value. We have - to make sure that this value cannot be an integer in Lisp_Object form. - 0xFFFFFFFF could be so on a 64-bit system, so we extend it to 64 bits. - On a 32-bit system, the type bits will be non-zero, making the value - be a pointer, and the pointer will be misaligned. - - Even if Emacs is run on some weirdo system that allows and allocates - byte-aligned pointers, this pointer is at the very top of the address - space and so it's almost inconceivable that it could ever be valid. */ - -#if INTBITS == 32 -# define INVALID_POINTER_VALUE 0xFFFFFFFF -#elif INTBITS == 48 -# define INVALID_POINTER_VALUE 0xFFFFFFFFFFFF -#elif INTBITS == 64 -# define INVALID_POINTER_VALUE 0xFFFFFFFFFFFFFFFF + +/* Lisp_Free is the type to represent a free list member inside a frob + block of any lisp object type. */ +typedef struct Lisp_Free +{ + struct lrecord_header lheader; + struct Lisp_Free *chain; +} Lisp_Free; + +#define LRECORD_FREE_P(ptr) \ +((ptr)->lheader.type == lrecord_type_free) + +#define MARK_LRECORD_AS_FREE(ptr) \ +((void) ((ptr)->lheader.type = lrecord_type_free)) + +#ifdef ERROR_CHECK_GC +#define MARK_LRECORD_AS_NOT_FREE(ptr) \ +((void) ((ptr)->lheader.type = lrecord_type_undefined)) #else -You have some weird system and need to supply a reasonable value here. +#define MARK_LRECORD_AS_NOT_FREE(ptr) DO_NOTHING #endif -/* The construct (* (void **) (ptr)) would cause aliasing problems - with modern optimizing compilers like `gcc -O3 -fstrict-aliasing'. - But `char *' can legally alias any pointer. Hence this union trick... - - It turned out that the union trick was not good enough for xlC -O3; - and it is questionable whether it really complies with the C standard. - so we use memset instead, which should be safe from optimizations. */ -typedef union { char c; void *p; } *aliasing_voidpp; -#define ALIASING_VOIDPP_DEREFERENCE(ptr) \ - (((aliasing_voidpp) (ptr))->p) -#define FREE_STRUCT_P(ptr) \ - (ALIASING_VOIDPP_DEREFERENCE (ptr) == (void *) INVALID_POINTER_VALUE) -#define MARK_STRUCT_AS_FREE(ptr) memset (ptr, 0xff, sizeof (void *)) -#define MARK_STRUCT_AS_NOT_FREE(ptr) memset (ptr, 0x00, sizeof (void *)) - #ifdef ERROR_CHECK_GC -#define PUT_FIXED_TYPE_ON_FREE_LIST(type, structtype, ptr) \ -do { if (type##_free_list_tail) \ - { \ - /* When we store the chain pointer, we complement all \ - its bits; this should significantly increase its \ - bogosity in case someone tries to use the value, and \ - should make us dump faster if someone stores something \ - over the pointer because when it gets un-complemented in \ - ALLOCATED_FIXED_TYPE(), the resulting pointer will be \ - extremely bogus. */ \ - * (structtype **) \ - ((char *) type##_free_list_tail + sizeof (void *)) = \ - (structtype *) ~(unsigned long) ptr; \ - } \ - else \ - type##_free_list = ptr; \ - type##_free_list_tail = ptr; \ - } while (0) +#define PUT_FIXED_TYPE_ON_FREE_LIST(type, structtype, ptr) do { \ + if (type##_free_list_tail) \ + { \ + /* When we store the chain pointer, we complement all \ + its bits; this should significantly increase its \ + bogosity in case someone tries to use the value, and \ + should make us crash faster if someone overwrites the \ + pointer because when it gets un-complemented in \ + ALLOCATED_FIXED_TYPE(), the resulting pointer will be \ + extremely bogus. */ \ + type##_free_list_tail->chain = \ + (Lisp_Free *) ~ (EMACS_UINT) (ptr); \ + } \ + else \ + type##_free_list = (Lisp_Free *) (ptr); \ + type##_free_list_tail = (Lisp_Free *) (ptr); \ +} while (0) #else /* !ERROR_CHECK_GC */ -#define PUT_FIXED_TYPE_ON_FREE_LIST(type, structtype, ptr) \ -do { * (structtype **) ((char *) (ptr) + sizeof (void *)) = \ - type##_free_list; \ - type##_free_list = (ptr); \ - } while (0) +#define PUT_FIXED_TYPE_ON_FREE_LIST(type, structtype, ptr) do { \ + ((Lisp_Free *) (ptr))->chain = type##_free_list; \ + type##_free_list = (Lisp_Free *) (ptr); \ +} while (0) \ #endif /* !ERROR_CHECK_GC */ @@ -871,7 +841,7 @@ do { * (structtype **) ((char *) (ptr) + sizeof (void *)) = \ ADDITIONAL_FREE_##type (FFT_ptr); \ deadbeef_memory (FFT_ptr, sizeof (structtype)); \ PUT_FIXED_TYPE_ON_FREE_LIST (type, structtype, FFT_ptr); \ - MARK_STRUCT_AS_FREE (FFT_ptr); \ + MARK_LRECORD_AS_FREE (FFT_ptr); \ } while (0) /* Like FREE_FIXED_TYPE() but used when we are explicitly @@ -1891,6 +1861,9 @@ static struct string_chars_block *current_string_chars_block; #define BIG_STRING_FULLSIZE_P(fullsize) ((fullsize) >= STRING_CHARS_BLOCK_SIZE) #define BIG_STRING_SIZE_P(size) (BIG_STRING_FULLSIZE_P (STRING_FULLSIZE(size))) +#define STRING_CHARS_FREE_P(ptr) ((ptr)->string == NULL) +#define MARK_STRING_CHARS_AS_FREE(ptr) ((void) ((ptr)->string = NULL)) + struct string_chars { Lisp_String *string; @@ -2098,7 +2071,7 @@ resize_string (Lisp_String *s, Bytecount pos, Bytecount delta) /* Sanity check to make sure we aren't hosed by strange alignment/padding. */ assert (old_s_chars->string == s); - MARK_STRUCT_AS_FREE (old_s_chars); + MARK_STRING_CHARS_AS_FREE (old_s_chars); ((struct unused_string_chars *) old_s_chars)->fullsize = oldfullsize; } @@ -2762,7 +2735,7 @@ do { \ { \ obj_type *SFTB_victim = &(SFTB_current->block[SFTB_iii]); \ \ - if (FREE_STRUCT_P (SFTB_victim)) \ + if (LRECORD_FREE_P (SFTB_victim)) \ { \ num_free++; \ } \ @@ -2808,13 +2781,13 @@ do { \ { \ int SFTB_iii; \ int SFTB_empty = 1; \ - obj_type *SFTB_old_free_list = typename##_free_list; \ + Lisp_Free *SFTB_old_free_list = typename##_free_list; \ \ for (SFTB_iii = 0; SFTB_iii < SFTB_limit; SFTB_iii++) \ { \ obj_type *SFTB_victim = &(SFTB_current->block[SFTB_iii]); \ \ - if (FREE_STRUCT_P (SFTB_victim)) \ + if (LRECORD_FREE_P (SFTB_victim)) \ { \ num_free++; \ PUT_FIXED_TYPE_ON_FREE_LIST (typename, obj_type, SFTB_victim); \ @@ -3032,11 +3005,11 @@ verify_string_chars_integrity (void) int size; int fullsize; - /* If the string_chars struct is marked as free (i.e. the STRING - pointer is 0xFFFFFFFF) then this is an unused chunk of string - storage. (See below.) */ + /* If the string_chars struct is marked as free (i.e. the + STRING pointer is NULL) then this is an unused chunk of + string storage. (See below.) */ - if (FREE_STRUCT_P (s_chars)) + if (STRING_CHARS_FREE_P (s_chars)) { fullsize = ((struct unused_string_chars *) s_chars)->fullsize; pos += fullsize; @@ -3083,16 +3056,16 @@ compact_string_chars (void) int size; int fullsize; - /* If the string_chars struct is marked as free (i.e. the STRING - pointer is 0xFFFFFFFF) then this is an unused chunk of string - storage. This happens under Mule when a string's size changes - in such a way that its fullsize changes. (Strings can change - size because a different-length character can be substituted - for another character.) In this case, after the bogus string - pointer is the "fullsize" of this entry, i.e. how many bytes - to skip. */ + /* If the string_chars struct is marked as free (i.e. the + STRING pointer is NULL) then this is an unused chunk of + string storage. This happens under Mule when a string's + size changes in such a way that its fullsize changes. + (Strings can change size because a different-length + character can be substituted for another character.) + In this case, after the bogus string pointer is the + "fullsize" of this entry, i.e. how many bytes to skip. */ - if (FREE_STRUCT_P (from_s_chars)) + if (STRING_CHARS_FREE_P (from_s_chars)) { fullsize = ((struct unused_string_chars *) from_s_chars)->fullsize; from_pos += fullsize; @@ -3100,7 +3073,7 @@ compact_string_chars (void) } string = from_s_chars->string; - assert (!(FREE_STRUCT_P (string))); + assert (!(LRECORD_FREE_P (string))); size = string_length (string); fullsize = STRING_FULLSIZE (size); diff --git a/src/console-x.h b/src/console-x.h index e9edc10..2605439 100644 --- a/src/console-x.h +++ b/src/console-x.h @@ -40,17 +40,6 @@ Boston, MA 02111-1307, USA. */ #include #include #include - -#if 0 /* mrb - Xos sux. */ -#ifdef USG -#undef USG /* ####KLUDGE for Solaris 2.2 and up */ -#include -#define USG -#else -#include -#endif -#endif /* 0 */ - #include #ifdef HAVE_XPM @@ -76,7 +65,7 @@ struct x_device /* Xt application info. */ Widget Xt_app_shell; - /* Cache of GC's for frame's on this device. */ + /* Cache of GC's for frames on this device. */ struct gc_cache *gc_cache; /* Selected visual, depth and colormap for this device */ diff --git a/src/fns.c b/src/fns.c index 8cfab15..fc1d700 100644 --- a/src/fns.c +++ b/src/fns.c @@ -56,6 +56,7 @@ Lisp_Object Qstring_lessp; Lisp_Object Qidentity; static int internal_old_equal (Lisp_Object, Lisp_Object, int); +Lisp_Object safe_copy_tree (Lisp_Object arg, Lisp_Object vecp, int depth); static Lisp_Object mark_bit_vector (Lisp_Object obj) @@ -863,6 +864,15 @@ are not copied. */ (arg, vecp)) { + return safe_copy_tree (arg, vecp, 0); +} + +Lisp_Object +safe_copy_tree (Lisp_Object arg, Lisp_Object vecp, int depth) +{ + if (depth > 200) + signal_simple_error ("Stack overflow in copy-tree", arg); + if (CONSP (arg)) { Lisp_Object rest; @@ -872,9 +882,9 @@ are not copied. Lisp_Object elt = XCAR (rest); QUIT; if (CONSP (elt) || VECTORP (elt)) - XCAR (rest) = Fcopy_tree (elt, vecp); + XCAR (rest) = safe_copy_tree (elt, vecp, depth + 1); if (VECTORP (XCDR (rest))) /* hack for (a b . [c d]) */ - XCDR (rest) = Fcopy_tree (XCDR (rest), vecp); + XCDR (rest) = safe_copy_tree (XCDR (rest), vecp, depth +1); rest = XCDR (rest); } } @@ -888,7 +898,7 @@ are not copied. Lisp_Object elt = XVECTOR_DATA (arg) [j]; QUIT; if (CONSP (elt) || VECTORP (elt)) - XVECTOR_DATA (arg) [j] = Fcopy_tree (elt, vecp); + XVECTOR_DATA (arg) [j] = safe_copy_tree (elt, vecp, depth + 1); } } return arg; diff --git a/src/glyphs-msw.c b/src/glyphs-msw.c index 7bb3c31..39bb3f4 100644 --- a/src/glyphs-msw.c +++ b/src/glyphs-msw.c @@ -2326,6 +2326,24 @@ mswindows_redisplay_widget (Lisp_Image_Instance *p) SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p), WM_SETTEXT, 0, (LPARAM)lparam); } + /* Set active state. */ + if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p)) + { + Lisp_Object item = IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (p); + LONG style = GetWindowLong + (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p), + GWL_STYLE); + + if (CONSP (item)) + item = XCAR (item); + + if (gui_item_active_p (item)) + SetWindowLong (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p), + GWL_STYLE, style & ~WS_DISABLED); + else + SetWindowLong (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p), + GWL_STYLE, style | WS_DISABLED); + } } /* register widgets into our hashtable so that we can cope with the @@ -2935,7 +2953,7 @@ mswindows_tab_control_redisplay (Lisp_Object image_instance) IMAGE_INSTANCE_WIDGET_ACTION_OCCURRED (ii)) { HWND wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii); - int i = 0, selected = 0; + int i = 0, selected_idx = 0; Lisp_Object rest; assert (!NILP (IMAGE_INSTANCE_WIDGET_ITEMS (ii))); @@ -2988,10 +3006,10 @@ mswindows_tab_control_redisplay (Lisp_Object image_instance) add_tab_item (image_instance, wnd, XCAR (rest), IMAGE_INSTANCE_FRAME (ii), i); if (gui_item_selected_p (XCAR (rest))) - selected = i; + selected_idx = i; i++; } - SendMessage (wnd, TCM_SETCURSEL, selected, 0); + SendMessage (wnd, TCM_SETCURSEL, selected_idx, 0); } } } diff --git a/src/glyphs-widget.c b/src/glyphs-widget.c index fbba67f..fd754c6 100644 --- a/src/glyphs-widget.c +++ b/src/glyphs-widget.c @@ -294,16 +294,89 @@ widget_update (Lisp_Object image_instance, Lisp_Object instantiator) { Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance); struct image_instantiator_methods* meths; + struct gcpro gcpro1; Lisp_Object text = find_keyword_in_vector (instantiator, Q_text); + Lisp_Object desc = find_keyword_in_vector (instantiator, Q_descriptor); + Lisp_Object items = find_keyword_in_vector (instantiator, Q_items); + Lisp_Object descriptor_item = Qnil; + + GCPRO1 (descriptor_item); + /* Pick up any generic properties that we might need to keep hold - of. */ + of. + #### This is potentially bogus because it is changing the items + in place rather than in the pending items. */ if (!NILP (text)) { IMAGE_INSTANCE_WIDGET_TEXT (ii) = text; IMAGE_INSTANCE_TEXT_CHANGED (ii) = 1; } + /* Retrieve the gui item information. This is easy if we have been + provided with a vector, more difficult if we have just been given + keywords. + + #### This is inconsistent with instantiation in that you have to + have the :descriptor keyword for updates in order to recognise + changes. */ + if (VECTORP (desc)) + { + descriptor_item = gui_parse_item_keywords_no_errors (desc); + } + else + { + /* Since we are updating the instantiator could be incomplete + and hence the gui item descriptor not well formed. We + therefore try updating and discard the results if nothing + changed. */ + descriptor_item = copy_gui_item (IMAGE_INSTANCE_WIDGET_ITEM (ii)); + if (!update_gui_item_keywords (descriptor_item, instantiator)) + descriptor_item = Qnil; + } + + /* Record new items for update. *_redisplay will do the + rest. */ + if (!EQ (IMAGE_INSTANCE_WIDGET_TYPE (ii), Qlayout) + && + !EQ (IMAGE_INSTANCE_WIDGET_TYPE (ii), Qnative_layout)) + { + if (!NILP (items)) + { + if (NILP (descriptor_item)) + descriptor_item = IMAGE_INSTANCE_WIDGET_ITEM (ii); + + check_valid_item_list (items); +#ifdef DEBUG_WIDGET_OUTPUT + stderr_out ("items for widget %p updated\n", + IMAGE_INSTANCE_SUBWINDOW_ID (ii)); +#endif + /* Don't set the actual items since we might decide not to use + the new ones (because nothing has really changed). If we did + set them and didn't use them then we would get into whole + heaps of trouble when the old items get GC'd. */ + descriptor_item = Fcons (descriptor_item, parse_gui_item_tree_children (items)); + } + /* If the descriptor was updated but not the items we need to fill + in the `new' items. */ + else if (!NILP (descriptor_item) + && + CONSP (IMAGE_INSTANCE_WIDGET_ITEMS (ii))) + { + descriptor_item = Fcons + (descriptor_item, + copy_gui_item_tree (XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)))); + } + } + + if (!NILP (descriptor_item)) + { + IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) = descriptor_item; + IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 1; + } + + UNGCPRO; + /* Now try device specific methods first ... */ meths = decode_device_ii_format (image_instance_device (image_instance), IMAGE_INSTANCE_WIDGET_TYPE (ii), @@ -570,19 +643,24 @@ widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, if (!NILP (face)) SET_IMAGE_INSTANCE_WIDGET_FACE (ii, Fget_face (face)); - /* retrieve the gui item information. This is easy if we have been + /* Retrieve the gui item information. This is easy if we have been provided with a vector, more difficult if we have just been given - keywords */ - if (STRINGP (desc) || NILP (desc)) + keywords. Note that standard gui descriptor shortcuts will not work + because of keyword parsing. + + #### This is bogus in that descriptor and items share the same slot, + we should rationalize. */ + if (VECTORP (desc)) { - /* big cheat - we rely on the fact that a gui item looks like an instantiator */ IMAGE_INSTANCE_WIDGET_ITEMS (ii) = - gui_parse_item_keywords_no_errors (instantiator); - IMAGE_INSTANCE_WIDGET_TEXT (ii) = desc; + gui_parse_item_keywords_no_errors (desc); } else - IMAGE_INSTANCE_WIDGET_ITEMS (ii) = - gui_parse_item_keywords_no_errors (desc); + { + /* big cheat - we rely on the fact that a gui item looks like an instantiator */ + IMAGE_INSTANCE_WIDGET_ITEMS (ii) = + widget_gui_parse_item_keywords (instantiator); + } /* Pick up the orientation before we do our first layout. */ if (EQ (orient, Qleft) || EQ (orient, Qright) || EQ (orient, Qvertical)) @@ -776,32 +854,6 @@ tab_control_query_geometry (Lisp_Object image_instance, } } -/* Update the contents of a tab control. */ -static void -tab_control_update (Lisp_Object image_instance, - Lisp_Object instantiator) -{ - Lisp_Object items = find_keyword_in_vector (instantiator, Q_items); - /* Record new items for update. *_tab_control_redisplay will do the - rest. */ - if (!NILP (items)) - { - Lisp_Image_Instance* ii = XIMAGE_INSTANCE (image_instance); - check_valid_item_list (items); -#ifdef DEBUG_WIDGET_OUTPUT - stderr_out ("tab control %p updated\n", IMAGE_INSTANCE_SUBWINDOW_ID (ii)); -#endif - /* Don't set the actual items since we might decide not to use - the new ones (because nothing has really changed). If we did - set them and didn't use them then we would get into whole - heaps of trouble when the old items get GC'd. */ - IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) = - Fcons (XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)), - parse_gui_item_tree_children (items)); - IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 1; - } -} - /* Determine whether only the order has changed for a tab. */ int tab_control_order_only_changed (Lisp_Object image_instance) { @@ -840,32 +892,6 @@ int tab_control_order_only_changed (Lisp_Object image_instance) return found; } -/* Set the properties of a progress gauge */ -static void -progress_gauge_update (Lisp_Object image_instance, - Lisp_Object instantiator) -{ - Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); - Lisp_Object value = find_keyword_in_vector (instantiator, Q_value); - - if (!NILP (value)) - { - CHECK_INT (value); -#ifdef DEBUG_WIDGET_OUTPUT - stderr_out ("progress gauge value set to %ld\n", XINT (value)); -#endif - IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) = - copy_gui_item_tree (IMAGE_INSTANCE_WIDGET_ITEMS (ii)); -#ifdef ERROR_CHECK_GLYPHS - assert (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))); -#endif - if (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))) - XGUI_ITEM (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))->value = value; - - IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 1; - } -} - /***************************************************************************** * widget layout * @@ -1480,7 +1506,6 @@ static void image_instantiator_progress_guage (void) IIFORMAT_HAS_SHARED_METHOD (progress_gauge, instantiate, widget); IIFORMAT_HAS_SHARED_METHOD (progress_gauge, post_instantiate, widget); IIFORMAT_HAS_SHARED_METHOD (progress_gauge, governing_domain, subwindow); - IIFORMAT_HAS_METHOD (progress_gauge, update); VALID_WIDGET_KEYWORDS (progress_gauge); VALID_GUI_KEYWORDS (progress_gauge); @@ -1495,7 +1520,6 @@ static void image_instantiator_tree_view (void) IIFORMAT_HAS_SHARED_METHOD (tree_view, instantiate, widget); IIFORMAT_HAS_SHARED_METHOD (tree_view, post_instantiate, widget); IIFORMAT_HAS_SHARED_METHOD (tree_view, governing_domain, subwindow); - IIFORMAT_HAS_SHARED_METHOD (tree_view, update, tab_control); IIFORMAT_HAS_METHOD (tree_view, query_geometry); VALID_WIDGET_KEYWORDS (tree_view); VALID_GUI_KEYWORDS (tree_view); @@ -1511,7 +1535,6 @@ static void image_instantiator_tab_control (void) IIFORMAT_HAS_SHARED_METHOD (tab_control, post_instantiate, widget); IIFORMAT_HAS_SHARED_METHOD (tab_control, governing_domain, subwindow); IIFORMAT_HAS_METHOD (tab_control, query_geometry); - IIFORMAT_HAS_METHOD (tab_control, update); VALID_WIDGET_KEYWORDS (tab_control); VALID_GUI_KEYWORDS (tab_control); IIFORMAT_VALID_KEYWORD (tab_control, Q_orientation, diff --git a/src/glyphs-x.c b/src/glyphs-x.c index 0451996..f37d3ba 100644 --- a/src/glyphs-x.c +++ b/src/glyphs-x.c @@ -2228,8 +2228,14 @@ x_redisplay_widget (Lisp_Image_Instance *p) /* Possibly update the colors and font */ if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (p) || + /* #### This is not sufficient because it will not cope with widgets + that are not currently visible. Once redisplay has done the + visible ones it will clear this flag so that when new ones + become visible they will not be updated. */ XFRAME (IMAGE_INSTANCE_FRAME (p))->faces_changed || + XFRAME (IMAGE_INSTANCE_FRAME (p))->frame_changed + || IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p)) { update_widget_face (wv, p, IMAGE_INSTANCE_FRAME (p)); diff --git a/src/glyphs.c b/src/glyphs.c index bbe3a08..6e436ba 100644 --- a/src/glyphs.c +++ b/src/glyphs.c @@ -1004,7 +1004,7 @@ print_image_instance (Lisp_Object obj, Lisp_Object printcharfun, print_internal (IMAGE_INSTANCE_WIDGET_FACE (ii), printcharfun, 0); } - + /* fallthrough */ case IMAGE_SUBWINDOW: sprintf (buf, " %dx%d", IMAGE_INSTANCE_WIDTH (ii), diff --git a/src/gui.c b/src/gui.c index 5ec1628..2b4e6df 100644 --- a/src/gui.c +++ b/src/gui.c @@ -37,6 +37,7 @@ Lisp_Object Qmenu_no_selection_hook; Lisp_Object Vmenu_no_selection_hook; static Lisp_Object parse_gui_item_tree_list (Lisp_Object list); +Lisp_Object find_keyword_in_vector (Lisp_Object vector, Lisp_Object keyword); #ifdef HAVE_POPUPS @@ -111,39 +112,63 @@ get_gui_callback (Lisp_Object data, Lisp_Object *fn, Lisp_Object *arg) * structure. If KEY is not a keyword, or is an unknown keyword, then * error is signaled. */ -void +int gui_item_add_keyval_pair (Lisp_Object gui_item, Lisp_Object key, Lisp_Object val, Error_behavior errb) { Lisp_Gui_Item *pgui_item = XGUI_ITEM (gui_item); + int retval = 0; if (!KEYWORDP (key)) syntax_error_2 ("Non-keyword in gui item", key, pgui_item->name); - if (EQ (key, Q_suffix)) pgui_item->suffix = val; - else if (EQ (key, Q_active)) pgui_item->active = val; - else if (EQ (key, Q_included)) pgui_item->included = val; - else if (EQ (key, Q_config)) pgui_item->config = val; - else if (EQ (key, Q_filter)) pgui_item->filter = val; - else if (EQ (key, Q_style)) pgui_item->style = val; - else if (EQ (key, Q_selected)) pgui_item->selected = val; - else if (EQ (key, Q_keys)) pgui_item->keys = val; - else if (EQ (key, Q_callback)) pgui_item->callback = val; - else if (EQ (key, Q_callback_ex)) pgui_item->callback_ex = val; - else if (EQ (key, Q_value)) pgui_item->value = val; + if (EQ (key, Q_descriptor)) + { + if (!EQ (pgui_item->name, val)) + { + retval = 1; + pgui_item->name = val; + } + } +#define FROB(slot) \ + else if (EQ (key, Q_##slot)) \ + { \ + if (!EQ (pgui_item->slot, val)) \ + { \ + retval = 1; \ + pgui_item->slot = val; \ + } \ + } + FROB (suffix) + FROB (active) + FROB (included) + FROB (config) + FROB (filter) + FROB (style) + FROB (selected) + FROB (keys) + FROB (callback) + FROB (callback_ex) + FROB (value) +#undef FROB else if (EQ (key, Q_key_sequence)) ; /* ignored for FSF compatibility */ else if (EQ (key, Q_label)) ; /* ignored for 21.0 implement in 21.2 */ else if (EQ (key, Q_accelerator)) { - if (SYMBOLP (val) || CHARP (val)) - pgui_item->accelerator = val; - else if (ERRB_EQ (errb, ERROR_ME)) - syntax_error ("Bad keyboard accelerator", val); + if (!EQ (pgui_item->accelerator, val)) + { + retval = 1; + if (SYMBOLP (val) || CHARP (val)) + pgui_item->accelerator = val; + else if (ERRB_EQ (errb, ERROR_ME)) + syntax_error ("Bad keyboard accelerator", val); + } } else if (ERRB_EQ (errb, ERROR_ME)) syntax_error_2 ("Unknown keyword in gui item", key, pgui_item->name); + return retval; } void @@ -248,6 +273,69 @@ make_gui_item_from_keywords_internal (Lisp_Object item, return gui_item; } +/* This will only work with descriptors in the new format. */ +Lisp_Object +widget_gui_parse_item_keywords (Lisp_Object item) +{ + int i, length; + Lisp_Object *contents; + Lisp_Object gui_item = allocate_gui_item (); + Lisp_Object desc = find_keyword_in_vector (item, Q_descriptor); + + CHECK_VECTOR (item); + length = XVECTOR_LENGTH (item); + contents = XVECTOR_DATA (item); + + if (!NILP (desc) && !STRINGP (desc) && !VECTORP (desc)) + syntax_error ("Invalid GUI item descriptor", item); + + if (length & 1) + { + if (!SYMBOLP (contents [0])) + syntax_error ("Invalid GUI item descriptor", item); + contents++; /* Ignore the leading symbol. */ + length--; + } + + for (i = 0; i < length;) + { + Lisp_Object key = contents [i++]; + Lisp_Object val = contents [i++]; + gui_item_add_keyval_pair (gui_item, key, val, ERROR_ME_NOT); + } + + return gui_item; +} + +/* Update a gui item from a partial descriptor. */ +int +update_gui_item_keywords (Lisp_Object gui_item, Lisp_Object item) +{ + int i, length, retval = 0; + Lisp_Object *contents; + + CHECK_VECTOR (item); + length = XVECTOR_LENGTH (item); + contents = XVECTOR_DATA (item); + + if (length & 1) + { + if (!SYMBOLP (contents [0])) + syntax_error ("Invalid GUI item descriptor", item); + contents++; /* Ignore the leading symbol. */ + length--; + } + + for (i = 0; i < length;) + { + Lisp_Object key = contents [i++]; + Lisp_Object val = contents [i++]; + if (gui_item_add_keyval_pair (gui_item, key, val, ERROR_ME_NOT)) + retval = 1; + } + return retval; +} + Lisp_Object gui_parse_item_keywords (Lisp_Object item) { @@ -618,7 +706,7 @@ print_gui_item (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) write_c_string (buf, printcharfun); } -static Lisp_Object +Lisp_Object copy_gui_item (Lisp_Object gui_item) { Lisp_Object ret = allocate_gui_item (); diff --git a/src/gui.h b/src/gui.h index 91f9c61..aba8883 100644 --- a/src/gui.h +++ b/src/gui.h @@ -31,6 +31,9 @@ int separator_string_p (const Bufbyte *s); void get_gui_callback (Lisp_Object, Lisp_Object *, Lisp_Object *); int gui_item_equal_sans_selected (Lisp_Object obj1, Lisp_Object obj2, int depth); + + + extern int popup_up_p; /************************************************************************/ @@ -64,9 +67,12 @@ DECLARE_LRECORD (gui_item, Lisp_Gui_Item); #define CHECK_GUI_ITEM(x) CHECK_RECORD (x, gui_item) #define CONCHECK_GUI_ITEM(x) CONCHECK_RECORD (x, gui_item) -void gui_item_add_keyval_pair (Lisp_Object, - Lisp_Object key, Lisp_Object val, - Error_behavior errb); +int update_gui_item_keywords (Lisp_Object gui_item, Lisp_Object item); +Lisp_Object copy_gui_item (Lisp_Object gui_item); +Lisp_Object widget_gui_parse_item_keywords (Lisp_Object item); +int gui_item_add_keyval_pair (Lisp_Object gui_item, + Lisp_Object key, Lisp_Object val, + Error_behavior errb); Lisp_Object gui_parse_item_keywords (Lisp_Object item); Lisp_Object gui_parse_item_keywords_no_errors (Lisp_Object item); void gui_add_item_keywords_to_plist (Lisp_Object plist, Lisp_Object gui_item); diff --git a/src/lisp.h b/src/lisp.h index 327cdb6..f179c59 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -193,20 +193,45 @@ void xfree (void *); # endif /* GNUC */ #endif +/* No type has a greater alignment requirement than max_align_t. + (except perhaps for types we don't use, like long double) */ +typedef union +{ + struct { long l; } l; + struct { void *p; } p; + struct { void (*f)(void); } f; + struct { double d; } d; +} max_align_t; + #ifndef ALIGNOF # if defined (__GNUC__) && (__GNUC__ >= 2) -# define ALIGNOF(x) __alignof__ (x) +/* gcc has an extension that gives us exactly what we want. */ +# define ALIGNOF(type) __alignof__ (type) +# elif ! defined (__cplusplus) +/* The following is mostly portable, except that: + - it doesn't work for inside out declarations like void (*) (void). + (so just call ALIGNOF with a typedef'ed name) + - it doesn't work with C++. The C++ committee has decided, + in its infinite wisdom, that: + "Types must be declared in declarations, not in expressions." */ +# define ALIGNOF(type) offsetof (struct { char c; type member; }, member) # else -# define ALIGNOF(x) sizeof (x) +/* The following should be completely portable, but might give values + that are larger than necessary. But never larger than the maximum + possible alignment. */ +# define ALIGNOF(type) \ +((sizeof (type) % sizeof (max_align_t)) == 0 ? \ + sizeof (max_align_t) : \ + (sizeof (type) % sizeof (max_align_t))) # endif -#endif +#endif /* ALIGNOF */ #define ALIGN_SIZE(len, unit) \ ((((len) + (unit) - 1) / (unit)) * (unit)) /* #### Yuck, this is kind of evil */ #define ALIGN_PTR(ptr, unit) \ - ((void *) ALIGN_SIZE ((long) (ptr), unit)) + ((void *) ALIGN_SIZE ((size_t) (ptr), unit)) #ifndef DO_NOTHING #define DO_NOTHING do {} while (0) diff --git a/src/lrecord.h b/src/lrecord.h index 0acf348..6af3946 100644 --- a/src/lrecord.h +++ b/src/lrecord.h @@ -218,6 +218,8 @@ enum lrecord_type lrecord_type_devmode, lrecord_type_mswindows_dialog_id, lrecord_type_case_table, + lrecord_type_free, /* only used for "free" lrecords */ + lrecord_type_undefined, /* only used for debugging */ lrecord_type_last_built_in_type /* must be last */ }; diff --git a/src/opaque.h b/src/opaque.h index 0350bd7..527ae6b 100644 --- a/src/opaque.h +++ b/src/opaque.h @@ -26,13 +26,6 @@ Boston, MA 02111-1307, USA. */ #ifndef INCLUDED_opaque_h_ #define INCLUDED_opaque_h_ -typedef union -{ - struct { Lisp_Object obj; } obj; - struct { void *p; } p; - struct { double d; } d; -} max_align_t; - typedef struct Lisp_Opaque { struct lcrecord_header header; diff --git a/tests/ChangeLog b/tests/ChangeLog index fa9cb3a..117f16b 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2001-01-20 Martin Buchholz + + * XEmacs 21.2.42 "Poseidon" is released. + 2001-01-17 Martin Buchholz * XEmacs 21.2.41 "Polyhymnia" is released. diff --git a/version.sh b/version.sh index 4b4f863..34cd7a2 100644 --- a/version.sh +++ b/version.sh @@ -2,8 +2,8 @@ emacs_is_beta=t emacs_major_version=21 emacs_minor_version=2 -emacs_beta_version=41 -xemacs_codename="Polyhymnia" +emacs_beta_version=42 +xemacs_codename="Poseidon" infodock_major_version=4 infodock_minor_version=0 infodock_build_version=8 -- 1.7.10.4