From: tomo Date: Thu, 15 Nov 2001 17:37:37 +0000 (+0000) Subject: Sync up with r21-2-43. X-Git-Tag: r21-2-43-utf-2000-0_18-0 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f108f7ad39114b495255195390b5501f97e31e9;p=chise%2Fxemacs-chise.git- Sync up with r21-2-43. --- diff --git a/CHANGES-beta b/CHANGES-beta index e70e4b9..ed3607b 100644 --- a/CHANGES-beta +++ b/CHANGES-beta @@ -1,3 +1,12 @@ +to 21.2.43 "Terspichore" +-- Important gnuserv security fix. Upgrade if you use gnuserv. + -- Klaus Frank, Jan Vroonhof, Gunnar Evermann +-- C-level alignment correctness fixes -- Martin Buchholz +-- cut-and-paste slowness under Motif fixed -- Andy Piper +-- pdump now works on SunOS 4 and HP-UX -- Martin Buchholz +-- Packages documentation updates -- Steve Youngs +-- Windows netinstall changes -- Andy Piper + to 21.2.42 "Poseidon" -- 64-bit platforms (Alpha) broken in 21.2.41 now fixed -- Martin Buchholz -- Windows packaging changes -- Andy Piper @@ -58,7 +67,7 @@ to 21.2.38 "Peisino,Ak(B" -- Calls to the following functions are now better optimized: backward-char backward-word plusp, minusp oddp evenp -- Martin Buchholz -- COUNT argument to following functions is now optional: - forward-word backward-word mark-word kill-word backward-kill-word + forward-word backward-word mark-word kill-word backward-kill-word forward-comment delete-char backward-delete-char -- Martin Buchholz -- Don't put gutters/tabs on popup windows -- Andy Piper -- Fix up info file cross references -- Adrian Aichner diff --git a/ChangeLog b/ChangeLog index e6db7a1..21f714b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -32,6 +32,22 @@ * configure.in: Add new option `--with-utf-2000'; define `UTF2000' if it is specified. +2001-01-26 Martin Buchholz + + * XEmacs 21.2.43 "Terspichore" is released. + +2001-01-21 Steve Youngs + + * ./etc/PACKAGES: Doc fix. + + * README.packages: Doc fix. + +2001-01-17 Steve Youngs + + * README.packages: Update. + + * ./etc/PACKAGES: Update. + 2001-01-20 Martin Buchholz * XEmacs 21.2.42 "Poseidon" is released. diff --git a/README.packages b/README.packages index 04cc713..9c214b1 100644 --- a/README.packages +++ b/README.packages @@ -1,3 +1,12 @@ + -*- Outline -*- +This file is in Outline mode. It is best viewed under XEmacs. + +Press C-c C-o (Ctrl+c Ctrl+o) now to see a list of headings. + To expand a heading: Put the cursor on the heading and press C-c C-s +To collapse a heading: Press C-c C-d + +For general XEmacs navigation tips: Press C-h t + The XEmacs Packages Quick Start Guide ------------------------------------- @@ -5,8 +14,8 @@ This text is intended to help you get started installing a new XEmacs and its packages from start. For details see the 'Startup Paths' and 'Packages' sections of the XEmacs info manual. -Real Real Quickstart FAQ ------------------------- +* Real Real Quickstart FAQ +-------------------------- Q. Do I need to have the packages to compile XEmacs? A. No, XEmacs will build and install just fine without any packages @@ -26,8 +35,8 @@ A. See the first FAQ; you may be missing a package that is essential to you. You can either track it down and install it, or install the `Sumo Tarball' (see the second FAQ). -A note of caution ------------------ +* A note of caution +------------------- The XEmacs package system is still in its infancy. Please expect a few minor hurdles on the way. Also neither the interface nor the structure is @@ -35,8 +44,8 @@ set in stone. The XEmacs maintainers reserve the right to sacrifice backwards compatibility as quirks are worked out over the coming releases. -Some Package Theory -------------------- +* Some Package Theory +--------------------- In order to reduce the size and increase the maintainability of XEmacs, the majority of the Elisp packages that came with previous releases @@ -48,147 +57,174 @@ You select just the ones you need. Install them by untarring them into the right place. On startup XEmacs will find them, set up the load path correctly, install autoloads, etc, etc. -Package hierarchies -------------------- +* Package hierarchies +--------------------- On Startup XEmacs looks for packages in so called package hierarchies. These can be specified by the 'package-path' parameter to the 'configure' script. However by default there are three system wide -hierarchies. +hierarchies. ("$prefix" defaults to "/usr/local") -$prefix/lib/xemacs/site-packages - Local and 3rd party packages go here. +$prefix/lib/xemacs/xemacs-packages + Normal packages go here. $prefix/lib/xemacs/mule-packages - Only searched by MULE-enabled XEmacsen. + Mule packages go here and are only searched by MULE-enabled XEmacsen. -$prefix/lib/xemacs/xemacs-packages - Normal packages go here. +$prefix/lib/xemacs/site-packages/ + Local and 3rd party packages go here. -Where to get the packages -------------------------- + +* Where to get the packages +--------------------------- Packages are available from ftp://ftp.xemacs.org/pub/xemacs/packages and its mirrors. -How to install the packages ---------------------------- +* How to install the packages +----------------------------- +There are a few different ways to install packages: -1. All at once, using the 'Sumo Tarball'. -2. By hand. -3. Automatically, using the package tools from XEmacs. + 1. Manually, all at once, using the 'Sumo Tarball'. + 2. Manually, using individual package tarballs. + 3. Automatically, using the package tools from XEmacs. -The Sumo Tarball ----------------- +** Manually, all at once, using the 'Sumo Tarball' +-------------------------------------------------- Those with little time, cheap connections and plenty of disk space can install all the packages at once using the sumo tarballs. -Download the file +Download the file: -xemacs-sumo.tar.gz + xemacs-sumo.tar.gz -For an XEmacs compiled with Mule you also need +For an XEmacs compiled with Mule you also need: -xemacs-mule-sumo.tar.gz + xemacs-mule-sumo.tar.gz N.B. They are called 'Sumo Tarballs' for good reason. They are -currently about 15MB and 2.3MB (gzipped) respectively. +currently about 19MB and 4.5MB (gzipped) respectively. -Install them by +Install them by: -cd $prefix/lib/xemacs ; gunzip -c | tar xf - + cd $prefix/lib/xemacs ; gunzip -c | tar xvf - RET + +Or, if you have GNU tar: + + cd $prefix/lib/xemacs ; tar zxvf /path/to/ RET As the Sumo tarballs are not regenerated as often as the individual packages, it is recommended that you use the automatic package tools afterwards to pick up any recent updates. -Installing by Hand ------------------- +** Manually, using individual package tarballs +---------------------------------------------- -Fetch the packages from the ftp site, CDROM whatever. The filenames +Fetch the packages from the FTP site, CD-ROM whatever. The filenames have the form name--pkg.tar.gz and are gzipped tar files. For a fresh install it is sufficient to untar the file at the top of the -package hierarchy. For example if we are installing the 'xemacs-base' -package in version 1.27: +package hierarchy. + +Note: If you are upgrading packages already installed, it's best to +remove the old package first (see 'Upgrading/Removing Packages' below). + +For example if we are installing the 'xemacs-base' +package (version 1.48): + + mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist yet + cd $prefix/lib/xemacs/xemacs-packages RET + gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET -mkdir $prefix/lib/xemacs/xemacs-packages # if it does not exist yet -cd $prefix/lib/xemacs/xemacs-packages -gunzip -c ...../xemacs-base-1.27-pkg.tar.gz | tar xf - +Or if you have GNU tar, the last step can be: -For MULE related packages, it is best to untar in the mule-packages -hierarchy, i.e. for the mule-base package, version 1.25 + tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET -mkdir $prefix/lib/xemacs/mule-packages # if it does not exist yet -cd $prefix/lib/xemacs/mule-packages -gunzip -c ...../mule-base-1.25-pkg.tar.gz | tar xf - +For MULE related packages, it is best to untar into the mule-packages +hierarchy, i.e. for the mule-base package, version 1.37: -Installing automatically ------------------------- + mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet + cd $prefix/lib/xemacs/mule-packages RET + gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET + +Or if you have GNU tar, the last step can be: + + tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET + + +** Automatically, using the package tools from XEmacs +----------------------------------------------------- XEmacs comes with some tools to make the periodic updating and installing easier. It will notice if new packages or versions are -available and will fetch them from the ftp site. +available and will fetch them from the FTP site. Unfortunately this requires that a few packages are already in place. You will have to install them by hand as above or use a SUMO tarball. This requirement will hopefully go away in the future. The packages you need are: - efs - To fetch the files from the ftp site or mirrors. + efs - To fetch the files from the FTP site or mirrors. xemacs-base - Needed by efs. and optionally: - mailcrypt - If you have PGP installed and want to verify the - signature of the index file. mule-base - Needed if you want to use XEmacs with MULE. -After installing these by hand, you can start XEmacs. (It is a good -idea to use 'xemacs -vanilla' here as your startup files might need -things now moved to packages.) +After installing these by hand, fire up XEmacs and follow these +steps. - - First you need to specify an FTP site to use. - Use Options->Manage Packages->Add Download Site - or M-x customize-variable RET package-get-remote RET +Note: The menus in XEmacs 21.2.x and up have changed slightly, so +where I mention "Options -> Manage Packages", substitute "Tools -> +Packages". - Alternatively, if you already have the packages on a local disk - then you can specify this directly using 'M-x - pui-add-install-directory'. Please make sure you also have a - corresponding copy of the package index there. + (1) Choose a download site. + - via menu: Options -> Manages Packages -> Add Download Site + - via keyb: M-x customize-variable RET package-get-remote RET + (put in the details of remote host and directory) - - Invoke Options->Manage Packages->List & Install - or M-x pui-list-packages RET - XEmacs will now first try to fetch a new version of the package - index from the FTP site. Depending on whether you are using - 'mailcrypt/PGP', you will get some question about keys to fetch or - whether to use the index without verifying the signature. If the - new index was different from the one already on disk, XEmacs will - offer you to overwrite the old index. + If the package tarballs _AND_ the package-index file are in a + local directory, you can: M-x pui-add-install-directory RET -- XEmacs will show you a buffer named "*Packages*" with an overview - of available and installed packages, including a short description. - In this buffer you can select which packages you want using the - mouse or using RET. + (2) Obtain a list of packages and display the list in a buffer named + "*Packages*". + - menu: Options -> Manage Packages -> List & Install + - keyb: M-x pui-list-packages RET -- When you are finished choosing packages, invoke - 'Packages->Install/Remove Select' from the menu or type 'x' to - begin installing packages. + XEmacs will now connect to the remote site and download the + latest package-index file. If you see an error about the + package-index entries not being PGP signed, you can safely + ignore this because PGP has not been integrated into the XEmacs + package tools yet. -After Installation ------------------- + The resulting buffer, "*Packages*" has brief instructions at the + end of the buffer. -New packages can only be used by XEmacs after a restart. + (3) Choose the packages you wish to install. + - mouse: Click button 2 on the package name. + - keyb: RET on the package name -Note to MULE users ------------------- + (4) Make sure you have everything you need. + - menu: Packages -> Add Required + - keyb: r -Unlike all other packages the mule-base package is used at build/dump -time. This means that you need this available before compiling XEmacs -with MULE. Also it is a good idea to keep packages that are -MULE-only separate by putting them in the mule-packages hierarchy. + XEmacs will now search for packages that are required by the + ones that you have chosen to install and offer to select + those packages also. -Which Packages to install? --------------------------- + For novices and gurus alike, this step can save your bacon. + It's easy to forget to install a critical package. + + (5) Download and install the packages. + - menu: Packages -> Install/Remove Selected + - keyb: x + +* After Installation +-------------------- + +New packages can only be used by XEmacs after a restart. + +* Which Packages to install? +---------------------------- This is difficult to say. When in doubt install a package. If you administrate a big site it might be a good idea to just install @@ -198,15 +234,18 @@ xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs, edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes, text-modes, time -Unfortunately the package system currently provides neither -dependencies nor conflicts. This will be a future enhancement. The -above set includes most packages that are used by others. +If you are using the XEmacs package tools, don't forget to do: + + Packages -> Add Required + +To make sure you have everything that the packages you have chosen to +install need. See also '.../etc/PACKAGES' for further descriptions of the individual -packages (currently outdated). +packages. -Upgrading/Removing Packages ---------------------------- +* Upgrading/Removing Packages +----------------------------- As the exact files and their locations contained in a package may change it is recommended to remove a package first before installing a @@ -218,28 +257,32 @@ remove a package using this file. Note that the interactive package tools included with XEmacs already do this for you. -User Package directories ------------------------- +* User Package directories +-------------------------- In addition to the system wide packages, each user can have his own packages installed in "~/.xemacs/xemacs-packages". If you want to install packages there using the interactive tools, you need to set 'pui-package-install-dest-dir' to "~/.xemacs/xemacs-packages" -Site lisp/Site start --------------------- +* Site lisp/Site start +---------------------- The site-packages hierarchy replaces the old 'site-lisp' directory. XEmacs no longer looks into a 'site-lisp' directly by default. A good place to put 'site-start.el' would be in $prefix/lib/xemacs/site-packages/lisp/ -Finding the right packages --------------------------- +* Finding the right packages +---------------------------- If you want to find out which package contains the functionality you are looking for, use M-x package-get-package-provider, and give it a -symbol that is likely to be in that package. For example, if some -code you want to use has a (require 'thingatpt) in it, try doing -M-x package-get-package-provider RET thingatpt , which will return -something like: (fsf-compat "1.06"). +symbol that is likely to be in that package. + +For example, if some code you want to use has a (require 'thingatpt) +in it: + + M-x package-get-package-provider RET thingatpt RET + +which will return something like: (fsf-compat "1.08"). diff --git a/etc/PACKAGES b/etc/PACKAGES index 7251e06..f958692 100644 --- a/etc/PACKAGES +++ b/etc/PACKAGES @@ -1,322 +1,324 @@ -* Description of available packages by category -=============================================== + -*- Outline -*- +This file is in Outline mode. It is best viewed under XEmacs. -This data is up-to-date as of 10 February 1999. +Press C-c C-o (Ctrl+c Ctrl+o) now to see a list of headings. + To expand a heading: Put the cursor on the heading and press C-c C-s +To collapse a heading: Press C-c C-d + +For general XEmacs navigation tips: Press C-h t + +Description of available packages by category +============================================= +This data is up-to-date as of January 17, 2001. ** Library Packages (libs) ========================== - These packages are required to build and support most of the rest of XEmacs. By design, xemacs-base is a `regular' package. Use restraint when adding new files there as it is required by almost everything. *** Sun - Support for Sparcworks. *** apel - A Portable Emacs Library. Used by XEmacs MIME support. -*** edebug - -A Lisp debugger. - *** dired - The DIRectory EDitor is for manipulating, and running commands on files in a directory. -*** efs +*** edebug +A Lisp debugger. +*** efs Treat files on remote systems the same as local files. -*** mail-lib +*** elib +Portable Emacs Lisp utilities library. + +*** fsf-compat +FSF Emacs compatibility files. +*** mail-lib Fundamental lisp files for providing email support. -*** tooltalk +*** sounds-au +XEmacs Sun sound files. + +*** sounds-wav +XEmacs Microsoft sound files. +*** tooltalk Support for building with Tooltalk. *** xemacs-base - Fundamental XEmacs support. Install this unless you wish a totally naked XEmacs. *** xemacs-devel - XEmacs Lisp developer support. This package contains utilities for supporting Lisp development. It is a single-file package so it may be tailored. ** Communications Packages (comm) ================================= - These packages provide support for various communications, primarily email and usenet. -*** footnote +*** bbdb +The Big Brother Data Base + +*** eicq +ICQ Client developed and tested on Linux x86; +only supported on that platform +*** eudc +Emacs Unified Directory Client (LDAP, PH). + +*** footnote Footnoting in mail message editing modes. *** gnats - XEmacs bug reports. *** gnus - The Gnus Newsreader and Mailreader. *** mailcrypt - Support for messaging encryption with PGP. -*** mh-e +*** mew +Messaging in an Emacs World. +*** mh-e Front end support for MH. *** net-utils - Miscellaneous Networking Utilities. This is a single-file package and files may be deleted at will. -*** ph - -Emacs implementation of the ph client to CCSO/qi directory servers. - *** rmail - An obsolete Emacs mailer. If you do not already use it don't start. *** supercite - An Emacs citation tool. Useful with all Emacs Mailers and Newsreaders. *** tm - -Emacs MIME support. +Emacs MIME support. Not needed for Gnus >= 5.8.0 *** vm - An Emacs mailer. *** w3 - A Web browser. +*** zenirc +ZENIRC IRC Client. + ** Games and Amusements (games) =============================== +All work and no play... *** cookie - Spook and Yow (Zippy quotes). *** games - Tetris, Sokoban, and Snake. *** mine - Minehunt. *** misc-games - Other amusements and diversions. ** Mule Support (mule) ====================== +MULti-lingual Enhancement. Support for world scripts such as +Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc. +To use these packages your XEmacs must be compiled with Mule +support. -*** egg-its +*** edict +Lisp Interface to EDICT, Kanji Dictionary. +*** egg-its Wnn (4.2 and 6) support. SJ3 support. Must be installed prior to XEmacs build. *** leim - Quail. Used for everything other than English and Japanese. *** locale - Used for localized menubars (French and Japanese) and localized splash screens (Japanese). -*** mule-base +*** lookup +Dictionary support +*** mule-base Basic Mule support. Must be installed prior to building with Mule. *** skk - Another Japanese Language Input Method. Can be used without a separate process running as a dictionary server. ** Productivity Packages (oa) ============================= +Things to make life a little easier. -*** calendar +*** calc +Emacs calculator. +*** calendar Calendar and diary support. *** edit-utils - Single file lisp packages for various XEmacs goodies. Load this and weed out the junk you don't want. *** forms - -Forms editing support (obsolete, use the builtin Widget instead). +Forms editing support (obsolete, use the built-in Widget instead). *** frame-icon - Provide a WM icon based on major mode. *** hm--html-menus - HTML editing. *** ispell - Spell-checking with ispell. *** pc - PC style interface emulation. *** psgml - Validated HTML/SGML editing. *** sgml - SGML/Linuxdoc-SGML editing. *** slider - User interface tool. *** speedbar - -??? Document me. +Provides a separate frame with convenient references. *** strokes - Mouse enhancement utility. *** text-modes - Various single file lisp packages for editing text files. *** time - Display time & date on the modeline. ** Operating System Utilities (os) ================================== +Tools for working with the operating system. -*** eterm +*** eshell +Command shell implemented entirely in Emacs Lisp. +*** eterm Terminal emulator. *** igrep - Enhanced front-end for Grep. *** ilisp - Front-end for Inferior Lisp. *** os-utils - Miscellaneous single-file O/S utilities, for printing, archiving, compression, remote shells, etc. -*** view-process +*** pcomplete +Provides programmatic completion. + +*** ps-print-nomule +Old, but no-Mule safe ps-print. +*** view-process A Unix process browsing tool. ** Program Editing Support (prog) ================================= +XEmacs supports a multitude of programming languages. These +packages will help your coding. *** ada - Ada language support. *** c-support - Basic single-file add-ons for editing C code. *** cc-mode - C, C++ and Java language support. *** debug - GUD, gdb, dbx debugging support. *** ediff - Interface over patch. *** emerge - Another interface over patch. -*** pcl-cvs +*** idlwave +Editing and Shell mode for the Interactive Data Language. + +*** jde +Java language and development support. +*** pcl-cvs CVS frontend. *** prog-modes - Miscellaneous single-file lisp files for various programming languages. *** scheme - Front-end support for Inferior Scheme. -*** sh-script +*** semantic +Semantic bovinator. +*** sh-script Support for editing shell scripts. *** vc - Version Control for Free systems. *** vc-cc - -Version Control for ClearCase. This package must be installed prior -to building XEmacs [broken as of XEmacs 20.5-beta19]. +Version Control for ClearCase. This package will shortly be +replaced with clearcase.el *** vhdl - Support for VHDL. ** Word Processing (wp) ======================= +Working with text. *** auctex - Basic TeX/LaTeX support. *** crisp - Crisp/Brief emulation. *** edt - DEC EDIT/EDT emulation. -*** texinfo +*** reftex +Emacs support for LaTeX cross-references, citations. +*** texinfo XEmacs TeXinfo support. *** textools - Single-file TeX support. *** tpu - DEC EDIT/TPU support. *** viper - VI emulation support. diff --git a/info/lispref.info b/info/lispref.info index f9132e6..ada9e9b 100644 --- a/info/lispref.info +++ b/info/lispref.info @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor @@ -51,869 +51,869 @@ Foundation instead of in the original English.  Indirect: -lispref.info-1: 2366 -lispref.info-2: 49116 -lispref.info-3: 97603 -lispref.info-4: 147443 -lispref.info-5: 197182 -lispref.info-6: 245536 -lispref.info-7: 293943 -lispref.info-8: 342608 -lispref.info-9: 387690 -lispref.info-10: 436621 -lispref.info-11: 485478 -lispref.info-12: 534009 -lispref.info-13: 581561 -lispref.info-14: 629419 -lispref.info-15: 678834 -lispref.info-16: 726829 -lispref.info-17: 772166 -lispref.info-18: 819636 -lispref.info-19: 867194 -lispref.info-20: 914820 -lispref.info-21: 962847 -lispref.info-22: 1011769 -lispref.info-23: 1058032 -lispref.info-24: 1104496 -lispref.info-25: 1154156 -lispref.info-26: 1202847 -lispref.info-27: 1251702 -lispref.info-28: 1300369 -lispref.info-29: 1350320 -lispref.info-30: 1398469 -lispref.info-31: 1444124 -lispref.info-32: 1494113 -lispref.info-33: 1542683 -lispref.info-34: 1589888 -lispref.info-35: 1639714 -lispref.info-36: 1688390 -lispref.info-37: 1734123 -lispref.info-38: 1783262 -lispref.info-39: 1830704 -lispref.info-40: 1879257 -lispref.info-41: 1925810 -lispref.info-42: 1974505 -lispref.info-43: 2018880 -lispref.info-44: 2063249 -lispref.info-45: 2109743 -lispref.info-46: 2150585 -lispref.info-47: 2199803 -lispref.info-48: 2213672 +lispref.info-1: 2367 +lispref.info-2: 49117 +lispref.info-3: 97602 +lispref.info-4: 147442 +lispref.info-5: 197181 +lispref.info-6: 245535 +lispref.info-7: 293942 +lispref.info-8: 342607 +lispref.info-9: 387689 +lispref.info-10: 436620 +lispref.info-11: 485477 +lispref.info-12: 534008 +lispref.info-13: 581560 +lispref.info-14: 629418 +lispref.info-15: 678833 +lispref.info-16: 726828 +lispref.info-17: 772165 +lispref.info-18: 819635 +lispref.info-19: 867193 +lispref.info-20: 914819 +lispref.info-21: 962846 +lispref.info-22: 1011768 +lispref.info-23: 1058031 +lispref.info-24: 1104495 +lispref.info-25: 1154155 +lispref.info-26: 1202846 +lispref.info-27: 1251701 +lispref.info-28: 1300368 +lispref.info-29: 1350319 +lispref.info-30: 1398468 +lispref.info-31: 1444123 +lispref.info-32: 1494112 +lispref.info-33: 1542682 +lispref.info-34: 1589887 +lispref.info-35: 1639713 +lispref.info-36: 1688389 +lispref.info-37: 1734122 +lispref.info-38: 1783261 +lispref.info-39: 1830703 +lispref.info-40: 1879256 +lispref.info-41: 1925809 +lispref.info-42: 1974504 +lispref.info-43: 2018879 +lispref.info-44: 2063248 +lispref.info-45: 2109742 +lispref.info-46: 2150584 +lispref.info-47: 2199802 +lispref.info-48: 2213671  Tag Table: (Indirect) -Node: Top2366 -Node: Copying49116 -Node: Introduction68274 -Node: Caveats69865 -Node: Lisp History71544 -Node: Conventions72800 -Node: Some Terms73615 -Node: nil and t74336 -Node: Evaluation Notation76013 -Node: Printing Notation76926 -Node: Error Messages77800 -Node: Buffer Text Notation78241 -Node: Format of Descriptions79116 -Node: A Sample Function Description79970 -Node: A Sample Variable Description83956 -Node: Acknowledgements84864 -Node: Lisp Data Types86842 -Node: Printed Representation89397 -Node: Comments91439 -Node: Primitive Types92336 -Node: Programming Types93995 -Node: Integer Type95947 -Node: Floating Point Type96984 -Node: Character Type97603 -Node: Symbol Type105507 -Node: Sequence Type108202 -Node: Cons Cell Type109721 -Node: Dotted Pair Notation114205 -Node: Association List Type116326 -Node: Array Type117209 -Node: String Type118675 -Node: Vector Type121356 -Node: Bit Vector Type122128 -Node: Function Type122990 -Node: Macro Type124103 -Node: Primitive Function Type124800 -Node: Compiled-Function Type126326 -Node: Autoload Type126880 -Node: Char Table Type127894 -Node: Hash Table Type128068 -Node: Range Table Type129223 -Node: Weak List Type130076 -Node: Editing Types130226 -Node: Buffer Type131853 -Node: Marker Type133880 -Node: Extent Type134604 -Node: Window Type135872 -Node: Frame Type137283 -Node: Device Type138078 -Node: Console Type138904 -Node: Window Configuration Type140105 -Node: Event Type140803 -Node: Process Type140967 -Node: Stream Type142002 -Node: Keymap Type143125 -Node: Syntax Table Type143663 -Node: Display Table Type144686 -Node: Database Type145125 -Node: Charset Type145291 -Node: Coding System Type145455 -Node: ToolTalk Message Type145639 -Node: ToolTalk Pattern Type145838 -Node: Window-System Types146010 -Node: Face Type147156 -Node: Glyph Type147287 -Node: Specifier Type147443 -Node: Font Instance Type147616 -Node: Color Instance Type147806 -Node: Image Instance Type148003 -Node: Toolbar Button Type148201 -Node: Subwindow Type148394 -Node: X Resource Type148573 -Node: Type Predicates148726 -Node: Equality Predicates157855 -Node: Numbers162666 -Node: Integer Basics164121 -Node: Float Basics166470 -Node: Predicates on Numbers168212 -Node: Comparison of Numbers169845 -Node: Numeric Conversions173666 -Node: Arithmetic Operations175132 -Node: Rounding Operations181271 -Node: Bitwise Operations182384 -Node: Math Functions191430 -Node: Random Numbers193963 -Node: Strings and Characters195729 -Node: String Basics197182 -Node: Predicates for Strings199600 -Node: Creating Strings200363 -Node: Predicates for Characters205704 -Node: Character Codes206775 -Node: Text Comparison208195 -Node: String Conversion211640 -Node: Modifying Strings215310 -Node: String Properties215951 -Node: Formatting Strings216596 -Node: Character Case226214 -Node: Case Tables229768 -Node: Char Tables233739 -Node: Char Table Types235131 -Node: Working With Char Tables236716 -Node: Lists238733 -Node: Cons Cells239856 -Node: Lists as Boxes241192 -Node: List-related Predicates243834 -Node: List Elements245536 -Node: Building Lists250565 -Node: Modifying Lists256557 -Node: Setcar257369 -Node: Setcdr259800 -Node: Rearrangement262321 -Node: Sets And Lists267907 -Node: Association Lists272135 -Ref: Association Lists-Footnote-1281426 -Node: Property Lists281631 -Node: Working With Normal Plists283179 -Node: Working With Lax Plists285516 -Node: Converting Plists To/From Alists287796 -Node: Weak Lists289144 -Node: Sequences Arrays Vectors291307 -Node: Sequence Functions293943 -Node: Arrays297602 -Node: Array Functions300666 -Node: Vectors303199 -Node: Vector Functions304697 -Node: Bit Vectors307268 -Node: Bit Vector Functions308113 -Node: Symbols310412 -Node: Symbol Components311461 -Node: Definitions315644 -Node: Creating Symbols317869 -Node: Symbol Properties324903 -Node: Plists and Alists326430 -Node: Object Plists328179 -Node: Other Plists330939 -Node: Evaluation332738 -Node: Intro Eval333543 -Ref: Intro Eval-Footnote-1336896 -Node: Eval337031 -Node: Forms341449 -Node: Self-Evaluating Forms342608 -Node: Symbol Forms344121 -Node: Classifying Lists345038 -Node: Function Indirection345794 -Node: Function Forms348893 -Node: Macro Forms349890 -Node: Special Forms351490 -Node: Autoloading353799 -Node: Quoting354297 -Node: Control Structures355658 -Node: Sequencing357278 -Node: Conditionals360143 -Node: Combining Conditions363566 -Node: Iteration366836 -Node: Nonlocal Exits368615 -Node: Catch and Throw369317 -Node: Examples of Catch373156 -Node: Errors375175 -Node: Signaling Errors376664 -Node: Processing of Errors385411 -Node: Handling Errors387690 -Node: Error Symbols394931 -Node: Cleanups398887 -Node: Variables402665 -Node: Global Variables404434 -Node: Constant Variables405510 -Node: Local Variables406136 -Node: Void Variables411073 -Node: Defining Variables414589 -Node: Accessing Variables421753 -Node: Setting Variables423178 -Node: Variable Scoping427697 -Node: Scope429296 -Node: Extent430821 -Node: Impl of Scope432300 -Node: Using Scoping434263 -Node: Buffer-Local Variables435785 -Node: Intro to Buffer-Local436621 -Node: Creating Buffer-Local439164 -Node: Default Value445063 -Node: Variable Aliases448206 -Node: Functions450057 -Node: What Is a Function451151 -Node: Lambda Expressions455197 -Node: Lambda Components456107 -Node: Simple Lambda457939 -Node: Argument List459596 -Node: Function Documentation463324 -Node: Function Names465266 -Node: Defining Functions467839 -Node: Calling Functions470879 -Node: Mapping Functions474727 -Node: Anonymous Functions477415 -Node: Function Cells480660 -Node: Inline Functions485478 -Node: Related Topics487288 -Node: Macros488341 -Node: Simple Macro489625 -Node: Expansion490360 -Node: Compiling Macros493364 -Node: Defining Macros495200 -Node: Backquote496517 -Node: Problems with Macros498914 -Node: Argument Evaluation499609 -Node: Surprising Local Vars502524 -Node: Eval During Expansion504592 -Node: Repeated Expansion506285 -Node: Customization508201 -Node: Common Keywords508670 -Node: Group Definitions511515 -Node: Variable Definitions513707 -Node: Customization Types518697 -Node: Simple Types520132 -Node: Composite Types522289 -Node: Splicing into Lists526979 -Node: Type Keywords528814 -Node: Loading532334 -Node: How Programs Do Loading534009 -Node: Autoload543135 -Node: Repeated Loading549205 -Node: Named Features551318 -Node: Unloading557748 -Node: Hooks for Loading559904 -Node: Byte Compilation560621 -Node: Speed of Byte-Code562614 -Node: Compilation Functions563821 -Node: Docs and Compilation570478 -Node: Dynamic Loading573131 -Node: Eval During Compile575495 -Node: Compiled-Function Objects576760 -Node: Disassembly581561 -Node: Different Behavior588842 -Node: Debugging590187 -Node: Debugger591599 -Node: Error Debugging592744 -Node: Infinite Loops595497 -Node: Function Debugging596741 -Node: Explicit Debug599541 -Node: Using Debugger600312 -Node: Debugger Commands602174 -Node: Invoking the Debugger606491 -Node: Internals of Debugger610406 -Node: Syntax Errors615293 -Node: Excess Open616541 -Node: Excess Close618416 -Node: Compilation Errors619837 -Node: Edebug621125 -Node: Using Edebug623233 -Node: Instrumenting625930 -Node: Edebug Execution Modes629419 -Node: Jumping632529 -Node: Edebug Misc634872 -Node: Breakpoints636261 -Node: Global Break Condition639067 -Node: Embedded Breakpoints640022 -Node: Trapping Errors640977 -Node: Edebug Views643053 -Node: Edebug Eval645018 -Node: Eval List646195 -Node: Reading in Edebug649580 -Node: Printing in Edebug650379 -Node: Tracing652094 -Node: Coverage Testing653982 -Node: The Outside Context656023 -Node: Checking Whether to Stop656972 -Node: Edebug Display Update657619 -Node: Edebug Recursive Edit659642 -Node: Instrumenting Macro Calls661297 -Node: Specification List663779 -Node: Backtracking673190 -Node: Debugging Backquote675128 -Node: Specification Examples678834 -Node: Edebug Options680901 -Node: Read and Print686240 -Node: Streams Intro687217 -Node: Input Streams689235 -Node: Input Functions694136 -Node: Output Streams696196 -Node: Output Functions700247 -Node: Output Variables704547 -Node: Minibuffers709348 -Node: Intro to Minibuffers710500 -Node: Text from Minibuffer712688 -Node: Object from Minibuffer717782 -Node: Minibuffer History721875 -Node: Completion724854 -Node: Basic Completion726829 -Node: Minibuffer Completion731712 -Node: Completion Commands735289 -Node: High-Level Completion739946 -Node: Reading File Names744695 -Node: Programmed Completion748387 -Node: Yes-or-No Queries750769 -Node: Multiple Queries756506 -Node: Reading a Password760573 -Node: Minibuffer Misc761916 -Node: Command Loop766796 -Node: Command Overview768140 -Node: Defining Commands771418 -Node: Using Interactive772166 -Node: Interactive Codes776939 -Node: Interactive Examples782731 -Node: Interactive Call784045 -Node: Command Loop Info789460 -Node: Events794439 -Node: Event Types795900 -Node: Event Contents797823 -Node: Event Predicates802299 -Node: Accessing Mouse Event Positions803617 -Node: Frame-Level Event Position Info804316 -Node: Window-Level Event Position Info805356 -Node: Event Text Position Info807120 -Node: Event Glyph Position Info809612 -Node: Event Toolbar Position Info810935 -Node: Other Event Position Info811606 -Node: Accessing Other Event Info812015 -Node: Working With Events813635 -Node: Converting Events819636 -Node: Reading Input823035 -Node: Key Sequence Input824037 -Node: Reading One Event826672 -Node: Dispatching an Event829496 -Node: Quoted Character Input829947 -Node: Peeking and Discarding831295 -Node: Waiting835199 -Node: Quitting837513 -Node: Prefix Command Arguments841921 -Node: Recursive Editing847008 -Node: Disabling Commands851803 -Node: Command History853871 -Node: Keyboard Macros855608 -Node: Keymaps857825 -Node: Keymap Terminology859402 -Node: Format of Keymaps862331 -Node: Creating Keymaps862742 -Node: Inheritance and Keymaps864822 -Node: Key Sequences867194 -Node: Prefix Keys871990 -Node: Active Keymaps875575 -Node: Key Lookup884946 -Node: Functions for Key Lookup890109 -Node: Changing Key Bindings895810 -Node: Key Binding Commands902972 -Node: Scanning Keymaps905037 -Node: Other Keymap Functions913606 -Node: Menus914228 -Node: Menu Format914820 -Node: Menubar Format923466 -Node: Menubar924091 -Node: Modifying Menus927204 -Node: Menu Filters932548 -Node: Pop-Up Menus934444 -Node: Menu Accelerators936772 -Node: Creating Menu Accelerators937528 -Node: Keyboard Menu Traversal938888 -Node: Menu Accelerator Functions939615 -Node: Buffers Menu942691 -Node: Dialog Boxes943985 -Node: Dialog Box Format944152 -Node: Dialog Box Functions945577 -Node: Toolbar945974 -Node: Toolbar Intro946409 -Node: Creating Toolbar948809 -Node: Toolbar Descriptor Format949726 -Node: Specifying the Toolbar954223 -Node: Other Toolbar Variables957830 -Node: Gutter962258 -Node: Gutter Intro962847 -Node: Creating Gutter964850 -Node: Gutter Descriptor Format967737 -Node: Specifying a Gutter972194 -Node: Other Gutter Variables975729 -Node: Common Gutter Widgets980116 -Node: Buffer Tabs981108 -Node: Progress Bars981249 -Node: Scrollbars981394 -Node: Drag and Drop981529 -Node: Supported Protocols982605 -Node: OffiX DND983108 -Node: CDE dt984115 -Node: MSWindows OLE984706 -Node: Loose ends984877 -Node: Drop Interface985269 -Node: Drag Interface986291 -Node: Modes986465 -Node: Major Modes987416 -Node: Major Mode Conventions990331 -Node: Example Major Modes996286 -Node: Auto Major Mode1004319 -Node: Mode Help1011769 -Node: Derived Modes1012870 -Node: Minor Modes1015061 -Node: Minor Mode Conventions1016363 -Node: Keymaps and Minor Modes1019226 -Node: Modeline Format1020061 -Node: Modeline Data1021829 -Node: Modeline Variables1026982 -Node: %-Constructs1031698 -Node: Hooks1034685 -Node: Documentation1041445 -Node: Documentation Basics1042868 -Node: Accessing Documentation1045919 -Node: Keys in Documentation1052200 -Node: Describing Characters1055683 -Node: Help Functions1058032 -Node: Obsoleteness1064482 -Node: Files1067474 -Node: Visiting Files1069399 -Node: Visiting Functions1070904 -Node: Subroutines of Visiting1076062 -Node: Saving Buffers1078135 -Node: Reading from Files1084228 -Node: Writing to Files1086389 -Node: File Locks1089106 -Node: Information about Files1092173 -Node: Testing Accessibility1092934 -Node: Kinds of Files1096674 -Node: Truenames1098355 -Node: File Attributes1099357 -Node: Changing File Attributes1104496 -Node: File Names1109918 -Node: File Name Components1111491 -Node: Directory Names1113936 -Node: Relative File Names1117166 -Node: File Name Expansion1118136 -Node: Unique File Names1121890 -Node: File Name Completion1123505 -Node: User Name Completion1126773 -Node: Contents of Directories1128180 -Node: Create/Delete Dirs1131493 -Node: Magic File Names1132599 -Node: Partial Files1138247 -Node: Intro to Partial Files1138475 -Node: Creating a Partial File1139715 -Node: Detached Partial Files1140651 -Node: Format Conversion1141773 -Node: Files and MS-DOS1147271 -Node: Backups and Auto-Saving1149335 -Node: Backup Files1150010 -Node: Making Backups1151407 -Node: Rename or Copy1154156 -Node: Numbered Backups1156649 -Node: Backup Names1158884 -Node: Auto-Saving1162176 -Node: Reverting1170338 -Node: Buffers1173674 -Node: Buffer Basics1175090 -Node: Current Buffer1177143 -Node: Buffer Names1181847 -Node: Buffer File Name1185054 -Node: Buffer Modification1189173 -Node: Modification Time1191416 -Node: Read Only Buffers1194791 -Node: The Buffer List1198030 -Node: Creating Buffers1202847 -Node: Killing Buffers1204993 -Node: Indirect Buffers1208825 -Node: Windows1211399 -Node: Basic Windows1212877 -Node: Splitting Windows1215975 -Node: Deleting Windows1221301 -Node: Selecting Windows1225219 -Node: Cyclic Window Ordering1229442 -Node: Buffers and Windows1234597 -Node: Displaying Buffers1236375 -Node: Choosing Window1241714 -Node: Window Point1249632 -Node: Window Start1251702 -Node: Vertical Scrolling1256501 -Node: Horizontal Scrolling1262699 -Node: Size of Window1266228 -Node: Position of Window1270946 -Node: Resizing Windows1273199 -Node: Window Configurations1278637 -Node: Frames1282134 -Node: Creating Frames1284475 -Node: Frame Properties1285815 -Node: Property Access1286631 -Node: Initial Properties1287538 -Node: X Frame Properties1290024 -Node: Size and Position1294658 -Node: Frame Name1296656 -Node: Frame Titles1297570 -Node: Deleting Frames1299394 -Node: Finding All Frames1300369 -Node: Frames and Windows1303597 -Node: Minibuffers and Frames1306379 -Node: Input Focus1307297 -Node: Visibility of Frames1310402 -Node: Raising and Lowering1312392 -Node: Frame Configurations1314768 -Node: Frame Hooks1315825 -Node: Consoles and Devices1317630 -Node: Basic Console Functions1320373 -Node: Basic Device Functions1320796 -Node: Console Types and Device Classes1321642 -Node: Connecting to a Console or Device1323909 -Node: The Selected Console and Device1326093 -Node: Console and Device I/O1327119 -Node: Positions1327883 -Node: Point1328852 -Node: Motion1331942 -Node: Character Motion1332709 -Node: Word Motion1334946 -Node: Buffer End Motion1336336 -Node: Text Lines1337873 -Node: Screen Lines1342774 -Node: List Motion1346837 -Node: Skipping Characters1350320 -Node: Excursions1352539 -Node: Narrowing1355579 -Node: Markers1360910 -Node: Overview of Markers1361816 -Node: Predicates on Markers1366508 -Node: Creating Markers1367754 -Node: Information from Markers1371954 -Node: Changing Markers1373052 -Node: The Mark1374580 -Node: The Region1383083 -Node: Text1388769 -Node: Near Point1391468 -Node: Buffer Contents1395655 -Node: Comparing Text1397061 -Node: Insertion1398469 -Node: Commands for Insertion1402379 -Node: Deletion1405273 -Node: User-Level Deletion1408923 -Node: The Kill Ring1413083 -Node: Kill Ring Concepts1415257 -Node: Kill Functions1416311 -Node: Yank Commands1418234 -Node: Low-Level Kill Ring1420105 -Node: Internals of Kill Ring1423191 -Node: Undo1425971 -Node: Maintaining Undo1430308 -Node: Filling1432926 -Node: Margins1438920 -Node: Auto Filling1442943 -Node: Sorting1444124 -Node: Columns1453438 -Node: Indentation1456519 -Node: Primitive Indent1457298 -Node: Mode-Specific Indent1458623 -Node: Region Indent1461155 -Node: Relative Indent1464102 -Node: Indent Tabs1466484 -Node: Motion by Indent1467805 -Node: Case Changes1468584 -Node: Text Properties1471937 -Node: Examining Properties1473750 -Node: Changing Properties1475633 -Node: Property Search1479224 -Node: Special Properties1483943 -Node: Saving Properties1484224 -Node: Substitution1487366 -Node: Registers1490636 -Node: Transposition1493219 -Node: Change Hooks1494113 -Node: Transformations1496153 -Node: Searching and Matching1501257 -Node: String Search1502388 -Node: Regular Expressions1507369 -Node: Syntax of Regexps1508736 -Node: Regexp Example1523339 -Node: Regexp Search1525509 -Node: POSIX Regexps1531846 -Node: Search and Replace1533923 -Node: Match Data1537288 -Node: Simple Match Data1538418 -Node: Replacing Match1542683 -Node: Entire Match Data1545364 -Node: Saving Match Data1547602 -Node: Searching and Case1548990 -Node: Standard Regexps1551024 -Node: Syntax Tables1553222 -Node: Syntax Basics1554336 -Node: Syntax Descriptors1557308 -Node: Syntax Class Table1559158 -Node: Syntax Flags1565196 -Node: Syntax Table Functions1568413 -Node: Motion and Syntax1572701 -Node: Parsing Expressions1574153 -Node: Standard Syntax Tables1580251 -Node: Syntax Table Internals1581095 -Node: Abbrevs1582121 -Node: Abbrev Mode1583925 -Node: Abbrev Tables1584645 -Node: Defining Abbrevs1586184 -Node: Abbrev Files1588105 -Node: Abbrev Expansion1589888 -Node: Standard Abbrev Tables1594519 -Node: Extents1595678 -Node: Intro to Extents1596921 -Node: Creating and Modifying Extents1600913 -Node: Extent Endpoints1602494 -Node: Finding Extents1605757 -Node: Mapping Over Extents1609879 -Node: Extent Properties1616002 -Node: Detached Extents1626163 -Node: Extent Parents1628022 -Node: Duplicable Extents1629716 -Node: Extents and Events1632937 -Node: Atomic Extents1634844 -Node: Specifiers1635291 -Node: Introduction to Specifiers1637404 -Node: Specifiers In-Depth1639714 -Node: Specifier Instancing1644626 -Node: Specifier Types1647888 -Node: Adding Specifications1652962 -Node: Retrieving Specifications1662383 -Node: Specifier Tag Functions1666128 -Node: Specifier Instancing Functions1669362 -Node: Specifier Example1672769 -Node: Creating Specifiers1675925 -Node: Specifier Validation Functions1680242 -Node: Other Specification Functions1682628 -Node: Faces and Window-System Objects1686449 -Node: Faces1686773 -Node: Merging Faces1688390 -Node: Basic Face Functions1690351 -Node: Face Properties1692499 -Node: Face Convenience Functions1702772 -Node: Other Face Display Functions1705992 -Node: Fonts1706804 -Node: Font Specifiers1707505 -Node: Font Instances1708690 -Node: Font Instance Names1709657 -Node: Font Instance Size1710498 -Node: Font Instance Characteristics1711784 -Node: Font Convenience Functions1712962 -Node: Colors1714252 -Node: Color Specifiers1714692 -Node: Color Instances1717052 -Node: Color Instance Properties1717796 -Node: Color Convenience Functions1718422 -Node: Glyphs1719475 -Node: Glyph Functions1721076 -Node: Creating Glyphs1721483 -Node: Glyph Properties1734123 -Node: Glyph Convenience Functions1743290 -Node: Glyph Dimensions1747237 -Node: Images1748317 -Node: Image Specifiers1748766 -Node: Image Instantiator Conversion1764257 -Node: Image Instances1765622 -Node: Image Instance Types1766373 -Node: Image Instance Functions1769138 -Node: Glyph Types1776195 -Node: Mouse Pointer1777967 -Node: Redisplay Glyphs1780970 -Node: Subwindows1782003 -Node: Annotations1782246 -Node: Annotation Basics1783262 -Node: Annotation Primitives1787200 -Node: Annotation Properties1788539 -Node: Locating Annotations1791579 -Node: Margin Primitives1792416 -Node: Annotation Hooks1794310 -Node: Display1794970 -Node: Refresh Screen1795948 -Node: Truncation1798142 -Node: The Echo Area1800667 -Node: Warnings1807110 -Node: Invisible Text1811546 -Node: Selective Display1814125 -Node: Overlay Arrow1818251 -Node: Temporary Displays1819604 -Node: Blinking1823725 -Node: Usual Display1825909 -Node: Display Tables1828458 -Node: Display Table Format1829262 -Node: Active Display Table1830704 -Node: Character Descriptors1834699 -Node: Beeping1835456 -Node: Hash Tables1840222 -Node: Introduction to Hash Tables1840830 -Node: Working With Hash Tables1847389 -Node: Weak Hash Tables1848506 -Node: Range Tables1850523 -Node: Introduction to Range Tables1851212 -Node: Working With Range Tables1851658 -Node: Databases1852617 -Node: Connecting to a Database1852916 -Node: Working With a Database1854023 -Node: Other Database Functions1854897 -Node: Processes1855466 -Node: Subprocess Creation1857690 -Node: Synchronous Processes1861141 -Node: MS-DOS Subprocesses1867863 -Node: Asynchronous Processes1868937 -Node: Deleting Processes1873294 -Node: Process Information1875165 -Node: Input to Processes1879257 -Node: Signals to Processes1881952 -Node: Output from Processes1886767 -Node: Process Buffers1887579 -Node: Filter Functions1890458 -Node: Accepting Output1896049 -Node: Sentinels1897576 -Node: Process Window Size1901066 -Node: Transaction Queues1901415 -Node: Network1903113 -Node: System Interface1905747 -Node: Starting Up1907017 -Node: Start-up Summary1907611 -Node: Init File1911165 -Node: Terminal-Specific1913546 -Node: Command Line Arguments1916705 -Node: Getting Out1920194 -Node: Killing XEmacs1920763 -Node: Suspending XEmacs1922431 -Node: System Environment1925810 -Node: User Identification1931991 -Node: Time of Day1935520 -Node: Time Conversion1938307 -Node: Timers1943549 -Node: Terminal Input1945722 -Node: Input Modes1946225 -Node: Translating Input1948684 -Node: Recording Input1952849 -Node: Terminal Output1954949 -Node: Flow Control1958570 -Node: Batch Mode1962532 -Node: X-Windows1963914 -Node: X Selections1964785 -Node: X Server1967536 -Node: Resources1967987 -Node: Server Data1973298 -Node: Grabs1974505 -Node: X Miscellaneous1976085 -Node: ToolTalk Support1978470 -Node: XEmacs ToolTalk API Summary1978687 -Node: Sending Messages1979987 -Node: Example of Sending Messages1980238 -Node: Elisp Interface for Sending Messages1981300 -Node: Receiving Messages1987896 -Node: Example of Receiving Messages1988119 -Node: Elisp Interface for Receiving Messages1988955 -Node: LDAP Support1992812 -Node: Building XEmacs with LDAP support1993306 -Node: XEmacs LDAP API1994283 -Node: LDAP Variables1995335 -Node: The High-Level LDAP API1997935 -Node: The Low-Level LDAP API2001408 -Node: The LDAP Lisp Object2002239 -Node: Opening and Closing a LDAP Connection2002794 -Node: Low-level Operations on a LDAP Server2004600 -Node: LDAP Internationalization2007324 -Node: LDAP Internationalization Variables2008229 -Node: Encoder/Decoder Functions2009960 -Node: Syntax of Search Filters2010997 -Node: PostgreSQL Support2012295 -Node: Building XEmacs with PostgreSQL support2012690 -Node: XEmacs PostgreSQL libpq API2014037 -Node: libpq Lisp Variables2015916 -Node: libpq Lisp Symbols and DataTypes2018880 -Node: Synchronous Interface Functions2032120 -Node: Asynchronous Interface Functions2036611 -Node: Large Object Support2040116 -Node: Other libpq Functions2040743 -Node: Unimplemented libpq Functions2043778 -Node: XEmacs PostgreSQL libpq Examples2049097 -Node: Internationalization2055188 -Node: I18N Levels 1 and 22055531 -Node: I18N Level 32056237 -Node: Level 3 Basics2056518 -Node: Level 3 Primitives2057351 -Node: Dynamic Messaging2058957 -Node: Domain Specification2059420 -Node: Documentation String Extraction2061090 -Node: I18N Level 42062008 -Node: MULE2062200 -Node: Internationalization Terminology2063249 -Node: Charsets2075448 -Node: Charset Properties2076144 -Node: Basic Charset Functions2080859 -Node: Charset Property Functions2083040 -Node: Predefined Charsets2085110 -Node: MULE Characters2088030 -Node: Composite Characters2088905 -Node: Coding Systems2090172 -Node: Coding System Types2092312 -Node: ISO 20222096296 -Node: EOL Conversion2108571 -Node: Coding System Properties2109743 -Node: Basic Coding System Functions2114066 -Node: Coding System Property Functions2116100 -Node: Encoding and Decoding Text2116658 -Node: Detection of Textual Encoding2117794 -Node: Big5 and Shift-JIS Functions2119330 -Node: Predefined Coding Systems2120482 -Node: CCL2132576 -Node: CCL Syntax2135680 -Node: CCL Statements2137256 -Node: CCL Expressions2141904 -Node: Calling CCL2144443 -Node: CCL Examples2147448 -Node: Category Tables2147585 -Node: Tips2149944 -Node: Style Tips2150585 -Node: Compilation Tips2160104 -Node: Documentation Tips2162018 -Node: Comment Tips2167527 -Node: Library Headers2170530 -Node: Building XEmacs and Object Allocation2174502 -Node: Building XEmacs2175385 -Node: Pure Storage2181963 -Node: Garbage Collection2184751 -Node: Standard Errors2195594 -Node: Standard Buffer-Local Variables2199803 -Node: Standard Keymaps2202438 -Node: Standard Hooks2206172 -Node: Index2213672 +Node: Top2367 +Node: Copying49117 +Node: Introduction68273 +Node: Caveats69864 +Node: Lisp History71543 +Node: Conventions72799 +Node: Some Terms73614 +Node: nil and t74335 +Node: Evaluation Notation76012 +Node: Printing Notation76925 +Node: Error Messages77799 +Node: Buffer Text Notation78240 +Node: Format of Descriptions79115 +Node: A Sample Function Description79969 +Node: A Sample Variable Description83955 +Node: Acknowledgements84863 +Node: Lisp Data Types86841 +Node: Printed Representation89396 +Node: Comments91438 +Node: Primitive Types92335 +Node: Programming Types93994 +Node: Integer Type95946 +Node: Floating Point Type96983 +Node: Character Type97602 +Node: Symbol Type105506 +Node: Sequence Type108201 +Node: Cons Cell Type109720 +Node: Dotted Pair Notation114204 +Node: Association List Type116325 +Node: Array Type117208 +Node: String Type118674 +Node: Vector Type121355 +Node: Bit Vector Type122127 +Node: Function Type122989 +Node: Macro Type124102 +Node: Primitive Function Type124799 +Node: Compiled-Function Type126325 +Node: Autoload Type126879 +Node: Char Table Type127893 +Node: Hash Table Type128067 +Node: Range Table Type129222 +Node: Weak List Type130075 +Node: Editing Types130225 +Node: Buffer Type131852 +Node: Marker Type133879 +Node: Extent Type134603 +Node: Window Type135871 +Node: Frame Type137282 +Node: Device Type138077 +Node: Console Type138903 +Node: Window Configuration Type140104 +Node: Event Type140802 +Node: Process Type140966 +Node: Stream Type142001 +Node: Keymap Type143124 +Node: Syntax Table Type143662 +Node: Display Table Type144685 +Node: Database Type145124 +Node: Charset Type145290 +Node: Coding System Type145454 +Node: ToolTalk Message Type145638 +Node: ToolTalk Pattern Type145837 +Node: Window-System Types146009 +Node: Face Type147155 +Node: Glyph Type147286 +Node: Specifier Type147442 +Node: Font Instance Type147615 +Node: Color Instance Type147805 +Node: Image Instance Type148002 +Node: Toolbar Button Type148200 +Node: Subwindow Type148393 +Node: X Resource Type148572 +Node: Type Predicates148725 +Node: Equality Predicates157854 +Node: Numbers162665 +Node: Integer Basics164120 +Node: Float Basics166469 +Node: Predicates on Numbers168211 +Node: Comparison of Numbers169844 +Node: Numeric Conversions173665 +Node: Arithmetic Operations175131 +Node: Rounding Operations181270 +Node: Bitwise Operations182383 +Node: Math Functions191429 +Node: Random Numbers193962 +Node: Strings and Characters195728 +Node: String Basics197181 +Node: Predicates for Strings199599 +Node: Creating Strings200362 +Node: Predicates for Characters205703 +Node: Character Codes206774 +Node: Text Comparison208194 +Node: String Conversion211639 +Node: Modifying Strings215309 +Node: String Properties215950 +Node: Formatting Strings216595 +Node: Character Case226213 +Node: Case Tables229767 +Node: Char Tables233738 +Node: Char Table Types235130 +Node: Working With Char Tables236715 +Node: Lists238732 +Node: Cons Cells239855 +Node: Lists as Boxes241191 +Node: List-related Predicates243833 +Node: List Elements245535 +Node: Building Lists250564 +Node: Modifying Lists256556 +Node: Setcar257368 +Node: Setcdr259799 +Node: Rearrangement262320 +Node: Sets And Lists267906 +Node: Association Lists272134 +Ref: Association Lists-Footnote-1281425 +Node: Property Lists281630 +Node: Working With Normal Plists283178 +Node: Working With Lax Plists285515 +Node: Converting Plists To/From Alists287795 +Node: Weak Lists289143 +Node: Sequences Arrays Vectors291306 +Node: Sequence Functions293942 +Node: Arrays297601 +Node: Array Functions300665 +Node: Vectors303198 +Node: Vector Functions304696 +Node: Bit Vectors307267 +Node: Bit Vector Functions308112 +Node: Symbols310411 +Node: Symbol Components311460 +Node: Definitions315643 +Node: Creating Symbols317868 +Node: Symbol Properties324902 +Node: Plists and Alists326429 +Node: Object Plists328178 +Node: Other Plists330938 +Node: Evaluation332737 +Node: Intro Eval333542 +Ref: Intro Eval-Footnote-1336895 +Node: Eval337030 +Node: Forms341448 +Node: Self-Evaluating Forms342607 +Node: Symbol Forms344120 +Node: Classifying Lists345037 +Node: Function Indirection345793 +Node: Function Forms348892 +Node: Macro Forms349889 +Node: Special Forms351489 +Node: Autoloading353798 +Node: Quoting354296 +Node: Control Structures355657 +Node: Sequencing357277 +Node: Conditionals360142 +Node: Combining Conditions363565 +Node: Iteration366835 +Node: Nonlocal Exits368614 +Node: Catch and Throw369316 +Node: Examples of Catch373155 +Node: Errors375174 +Node: Signaling Errors376663 +Node: Processing of Errors385410 +Node: Handling Errors387689 +Node: Error Symbols394930 +Node: Cleanups398886 +Node: Variables402664 +Node: Global Variables404433 +Node: Constant Variables405509 +Node: Local Variables406135 +Node: Void Variables411072 +Node: Defining Variables414588 +Node: Accessing Variables421752 +Node: Setting Variables423177 +Node: Variable Scoping427696 +Node: Scope429295 +Node: Extent430820 +Node: Impl of Scope432299 +Node: Using Scoping434262 +Node: Buffer-Local Variables435784 +Node: Intro to Buffer-Local436620 +Node: Creating Buffer-Local439163 +Node: Default Value445062 +Node: Variable Aliases448205 +Node: Functions450056 +Node: What Is a Function451150 +Node: Lambda Expressions455196 +Node: Lambda Components456106 +Node: Simple Lambda457938 +Node: Argument List459595 +Node: Function Documentation463323 +Node: Function Names465265 +Node: Defining Functions467838 +Node: Calling Functions470878 +Node: Mapping Functions474726 +Node: Anonymous Functions477414 +Node: Function Cells480659 +Node: Inline Functions485477 +Node: Related Topics487287 +Node: Macros488340 +Node: Simple Macro489624 +Node: Expansion490359 +Node: Compiling Macros493363 +Node: Defining Macros495199 +Node: Backquote496516 +Node: Problems with Macros498913 +Node: Argument Evaluation499608 +Node: Surprising Local Vars502523 +Node: Eval During Expansion504591 +Node: Repeated Expansion506284 +Node: Customization508200 +Node: Common Keywords508669 +Node: Group Definitions511514 +Node: Variable Definitions513706 +Node: Customization Types518696 +Node: Simple Types520131 +Node: Composite Types522288 +Node: Splicing into Lists526978 +Node: Type Keywords528813 +Node: Loading532333 +Node: How Programs Do Loading534008 +Node: Autoload543134 +Node: Repeated Loading549204 +Node: Named Features551317 +Node: Unloading557747 +Node: Hooks for Loading559903 +Node: Byte Compilation560620 +Node: Speed of Byte-Code562613 +Node: Compilation Functions563820 +Node: Docs and Compilation570477 +Node: Dynamic Loading573130 +Node: Eval During Compile575494 +Node: Compiled-Function Objects576759 +Node: Disassembly581560 +Node: Different Behavior588841 +Node: Debugging590186 +Node: Debugger591598 +Node: Error Debugging592743 +Node: Infinite Loops595496 +Node: Function Debugging596740 +Node: Explicit Debug599540 +Node: Using Debugger600311 +Node: Debugger Commands602173 +Node: Invoking the Debugger606490 +Node: Internals of Debugger610405 +Node: Syntax Errors615292 +Node: Excess Open616540 +Node: Excess Close618415 +Node: Compilation Errors619836 +Node: Edebug621124 +Node: Using Edebug623232 +Node: Instrumenting625929 +Node: Edebug Execution Modes629418 +Node: Jumping632528 +Node: Edebug Misc634871 +Node: Breakpoints636260 +Node: Global Break Condition639066 +Node: Embedded Breakpoints640021 +Node: Trapping Errors640976 +Node: Edebug Views643052 +Node: Edebug Eval645017 +Node: Eval List646194 +Node: Reading in Edebug649579 +Node: Printing in Edebug650378 +Node: Tracing652093 +Node: Coverage Testing653981 +Node: The Outside Context656022 +Node: Checking Whether to Stop656971 +Node: Edebug Display Update657618 +Node: Edebug Recursive Edit659641 +Node: Instrumenting Macro Calls661296 +Node: Specification List663778 +Node: Backtracking673189 +Node: Debugging Backquote675127 +Node: Specification Examples678833 +Node: Edebug Options680900 +Node: Read and Print686239 +Node: Streams Intro687216 +Node: Input Streams689234 +Node: Input Functions694135 +Node: Output Streams696195 +Node: Output Functions700246 +Node: Output Variables704546 +Node: Minibuffers709347 +Node: Intro to Minibuffers710499 +Node: Text from Minibuffer712687 +Node: Object from Minibuffer717781 +Node: Minibuffer History721874 +Node: Completion724853 +Node: Basic Completion726828 +Node: Minibuffer Completion731711 +Node: Completion Commands735288 +Node: High-Level Completion739945 +Node: Reading File Names744694 +Node: Programmed Completion748386 +Node: Yes-or-No Queries750768 +Node: Multiple Queries756505 +Node: Reading a Password760572 +Node: Minibuffer Misc761915 +Node: Command Loop766795 +Node: Command Overview768139 +Node: Defining Commands771417 +Node: Using Interactive772165 +Node: Interactive Codes776938 +Node: Interactive Examples782730 +Node: Interactive Call784044 +Node: Command Loop Info789459 +Node: Events794438 +Node: Event Types795899 +Node: Event Contents797822 +Node: Event Predicates802298 +Node: Accessing Mouse Event Positions803616 +Node: Frame-Level Event Position Info804315 +Node: Window-Level Event Position Info805355 +Node: Event Text Position Info807119 +Node: Event Glyph Position Info809611 +Node: Event Toolbar Position Info810934 +Node: Other Event Position Info811605 +Node: Accessing Other Event Info812014 +Node: Working With Events813634 +Node: Converting Events819635 +Node: Reading Input823034 +Node: Key Sequence Input824036 +Node: Reading One Event826671 +Node: Dispatching an Event829495 +Node: Quoted Character Input829946 +Node: Peeking and Discarding831294 +Node: Waiting835198 +Node: Quitting837512 +Node: Prefix Command Arguments841920 +Node: Recursive Editing847007 +Node: Disabling Commands851802 +Node: Command History853870 +Node: Keyboard Macros855607 +Node: Keymaps857824 +Node: Keymap Terminology859401 +Node: Format of Keymaps862330 +Node: Creating Keymaps862741 +Node: Inheritance and Keymaps864821 +Node: Key Sequences867193 +Node: Prefix Keys871989 +Node: Active Keymaps875574 +Node: Key Lookup884945 +Node: Functions for Key Lookup890108 +Node: Changing Key Bindings895809 +Node: Key Binding Commands902971 +Node: Scanning Keymaps905036 +Node: Other Keymap Functions913605 +Node: Menus914227 +Node: Menu Format914819 +Node: Menubar Format923465 +Node: Menubar924090 +Node: Modifying Menus927203 +Node: Menu Filters932547 +Node: Pop-Up Menus934443 +Node: Menu Accelerators936771 +Node: Creating Menu Accelerators937527 +Node: Keyboard Menu Traversal938887 +Node: Menu Accelerator Functions939614 +Node: Buffers Menu942690 +Node: Dialog Boxes943984 +Node: Dialog Box Format944151 +Node: Dialog Box Functions945576 +Node: Toolbar945973 +Node: Toolbar Intro946408 +Node: Creating Toolbar948808 +Node: Toolbar Descriptor Format949725 +Node: Specifying the Toolbar954222 +Node: Other Toolbar Variables957829 +Node: Gutter962257 +Node: Gutter Intro962846 +Node: Creating Gutter964849 +Node: Gutter Descriptor Format967736 +Node: Specifying a Gutter972193 +Node: Other Gutter Variables975728 +Node: Common Gutter Widgets980115 +Node: Buffer Tabs981107 +Node: Progress Bars981248 +Node: Scrollbars981393 +Node: Drag and Drop981528 +Node: Supported Protocols982604 +Node: OffiX DND983107 +Node: CDE dt984114 +Node: MSWindows OLE984705 +Node: Loose ends984876 +Node: Drop Interface985268 +Node: Drag Interface986290 +Node: Modes986464 +Node: Major Modes987415 +Node: Major Mode Conventions990330 +Node: Example Major Modes996285 +Node: Auto Major Mode1004318 +Node: Mode Help1011768 +Node: Derived Modes1012869 +Node: Minor Modes1015060 +Node: Minor Mode Conventions1016362 +Node: Keymaps and Minor Modes1019225 +Node: Modeline Format1020060 +Node: Modeline Data1021828 +Node: Modeline Variables1026981 +Node: %-Constructs1031697 +Node: Hooks1034684 +Node: Documentation1041444 +Node: Documentation Basics1042867 +Node: Accessing Documentation1045918 +Node: Keys in Documentation1052199 +Node: Describing Characters1055682 +Node: Help Functions1058031 +Node: Obsoleteness1064481 +Node: Files1067473 +Node: Visiting Files1069398 +Node: Visiting Functions1070903 +Node: Subroutines of Visiting1076061 +Node: Saving Buffers1078134 +Node: Reading from Files1084227 +Node: Writing to Files1086388 +Node: File Locks1089105 +Node: Information about Files1092172 +Node: Testing Accessibility1092933 +Node: Kinds of Files1096673 +Node: Truenames1098354 +Node: File Attributes1099356 +Node: Changing File Attributes1104495 +Node: File Names1109917 +Node: File Name Components1111490 +Node: Directory Names1113935 +Node: Relative File Names1117165 +Node: File Name Expansion1118135 +Node: Unique File Names1121889 +Node: File Name Completion1123504 +Node: User Name Completion1126772 +Node: Contents of Directories1128179 +Node: Create/Delete Dirs1131492 +Node: Magic File Names1132598 +Node: Partial Files1138246 +Node: Intro to Partial Files1138474 +Node: Creating a Partial File1139714 +Node: Detached Partial Files1140650 +Node: Format Conversion1141772 +Node: Files and MS-DOS1147270 +Node: Backups and Auto-Saving1149334 +Node: Backup Files1150009 +Node: Making Backups1151406 +Node: Rename or Copy1154155 +Node: Numbered Backups1156648 +Node: Backup Names1158883 +Node: Auto-Saving1162175 +Node: Reverting1170337 +Node: Buffers1173673 +Node: Buffer Basics1175089 +Node: Current Buffer1177142 +Node: Buffer Names1181846 +Node: Buffer File Name1185053 +Node: Buffer Modification1189172 +Node: Modification Time1191415 +Node: Read Only Buffers1194790 +Node: The Buffer List1198029 +Node: Creating Buffers1202846 +Node: Killing Buffers1204992 +Node: Indirect Buffers1208824 +Node: Windows1211398 +Node: Basic Windows1212876 +Node: Splitting Windows1215974 +Node: Deleting Windows1221300 +Node: Selecting Windows1225218 +Node: Cyclic Window Ordering1229441 +Node: Buffers and Windows1234596 +Node: Displaying Buffers1236374 +Node: Choosing Window1241713 +Node: Window Point1249631 +Node: Window Start1251701 +Node: Vertical Scrolling1256500 +Node: Horizontal Scrolling1262698 +Node: Size of Window1266227 +Node: Position of Window1270945 +Node: Resizing Windows1273198 +Node: Window Configurations1278636 +Node: Frames1282133 +Node: Creating Frames1284474 +Node: Frame Properties1285814 +Node: Property Access1286630 +Node: Initial Properties1287537 +Node: X Frame Properties1290023 +Node: Size and Position1294657 +Node: Frame Name1296655 +Node: Frame Titles1297569 +Node: Deleting Frames1299393 +Node: Finding All Frames1300368 +Node: Frames and Windows1303596 +Node: Minibuffers and Frames1306378 +Node: Input Focus1307296 +Node: Visibility of Frames1310401 +Node: Raising and Lowering1312391 +Node: Frame Configurations1314767 +Node: Frame Hooks1315824 +Node: Consoles and Devices1317629 +Node: Basic Console Functions1320372 +Node: Basic Device Functions1320795 +Node: Console Types and Device Classes1321641 +Node: Connecting to a Console or Device1323908 +Node: The Selected Console and Device1326092 +Node: Console and Device I/O1327118 +Node: Positions1327882 +Node: Point1328851 +Node: Motion1331941 +Node: Character Motion1332708 +Node: Word Motion1334945 +Node: Buffer End Motion1336335 +Node: Text Lines1337872 +Node: Screen Lines1342773 +Node: List Motion1346836 +Node: Skipping Characters1350319 +Node: Excursions1352538 +Node: Narrowing1355578 +Node: Markers1360909 +Node: Overview of Markers1361815 +Node: Predicates on Markers1366507 +Node: Creating Markers1367753 +Node: Information from Markers1371953 +Node: Changing Markers1373051 +Node: The Mark1374579 +Node: The Region1383082 +Node: Text1388768 +Node: Near Point1391467 +Node: Buffer Contents1395654 +Node: Comparing Text1397060 +Node: Insertion1398468 +Node: Commands for Insertion1402378 +Node: Deletion1405272 +Node: User-Level Deletion1408922 +Node: The Kill Ring1413082 +Node: Kill Ring Concepts1415256 +Node: Kill Functions1416310 +Node: Yank Commands1418233 +Node: Low-Level Kill Ring1420104 +Node: Internals of Kill Ring1423190 +Node: Undo1425970 +Node: Maintaining Undo1430307 +Node: Filling1432925 +Node: Margins1438919 +Node: Auto Filling1442942 +Node: Sorting1444123 +Node: Columns1453437 +Node: Indentation1456518 +Node: Primitive Indent1457297 +Node: Mode-Specific Indent1458622 +Node: Region Indent1461154 +Node: Relative Indent1464101 +Node: Indent Tabs1466483 +Node: Motion by Indent1467804 +Node: Case Changes1468583 +Node: Text Properties1471936 +Node: Examining Properties1473749 +Node: Changing Properties1475632 +Node: Property Search1479223 +Node: Special Properties1483942 +Node: Saving Properties1484223 +Node: Substitution1487365 +Node: Registers1490635 +Node: Transposition1493218 +Node: Change Hooks1494112 +Node: Transformations1496152 +Node: Searching and Matching1501256 +Node: String Search1502387 +Node: Regular Expressions1507368 +Node: Syntax of Regexps1508735 +Node: Regexp Example1523338 +Node: Regexp Search1525508 +Node: POSIX Regexps1531845 +Node: Search and Replace1533922 +Node: Match Data1537287 +Node: Simple Match Data1538417 +Node: Replacing Match1542682 +Node: Entire Match Data1545363 +Node: Saving Match Data1547601 +Node: Searching and Case1548989 +Node: Standard Regexps1551023 +Node: Syntax Tables1553221 +Node: Syntax Basics1554335 +Node: Syntax Descriptors1557307 +Node: Syntax Class Table1559157 +Node: Syntax Flags1565195 +Node: Syntax Table Functions1568412 +Node: Motion and Syntax1572700 +Node: Parsing Expressions1574152 +Node: Standard Syntax Tables1580250 +Node: Syntax Table Internals1581094 +Node: Abbrevs1582120 +Node: Abbrev Mode1583924 +Node: Abbrev Tables1584644 +Node: Defining Abbrevs1586183 +Node: Abbrev Files1588104 +Node: Abbrev Expansion1589887 +Node: Standard Abbrev Tables1594518 +Node: Extents1595677 +Node: Intro to Extents1596920 +Node: Creating and Modifying Extents1600912 +Node: Extent Endpoints1602493 +Node: Finding Extents1605756 +Node: Mapping Over Extents1609878 +Node: Extent Properties1616001 +Node: Detached Extents1626162 +Node: Extent Parents1628021 +Node: Duplicable Extents1629715 +Node: Extents and Events1632936 +Node: Atomic Extents1634843 +Node: Specifiers1635290 +Node: Introduction to Specifiers1637403 +Node: Specifiers In-Depth1639713 +Node: Specifier Instancing1644625 +Node: Specifier Types1647887 +Node: Adding Specifications1652961 +Node: Retrieving Specifications1662382 +Node: Specifier Tag Functions1666127 +Node: Specifier Instancing Functions1669361 +Node: Specifier Example1672768 +Node: Creating Specifiers1675924 +Node: Specifier Validation Functions1680241 +Node: Other Specification Functions1682627 +Node: Faces and Window-System Objects1686448 +Node: Faces1686772 +Node: Merging Faces1688389 +Node: Basic Face Functions1690350 +Node: Face Properties1692498 +Node: Face Convenience Functions1702771 +Node: Other Face Display Functions1705991 +Node: Fonts1706803 +Node: Font Specifiers1707504 +Node: Font Instances1708689 +Node: Font Instance Names1709656 +Node: Font Instance Size1710497 +Node: Font Instance Characteristics1711783 +Node: Font Convenience Functions1712961 +Node: Colors1714251 +Node: Color Specifiers1714691 +Node: Color Instances1717051 +Node: Color Instance Properties1717795 +Node: Color Convenience Functions1718421 +Node: Glyphs1719474 +Node: Glyph Functions1721075 +Node: Creating Glyphs1721482 +Node: Glyph Properties1734122 +Node: Glyph Convenience Functions1743289 +Node: Glyph Dimensions1747236 +Node: Images1748316 +Node: Image Specifiers1748765 +Node: Image Instantiator Conversion1764256 +Node: Image Instances1765621 +Node: Image Instance Types1766372 +Node: Image Instance Functions1769137 +Node: Glyph Types1776194 +Node: Mouse Pointer1777966 +Node: Redisplay Glyphs1780969 +Node: Subwindows1782002 +Node: Annotations1782245 +Node: Annotation Basics1783261 +Node: Annotation Primitives1787199 +Node: Annotation Properties1788538 +Node: Locating Annotations1791578 +Node: Margin Primitives1792415 +Node: Annotation Hooks1794309 +Node: Display1794969 +Node: Refresh Screen1795947 +Node: Truncation1798141 +Node: The Echo Area1800666 +Node: Warnings1807109 +Node: Invisible Text1811545 +Node: Selective Display1814124 +Node: Overlay Arrow1818250 +Node: Temporary Displays1819603 +Node: Blinking1823724 +Node: Usual Display1825908 +Node: Display Tables1828457 +Node: Display Table Format1829261 +Node: Active Display Table1830703 +Node: Character Descriptors1834698 +Node: Beeping1835455 +Node: Hash Tables1840221 +Node: Introduction to Hash Tables1840829 +Node: Working With Hash Tables1847388 +Node: Weak Hash Tables1848505 +Node: Range Tables1850522 +Node: Introduction to Range Tables1851211 +Node: Working With Range Tables1851657 +Node: Databases1852616 +Node: Connecting to a Database1852915 +Node: Working With a Database1854022 +Node: Other Database Functions1854896 +Node: Processes1855465 +Node: Subprocess Creation1857689 +Node: Synchronous Processes1861140 +Node: MS-DOS Subprocesses1867862 +Node: Asynchronous Processes1868936 +Node: Deleting Processes1873293 +Node: Process Information1875164 +Node: Input to Processes1879256 +Node: Signals to Processes1881951 +Node: Output from Processes1886766 +Node: Process Buffers1887578 +Node: Filter Functions1890457 +Node: Accepting Output1896048 +Node: Sentinels1897575 +Node: Process Window Size1901065 +Node: Transaction Queues1901414 +Node: Network1903112 +Node: System Interface1905746 +Node: Starting Up1907016 +Node: Start-up Summary1907610 +Node: Init File1911164 +Node: Terminal-Specific1913545 +Node: Command Line Arguments1916704 +Node: Getting Out1920193 +Node: Killing XEmacs1920762 +Node: Suspending XEmacs1922430 +Node: System Environment1925809 +Node: User Identification1931990 +Node: Time of Day1935519 +Node: Time Conversion1938306 +Node: Timers1943548 +Node: Terminal Input1945721 +Node: Input Modes1946224 +Node: Translating Input1948683 +Node: Recording Input1952848 +Node: Terminal Output1954948 +Node: Flow Control1958569 +Node: Batch Mode1962531 +Node: X-Windows1963913 +Node: X Selections1964784 +Node: X Server1967535 +Node: Resources1967986 +Node: Server Data1973297 +Node: Grabs1974504 +Node: X Miscellaneous1976084 +Node: ToolTalk Support1978469 +Node: XEmacs ToolTalk API Summary1978686 +Node: Sending Messages1979986 +Node: Example of Sending Messages1980237 +Node: Elisp Interface for Sending Messages1981299 +Node: Receiving Messages1987895 +Node: Example of Receiving Messages1988118 +Node: Elisp Interface for Receiving Messages1988954 +Node: LDAP Support1992811 +Node: Building XEmacs with LDAP support1993305 +Node: XEmacs LDAP API1994282 +Node: LDAP Variables1995334 +Node: The High-Level LDAP API1997934 +Node: The Low-Level LDAP API2001407 +Node: The LDAP Lisp Object2002238 +Node: Opening and Closing a LDAP Connection2002793 +Node: Low-level Operations on a LDAP Server2004599 +Node: LDAP Internationalization2007323 +Node: LDAP Internationalization Variables2008228 +Node: Encoder/Decoder Functions2009959 +Node: Syntax of Search Filters2010996 +Node: PostgreSQL Support2012294 +Node: Building XEmacs with PostgreSQL support2012689 +Node: XEmacs PostgreSQL libpq API2014036 +Node: libpq Lisp Variables2015915 +Node: libpq Lisp Symbols and DataTypes2018879 +Node: Synchronous Interface Functions2032119 +Node: Asynchronous Interface Functions2036610 +Node: Large Object Support2040115 +Node: Other libpq Functions2040742 +Node: Unimplemented libpq Functions2043777 +Node: XEmacs PostgreSQL libpq Examples2049096 +Node: Internationalization2055187 +Node: I18N Levels 1 and 22055530 +Node: I18N Level 32056236 +Node: Level 3 Basics2056517 +Node: Level 3 Primitives2057350 +Node: Dynamic Messaging2058956 +Node: Domain Specification2059419 +Node: Documentation String Extraction2061089 +Node: I18N Level 42062007 +Node: MULE2062199 +Node: Internationalization Terminology2063248 +Node: Charsets2075447 +Node: Charset Properties2076143 +Node: Basic Charset Functions2080858 +Node: Charset Property Functions2083039 +Node: Predefined Charsets2085109 +Node: MULE Characters2088029 +Node: Composite Characters2088904 +Node: Coding Systems2090171 +Node: Coding System Types2092311 +Node: ISO 20222096295 +Node: EOL Conversion2108570 +Node: Coding System Properties2109742 +Node: Basic Coding System Functions2114065 +Node: Coding System Property Functions2116099 +Node: Encoding and Decoding Text2116657 +Node: Detection of Textual Encoding2117793 +Node: Big5 and Shift-JIS Functions2119329 +Node: Predefined Coding Systems2120481 +Node: CCL2132575 +Node: CCL Syntax2135679 +Node: CCL Statements2137255 +Node: CCL Expressions2141903 +Node: Calling CCL2144442 +Node: CCL Examples2147447 +Node: Category Tables2147584 +Node: Tips2149943 +Node: Style Tips2150584 +Node: Compilation Tips2160103 +Node: Documentation Tips2162017 +Node: Comment Tips2167526 +Node: Library Headers2170529 +Node: Building XEmacs and Object Allocation2174501 +Node: Building XEmacs2175384 +Node: Pure Storage2181962 +Node: Garbage Collection2184750 +Node: Standard Errors2195593 +Node: Standard Buffer-Local Variables2199802 +Node: Standard Keymaps2202437 +Node: Standard Hooks2206171 +Node: Index2213671  End Tag Table diff --git a/info/lispref.info-1 b/info/lispref.info-1 index a440030..2af9170 100644 --- a/info/lispref.info-1 +++ b/info/lispref.info-1 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-10 b/info/lispref.info-10 index 536420b..1cbc307 100644 --- a/info/lispref.info-10 +++ b/info/lispref.info-10 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-11 b/info/lispref.info-11 index d276a20..5bd9c89 100644 --- a/info/lispref.info-11 +++ b/info/lispref.info-11 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-12 b/info/lispref.info-12 index f32c4f5..48b8dad 100644 --- a/info/lispref.info-12 +++ b/info/lispref.info-12 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-13 b/info/lispref.info-13 index 3cf322d..1c6cc73 100644 --- a/info/lispref.info-13 +++ b/info/lispref.info-13 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-14 b/info/lispref.info-14 index 40329bc..ea2daa4 100644 --- a/info/lispref.info-14 +++ b/info/lispref.info-14 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-15 b/info/lispref.info-15 index 340e0ea..e884cbd 100644 --- a/info/lispref.info-15 +++ b/info/lispref.info-15 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-16 b/info/lispref.info-16 index f7987c8..6f8c37e 100644 --- a/info/lispref.info-16 +++ b/info/lispref.info-16 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-17 b/info/lispref.info-17 index d3a35b9..06725a1 100644 --- a/info/lispref.info-17 +++ b/info/lispref.info-17 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-18 b/info/lispref.info-18 index 79b603d..229eec8 100644 --- a/info/lispref.info-18 +++ b/info/lispref.info-18 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-19 b/info/lispref.info-19 index 58f7d19..a54ad34 100644 --- a/info/lispref.info-19 +++ b/info/lispref.info-19 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-2 b/info/lispref.info-2 index 9d40b0e..a3c79d2 100644 --- a/info/lispref.info-2 +++ b/info/lispref.info-2 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor @@ -56,7 +56,6 @@ GNU GENERAL PUBLIC LICENSE ************************** Version 2, June 1991 - Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA @@ -115,7 +114,6 @@ patent must be licensed for everyone's free use or not licensed at all. modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - 0. This License 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 "Program", diff --git a/info/lispref.info-20 b/info/lispref.info-20 index 3dbc967..a198451 100644 --- a/info/lispref.info-20 +++ b/info/lispref.info-20 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-21 b/info/lispref.info-21 index 6378b5c..b1e4ad2 100644 --- a/info/lispref.info-21 +++ b/info/lispref.info-21 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-22 b/info/lispref.info-22 index 6d897d5..0091dd9 100644 --- a/info/lispref.info-22 +++ b/info/lispref.info-22 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-23 b/info/lispref.info-23 index fa5cce6..67be103 100644 --- a/info/lispref.info-23 +++ b/info/lispref.info-23 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-24 b/info/lispref.info-24 index a777571..d71e227 100644 --- a/info/lispref.info-24 +++ b/info/lispref.info-24 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-25 b/info/lispref.info-25 index 60bd85c..0283377 100644 --- a/info/lispref.info-25 +++ b/info/lispref.info-25 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-26 b/info/lispref.info-26 index f5f7bde..9671984 100644 --- a/info/lispref.info-26 +++ b/info/lispref.info-26 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-27 b/info/lispref.info-27 index 2c69bce..a6cd049 100644 --- a/info/lispref.info-27 +++ b/info/lispref.info-27 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-28 b/info/lispref.info-28 index 811de90..88a5f6d 100644 --- a/info/lispref.info-28 +++ b/info/lispref.info-28 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-29 b/info/lispref.info-29 index e0e0b52..9e728eb 100644 --- a/info/lispref.info-29 +++ b/info/lispref.info-29 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-3 b/info/lispref.info-3 index 837bb60..63ed45f 100644 --- a/info/lispref.info-3 +++ b/info/lispref.info-3 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-30 b/info/lispref.info-30 index fbaa5f6..304d0e2 100644 --- a/info/lispref.info-30 +++ b/info/lispref.info-30 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-31 b/info/lispref.info-31 index e1a79f9..ca94d67 100644 --- a/info/lispref.info-31 +++ b/info/lispref.info-31 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-32 b/info/lispref.info-32 index 0a55015..9f85710 100644 --- a/info/lispref.info-32 +++ b/info/lispref.info-32 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-33 b/info/lispref.info-33 index 20ec664..ddf4719 100644 --- a/info/lispref.info-33 +++ b/info/lispref.info-33 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-34 b/info/lispref.info-34 index aec041b..b4b7026 100644 --- a/info/lispref.info-34 +++ b/info/lispref.info-34 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor @@ -958,7 +958,7 @@ strings, so that kill, yank, and undo commands will restore or copy it. * When a string is created using `buffer-substring' or `buffer-string', any duplicable extents in the region corresponding to the string will be copied into the string (*note Buffer - Contents::). When the string in inserted into a buffer using + Contents::). When the string is inserted into a buffer using `insert', `insert-before-markers', `insert-buffer' or `insert-buffer-substring', the extents in the string will be copied back into the buffer (*note Insertion::). The extents in a string diff --git a/info/lispref.info-35 b/info/lispref.info-35 index 7b1e8fa..caf9fac 100644 --- a/info/lispref.info-35 +++ b/info/lispref.info-35 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-36 b/info/lispref.info-36 index f80845e..a8f035c 100644 --- a/info/lispref.info-36 +++ b/info/lispref.info-36 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-37 b/info/lispref.info-37 index 1ba7a7d..d88e058 100644 --- a/info/lispref.info-37 +++ b/info/lispref.info-37 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-38 b/info/lispref.info-38 index b0dade8..e8bb726 100644 --- a/info/lispref.info-38 +++ b/info/lispref.info-38 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-39 b/info/lispref.info-39 index 892739d..89f09ed 100644 --- a/info/lispref.info-39 +++ b/info/lispref.info-39 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-4 b/info/lispref.info-4 index 5f78301..1bd9455 100644 --- a/info/lispref.info-4 +++ b/info/lispref.info-4 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-40 b/info/lispref.info-40 index ea7b5d9..130bece 100644 --- a/info/lispref.info-40 +++ b/info/lispref.info-40 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-41 b/info/lispref.info-41 index 62e99b6..db6a20f 100644 --- a/info/lispref.info-41 +++ b/info/lispref.info-41 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-42 b/info/lispref.info-42 index 5bebd1f..615cb1f 100644 --- a/info/lispref.info-42 +++ b/info/lispref.info-42 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-43 b/info/lispref.info-43 index 18337d7..06f9633 100644 --- a/info/lispref.info-43 +++ b/info/lispref.info-43 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-44 b/info/lispref.info-44 index e1ddc4f..fc9d763 100644 --- a/info/lispref.info-44 +++ b/info/lispref.info-44 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-45 b/info/lispref.info-45 index e4484ee..ae2a3a5 100644 --- a/info/lispref.info-45 +++ b/info/lispref.info-45 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-46 b/info/lispref.info-46 index a94d72b..49474f7 100644 --- a/info/lispref.info-46 +++ b/info/lispref.info-46 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-47 b/info/lispref.info-47 index 524e88d..93d0779 100644 --- a/info/lispref.info-47 +++ b/info/lispref.info-47 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-48 b/info/lispref.info-48 index 9a7209c..6206a68 100644 --- a/info/lispref.info-48 +++ b/info/lispref.info-48 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-5 b/info/lispref.info-5 index 95a8a55..3e7fa59 100644 --- a/info/lispref.info-5 +++ b/info/lispref.info-5 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-6 b/info/lispref.info-6 index 4273b1d..ae14b2b 100644 --- a/info/lispref.info-6 +++ b/info/lispref.info-6 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-7 b/info/lispref.info-7 index 15f63b7..fb875ac 100644 --- a/info/lispref.info-7 +++ b/info/lispref.info-7 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-8 b/info/lispref.info-8 index 333739c..ffb4b2c 100644 --- a/info/lispref.info-8 +++ b/info/lispref.info-8 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/info/lispref.info-9 b/info/lispref.info-9 index a0554c4..12050f5 100644 --- a/info/lispref.info-9 +++ b/info/lispref.info-9 @@ -1,4 +1,4 @@ -This is ../info/lispref.info, produced by makeinfo version 4.0 from +This is ../info/lispref.info, produced by makeinfo version 4.0b from lispref/lispref.texi. INFO-DIR-SECTION XEmacs Editor diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index ca78666..9b88cc1 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,16 @@ +2001-01-26 Martin Buchholz + + * XEmacs 21.2.43 "Terspichore" is released. + +2001-01-23 Jan Vroonhof + + * gnuserv.c: Add version number to object file. + +2001-01-20 Klaus Frank + + * gnuserv.c (permitted): Completed the checks of the authentication + data length, replaced memcmp() by constant-time comparision. + 2001-01-20 Martin Buchholz * XEmacs 21.2.42 "Poseidon" is released. diff --git a/lib-src/gnuclient.c b/lib-src/gnuclient.c index 58588f6..9901186 100644 --- a/lib-src/gnuclient.c +++ b/lib-src/gnuclient.c @@ -48,12 +48,10 @@ Boston, MA 02111-1307, USA. * ../etc/gnuserv.README relative to the directory containing this file) */ -#if 0 -/* Hand-munged RCS header */ -static char rcsid [] = "!Header: gnuclient.c,v 2.2 95/12/12 01:39:21 wing nene !"; -#endif - #include "gnuserv.h" + +char gnuserv_version[] = "gnuclient version " GNUSERV_VERSION; + #include "getopt.h" #include diff --git a/lib-src/gnuserv.c b/lib-src/gnuserv.c index 419baa8..b90443d 100644 --- a/lib-src/gnuserv.c +++ b/lib-src/gnuserv.c @@ -29,12 +29,11 @@ * ../etc/gnuserv.README relative to the directory containing this file) */ -#if 0 -static char rcsid [] = "!Header: gnuserv.c,v 2.1 95/02/16 11:58:27 arup alpha !"; -#endif - #include "gnuserv.h" +char gnuserv_version[] = "gnuserv version" GNUSERV_VERSION; + + #ifdef USE_LITOUT #ifdef linux #include @@ -459,6 +458,8 @@ permitted (u_long host_addr, int fd) char auth_protocol[128]; char buf[1024]; int auth_data_len; + int auth_data_pos; + int auth_mismatches; if (fd > 0) { @@ -491,15 +492,34 @@ permitted (u_long host_addr, int fd) auth_data_len = atoi(buf); + if (auth_data_len <= 0 || auth_data_len > sizeof(buf)) + { + return FALSE; + } + if (timed_read(fd, buf, auth_data_len, AUTH_TIMEOUT, 0) != auth_data_len) return FALSE; #ifdef AUTH_MAGIC_COOKIE - if (server_xauth && server_xauth->data && - !memcmp(buf, server_xauth->data, auth_data_len)) - { + if (server_xauth && server_xauth->data) + { + /* Do a compare without comprising info about + the size of the cookie */ + auth_mismatches = + ( auth_data_len ^ + server_xauth->data_length ); + + for(auth_data_pos=0; auth_data_pos < auth_data_len; ++auth_data_pos) + auth_mismatches |= + ( buf[auth_data_pos] ^ + server_xauth->data[auth_data_pos % server_xauth->data_length]); + + if (auth_mismatches == 0) return TRUE; - } + + for(;rand() % 1000;); + } + #else printf ("client tried Xauth, but server is not compiled with Xauth\n"); #endif diff --git a/lib-src/gnuserv.h b/lib-src/gnuserv.h index d9298c8..05eed4a 100644 --- a/lib-src/gnuserv.h +++ b/lib-src/gnuserv.h @@ -30,9 +30,7 @@ * ../etc/gnuserv.README relative to the directory containing this file) */ -#if 0 -static char header_rcsid [] = "!Header: gnuserv.h,v 2.4 95/02/16 11:58:11 arup alpha !"; -#endif +#define GNUSERV_VERSION "3.12" #define USE_TMPDIR diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 95cd5b7..0bb651c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -557,6 +557,15 @@ * files.el (insert-file-contents-literally): Treat file as binary; call file-name-handlers. [sync with Emacs 20.3.10] +2001-01-26 Martin Buchholz + + * XEmacs 21.2.43 "Terspichore" is released. + +2001-01-20 Klaus Frank + + * gnuserv.el (gnuserv-process-filter): Robuster handling of error + messages from gnuserv. + 2001-01-20 Martin Buchholz * XEmacs 21.2.42 "Poseidon" is released. diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index b6317b3..b27db59 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -304,7 +304,8 @@ Return a list suitable for use in `interactive'." obarray (lambda (symbol) (and (boundp symbol) (or (get symbol 'custom-type) - (user-variable-p symbol)))) t)) + (user-variable-p symbol)))) + t nil nil (and v (symbol-name v)))) (list (if (equal val "") (if (symbolp v) v nil) (intern val))))) diff --git a/lisp/gnuserv.el b/lisp/gnuserv.el index 04bf42a..01128a9 100644 --- a/lisp/gnuserv.el +++ b/lisp/gnuserv.el @@ -1,7 +1,7 @@ ;;; gnuserv.el --- Lisp interface code between Emacs and gnuserv ;; Copyright (C) 1989-1997 Free Software Foundation, Inc. -;; Version: 3.11 +;; Version: 3.12 ;; Author: Andy Norman (ange@hplb.hpl.hp.com), originally based on server.el ;; Hrvoje Niksic ;; Maintainer: Jan Vroonhof , @@ -337,8 +337,8 @@ visual screen. Totally visible frames are preferred. If none found, return nil "Process gnuserv client requests to execute Emacs commands." (setq gnuserv-string (concat gnuserv-string string)) ;; C-d means end of request. - (when (string-match "\C-d\\'" gnuserv-string) - (cond ((string-match "^[0-9]+" gnuserv-string) ; client request id + (when (string-match "\C-d\n?\\'" gnuserv-string) + (cond ((string-match "\\`[0-9]+" gnuserv-string) ; client request id (let ((header (read-from-string gnuserv-string))) ;; Set the client we are talking to. (setq gnuserv-current-client (car header)) @@ -359,8 +359,9 @@ visual screen. Totally visible frames are preferred. If none found, return nil (signal 'quit nil))) (setq gnuserv-string ""))) (t - (error "%s: invalid response from gnuserv" gnuserv-string) - (setq gnuserv-string ""))))) + (let ((response (car (split-string gnuserv-string "\C-d")))) + (setq gnuserv-string "") + (error "%s: invalid response from gnuserv" response)))))) ;; This function is somewhat of a misnomer. Actually, we write to the ;; server (using `process-send-string' to gnuserv-process), which diff --git a/lisp/help.el b/lisp/help.el index b07aa17..a337b13 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -254,7 +254,7 @@ otherwise it is killed." ;; This is a grody hack of the same genotype as `advertised-undo'; if the ;; bindings of Backspace and C-h are the same, we want the menubar to claim -;; that `info' in invoked with `C-h i', not `BS i'. +;; that `info' is invoked with `C-h i', not `BS i'. (defun deprecated-help-command () (interactive) @@ -1517,7 +1517,8 @@ If INSERT (the prefix arg) is non-nil, insert the message in the buffer." val) (setq val (read-command (if fn (format "Where is command (default %s): " fn) - "Where is command: "))) + "Where is command: ") + (and fn (symbol-name fn)))) (list (if (equal (symbol-name val) "") fn val) current-prefix-arg))) diff --git a/lisp/info.el b/lisp/info.el index 3186cdb..be66af1 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -2430,7 +2430,8 @@ This command is designed to be used whether you are already in Info or not." (if fn (format " (default %s)" fn) "")) - obarray 'fboundp t)) + obarray 'fboundp t + nil nil (and fn (symbol-name fn)))) (list (if (equal val "") fn (intern val))))) (save-window-excursion diff --git a/lisp/replace.el b/lisp/replace.el index ec2ce62..fc5a02c 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -416,7 +416,8 @@ It serves as a menu to find any of the occurrences in this buffer. ;; rewritten for I18N3 snarfing (read-from-minibuffer (format "List lines matching regexp (default `%s'): " - default) nil nil nil 'regexp-history) + default) nil nil nil 'regexp-history nil + default) (read-from-minibuffer "List lines matching regexp: " nil nil nil diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog index 0d982b7..d81bceb 100644 --- a/lwlib/ChangeLog +++ b/lwlib/ChangeLog @@ -1,3 +1,7 @@ +2001-01-26 Martin Buchholz + + * XEmacs 21.2.43 "Terspichore" is released. + 2001-01-20 Martin Buchholz * XEmacs 21.2.42 "Poseidon" is released. diff --git a/man/ChangeLog b/man/ChangeLog index da16c29..e59e0ef 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,7 @@ +2001-01-26 Martin Buchholz + + * XEmacs 21.2.43 "Terspichore" is released. + 2001-01-20 Martin Buchholz * XEmacs 21.2.42 "Poseidon" is released. diff --git a/man/lispref/extents.texi b/man/lispref/extents.texi index d9c852c..bbe777d 100644 --- a/man/lispref/extents.texi +++ b/man/lispref/extents.texi @@ -832,7 +832,7 @@ Specifically: When a string is created using @code{buffer-substring} or @code{buffer-string}, any duplicable extents in the region corresponding to the string will be copied into the string (@pxref{Buffer -Contents}). When the string in inserted into a buffer using +Contents}). When the string is inserted into a buffer using @code{insert}, @code{insert-before-markers}, @code{insert-buffer} or @code{insert-buffer-substring}, the extents in the string will be copied back into the buffer (@pxref{Insertion}). The extents in a string can, diff --git a/netinstall/ChangeLog b/netinstall/ChangeLog index d9bd985..b8abee8 100644 --- a/netinstall/ChangeLog +++ b/netinstall/ChangeLog @@ -1,3 +1,15 @@ +2001-01-26 Martin Buchholz + + * XEmacs 21.2.43 "Terspichore" is released. + +2001-01-21 Andy Piper + + * Makefile.in.in (%.o): use CXX to compile + + * res.rc: beautify download status and install status. + + * nio-ftp.cc: use xemacs-setup user for identity. + 2001-01-20 Martin Buchholz * XEmacs 21.2.42 "Poseidon" is released. @@ -175,5 +187,5 @@ * all: port from cygwin setup. -%%% $Id: ChangeLog,v 1.1.2.11 2001/01/17 21:54:32 andyp Exp $ -$Revision: 1.1.2.11 $ +%%% $Id: ChangeLog,v 1.1.2.14 2001/01/24 09:22:31 andyp Exp $ +$Revision: 1.1.2.14 $ diff --git a/netinstall/Makefile.in.in b/netinstall/Makefile.in.in index 200fe36..7ea3eb2 100644 --- a/netinstall/Makefile.in.in +++ b/netinstall/Makefile.in.in @@ -176,7 +176,7 @@ version.c : $(srcdir)/ChangeLog Makefile $(CC) $(MINGW_CFLAGS) -c -o $@ ${srcdir}/$< %.o: %.cc - $(CC) $(MINGW_CXXFLAGS) -c -o $@ ${srcdir}/$< + $(CXX) $(MINGW_CXXFLAGS) -c -o $@ ${srcdir}/$< iniparse.c iniparse.h : iniparse.y bison -d -o iniparse.c $(srcdir)/iniparse.y diff --git a/netinstall/nio-ftp.cc b/netinstall/nio-ftp.cc index f30beb6..cd4c3a3 100644 --- a/netinstall/nio-ftp.cc +++ b/netinstall/nio-ftp.cc @@ -73,7 +73,7 @@ NetIO_FTP::NetIO_FTP (char *Purl) code = ftp_line (c); if (code == 331) { - c->printf ("PASS cygwin-setup@\r\n"); + c->printf ("PASS xenacs-setup@\r\n"); code = ftp_line (c); } diff --git a/netinstall/res.rc b/netinstall/res.rc index 2d59534..170aa9d 100644 --- a/netinstall/res.rc +++ b/netinstall/res.rc @@ -142,7 +142,7 @@ BEGIN CONTROL "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62 END -IDD_NET DIALOGEX 0, 0, 311, 201 +IDD_NET DIALOG 0, 0, 311, 201 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "XEmacs Setup" FONT 8, "MS Sans Serif" @@ -174,41 +174,46 @@ BEGIN CONTROL "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62 END -IDD_DLSTATUS DIALOG DISCARDABLE 0, 0, 215, 95 +IDD_DLSTATUS DIALOG DISCARDABLE 0, 0, 311, 201 STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "XEmacs Setup" FONT 8, "MS Sans Serif" BEGIN - PUSHBUTTON "Cancel",IDCANCEL,165,75,45,15 - LTEXT "Downloading...",IDC_STATIC,55,15,135,8 - LTEXT "(URL)",IDC_DLS_URL,55,30,150,8 - LTEXT "(RATE)",IDC_DLS_RATE,55,45,155,8 + PUSHBUTTON "Cancel",IDCANCEL,256,176,45,15 + LTEXT "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP + LTEXT "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP + LTEXT "Downloading Packages",IDC_STATIC,112,10,170,17 + LTEXT "(URL)",IDC_DLS_URL,112,26,170,11 + LTEXT "(RATE)",IDC_DLS_RATE,112,41,166,11 CONTROL "Progress1",IDC_DLS_PROGRESS,"msctls_progress32", - PBS_SMOOTH | WS_BORDER,55,60,155,10 - ICON IDI_XEMACS,IDC_STATIC,5,5,20,20 + WS_BORDER,123,143,165,10 + GROUPBOX "Progress",IDC_STATIC,112,130,186,31 + CONTROL "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62 END -IDD_INSTATUS DIALOG DISCARDABLE 0, 0, 215, 95 +IDD_INSTATUS DIALOG DISCARDABLE 0, 0, 311, 201 STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "XEmacs Setup" FONT 8, "MS Sans Serif" BEGIN - PUSHBUTTON "Cancel",IDCANCEL,165,75,45,15 - LTEXT "Installing...",IDC_INS_ACTION,55,5,135,8 - LTEXT "(PKG)",IDC_INS_PKG,55,15,150,8 - LTEXT "(FILE)",IDC_INS_FILE,55,25,155,8 + PUSHBUTTON "Cancel",IDCANCEL,256,176,45,15 + LTEXT "",IDC_STATIC,10,10,87,151,SS_SUNKEN | NOT WS_GROUP + LTEXT "",IDC_STATIC,10,169,291,1,SS_SUNKEN | NOT WS_GROUP + LTEXT "Installing Packages",IDC_STATIC,112,10,170,17 + LTEXT "(PKG)",IDC_INS_PKG,112,26,170,11 + LTEXT "(FILE)",IDC_INS_FILE,112,41,166,11 CONTROL "Progress1",IDC_INS_DISKFULL,"msctls_progress32", - PBS_SMOOTH | WS_BORDER,55,60,155,10 - ICON IDI_XEMACS,IDC_STATIC,5,5,20,20 + WS_BORDER,123,143,165,10 CONTROL "Progress1",IDC_INS_IPROGRESS,"msctls_progress32", - PBS_SMOOTH | WS_BORDER,55,50,155,10 + WS_BORDER,125,106,163,10 CONTROL "Progress1",IDC_INS_PPROGRESS,"msctls_progress32", - PBS_SMOOTH | WS_BORDER,55,40,155,10 - RTEXT "Package",IDC_STATIC,5,40,45,8 - RTEXT "Total",IDC_STATIC,10,50,40,8 - RTEXT "Disk",IDC_STATIC,5,60,45,8 + WS_BORDER,125,67,163,10 + GROUPBOX "Disk",IDC_STATIC,112,130,186,31 + GROUPBOX "Package",IDC_STATIC,112,54,186,31 + GROUPBOX "Total",IDC_STATIC,112,93,186,31 + CONTROL "GNU",IDC_STATIC,"Static",SS_BITMAP,19,36,69,62 END IDD_PROXY_AUTH DIALOG DISCARDABLE 0, 0, 215, 95 @@ -245,7 +250,7 @@ BEGIN PUSHBUTTON "Cancel",IDCANCEL,165,75,45,15 END -IDD_SPLASH DIALOGEX 0, 0, 311, 201 +IDD_SPLASH DIALOG 0, 0, 311, 201 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "XEmacs Setup" FONT 8, "MS Sans Serif" @@ -394,6 +399,13 @@ BEGIN HORZGUIDE, 153 END + IDD_INSTATUS, DIALOG + BEGIN + VERTGUIDE, 112 + VERTGUIDE, 125 + VERTGUIDE, 288 + END + IDD_PROXY_AUTH, DIALOG BEGIN BOTTOMMARGIN, 49 @@ -437,7 +449,7 @@ IDB_RTARROW BITMAP DISCARDABLE "choose-rtarrow.bmp" IDB_CHECK_YES BITMAP DISCARDABLE "check-yes.bmp" IDB_CHECK_NO BITMAP DISCARDABLE "check-no.bmp" IDB_CHECK_NA BITMAP DISCARDABLE "check-na.bmp" -GNU BITMAP DISCARDABLE "gnu.bmp" +GNU BITMAP DISCARDABLE "gnu.bmp" IDB_GNU BITMAP DISCARDABLE "gnu.bmp" ///////////////////////////////////////////////////////////////////////////// @@ -466,7 +478,7 @@ BEGIN IDS_ERR_OPEN_READ "Can't open %s for reading: %s" IDS_ROOT_ABSOLUTE "The install directory must be absolute, with both a drive letter and leading slash, like C:\\Cygwin" IDS_DOWNLOAD_COMPLETE "Download Complete" - IDS_CVSID "\n%%% $Id: res.rc,v 1.1.2.3 2000/12/27 09:35:11 andyp Exp $\n" + IDS_CVSID "\n%%% $Id: res.rc,v 1.1.2.4 2001/01/24 09:18:30 andyp Exp $\n" IDS_NOLOGFILE "Cannot open log file %s for writing" IDS_UNINSTALL_COMPLETE "Uninstalls complete." IDS_WININET "Unable to find or load the Internet Explorer 5 DLLs" @@ -482,24 +494,6 @@ END ///////////////////////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////// -// English (U.K.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -#endif // English (U.K.) resources -///////////////////////////////////////////////////////////////////////////// - - #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// diff --git a/nt/ChangeLog b/nt/ChangeLog index b4ee642..e103bcd 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,7 @@ +2001-01-26 Martin Buchholz + + * XEmacs 21.2.43 "Terspichore" is released. + 2001-01-20 Martin Buchholz * XEmacs 21.2.42 "Poseidon" is released. diff --git a/src/ChangeLog b/src/ChangeLog index 4e65cd4..e046fb9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -3430,6 +3430,114 @@ (Vcharset_thai_tis620): Likewise. (Vcharset_katakana_jisx0201): Likewise. +2001-01-26 Martin Buchholz + + * XEmacs 21.2.43 "Terspichore" is released. + +2001-01-25 Martin Buchholz + + Type fiddling for window_config.saved_windows_count + * window.c (struct window_config): + Make saved_windows_count member unsigned. + * window.c (sizeof_window_config_for_n_windows): + Make parameter unsigned. + * window.c (mark_window_config): + * window.c (window_config_equal): + * window.c (free_window_configuration): + * window.c (Fset_window_configuration): + * window.c (count_windows): + * window.c (Fcurrent_window_configuration): + * window.c (reinit_vars_of_window): + Update all callers and users. + +2001-01-25 Martin Buchholz + + Alignment correctness for flexible arrays. + * lisp.h (FLEXIBLE_ARRAY_STRUCT_SIZEOF): + Make alignment-correct. Add interesting comments. + * alloc.c (size_vector): + * alloc.c (make_vector_internal): + * alloc.c (make_bit_vector_internal): + * alloc.c (sweep_bit_vectors_1): + * fns.c (size_bit_vector): + Update all callers of FLEXIBLE_ARRAY_STRUCT_SIZEOF to add new arg. + * window.c (sizeof_window_config_for_n_windows): + Use FLEXIBLE_ARRAY_STRUCT_SIZEOF. + +2001-01-24 Martin Buchholz + + * lread.c (read1): Rename `fexp', which is #defined in SGI's math.h + +2001-01-23 Andy Piper + + * select.c (Fown_selection_internal): pass owned_p + + * select-msw.c (mswindows_own_selection): New Signature. + + * console.h (struct console_methods): add owned_p to + _own_selection. + + * select-x.c (x_own_selection): pass owned_p + (hack_motif_clipboard_selection): use owned_p + (vars_of_select_x): new variable - + x_selection_strict_motif_ownership. + +2001-01-23 Martin Buchholz + + * specifier.h (specifier_data_offset): Remove pointless parens. + * glyphs.h (IMAGE_SPECIFIER_DATA): Likewise. + +2001-01-24 Martin Buchholz + + Make Lisp_Object sizeof methods be alignment-correct. + pdump must restore objects to the same alignment as the C compiler + assumes. It really matters on SGIs. + * lstream.c (aligned_sizeof_lstream): New. + (sizeof_lstream): Use aligned_sizeof_lstream. + (Lstream_new): Likewise. + * opaque.c (aligned_sizeof_opaque): New. + (sizeof_opaque): Use aligned_sizeof_opaque. + (make_opaque): Likewise. + * specifier.c (aligned_sizeof_specifier): New. + (sizeof_specifier): Use aligned_sizeof_specifier. + (make_specifier_internal): Likewise. + +2001-01-23 Martin Buchholz + + * lstream.h (struct lstream): Use max_align_t for trailing data. + * specifier.h (struct Lisp_Specifier): Likewise. + +2001-01-22 Martin Buchholz + + * mule-ccl.c (CCL_Extension): Renamed from CCL_Extention. + (CCL_SUCCESS): Kludge to prevent Sun cc compiler warnings. + (CCL_SUSPEND): Likewise. + (CCL_INVALID_CMD): Likewise. + (CCL_CALL_FOR_MAP_INSTRUCTION): Likewise. + (ccl_driver): Likewise. + (CCL_WRITE_CHAR): Macro hygiene. + (CCL_WRITE_STRING): Macro hygiene. + +2001-01-22 Martin Buchholz + + Port "portable" dumper to SunOS 4 and HP-UX. + * s/aix4.h (AIX4): Move MAP_FAILED definition elsewhere. + * emacs.c (main): PDUMP implies no RUN_TIME_REMAP. + * dumper.c (pdump_file_get): Define MAP_FAILED if not already defined. + +2001-01-22 Martin Buchholz + + * lisp.h (ALIGNOF): A better definition for C++. + +2001-01-20 Martin Buchholz + + Macro hygiene. + Fix printf warnings: int format, long int arg. + * regex.c (DECLARE_DESTINATION): Use DECLARE_NOTHING. + (PUSH_FAILURE_POINT): Use correct printf formats. + (POP_FAILURE_POINT): Use correct printf formats. + Use do {...} while (0) + 2001-01-20 Martin Buchholz * XEmacs 21.2.42 "Poseidon" is released. @@ -4028,7 +4136,7 @@ (fast_string_match): Ditto. (search_command): Ditto. (search_buffer): Separate boyer_moore. Check whether - boyer_moore is poosible. + boyer_moore is possible. (simple_search): New function. (boyer_moore): Separated from search_buffer. Translate char. diff --git a/src/alloc.c b/src/alloc.c index 9e0174d..402cdca 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -1085,7 +1085,7 @@ mark_vector (Lisp_Object obj) static size_t size_vector (const void *lheader) { - return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, contents, + return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, Lisp_Object, contents, ((Lisp_Vector *) lheader)->size); } @@ -1133,7 +1133,8 @@ static Lisp_Vector * make_vector_internal (size_t sizei) { /* no vector_next */ - size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, contents, sizei); + size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, Lisp_Object, + contents, sizei); Lisp_Vector *p = (Lisp_Vector *) alloc_lcrecord (sizem, &lrecord_vector); p->size = sizei; @@ -1364,7 +1365,8 @@ static Lisp_Bit_Vector * make_bit_vector_internal (size_t sizei) { size_t num_longs = BIT_VECTOR_LONG_STORAGE (sizei); - size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits, num_longs); + size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, unsigned long, + bits, num_longs); Lisp_Bit_Vector *p = (Lisp_Bit_Vector *) allocate_lisp_storage (sizem); set_lheader_implementation (&p->lheader, &lrecord_bit_vector); @@ -2693,8 +2695,8 @@ sweep_bit_vectors_1 (Lisp_Object *prev, total_size += len; total_storage += MALLOC_OVERHEAD + - FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits, - BIT_VECTOR_LONG_STORAGE (len)); + FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, unsigned long, + bits, BIT_VECTOR_LONG_STORAGE (len)); num_used++; /* #### May modify next on a C_READONLY bitvector */ prev = &(bit_vector_next (v)); diff --git a/src/console.h b/src/console.h index c0d1ddc..cf2ab25 100644 --- a/src/console.h +++ b/src/console.h @@ -99,7 +99,8 @@ struct console_methods Lisp_Object (*own_selection_method)(Lisp_Object selection_name, Lisp_Object selection_value, Lisp_Object how_to_add, - Lisp_Object selection_type); + Lisp_Object selection_type, + int owned_p); void (*disown_selection_method)(Lisp_Object selection_name, Lisp_Object timeval); Lisp_Object (*get_foreign_selection_method) (Lisp_Object selection_symbol, diff --git a/src/data.c b/src/data.c index 6239dd7..09cc4fd 100644 --- a/src/data.c +++ b/src/data.c @@ -1943,7 +1943,7 @@ DEFUN ("make-weak-list", Fmake_weak_list, 0, 1, 0, /* Return a new weak list object of type TYPE. A weak list object is an object that contains a list. This list behaves like any other list except that its elements do not count towards -garbage collection -- if the only pointer to an object in inside a weak +garbage collection -- if the only pointer to an object is inside a weak list (other than pointers in similar objects such as weak hash tables), the object is garbage collected and automatically removed from the list. This is used internally, for example, to manage the list holding the diff --git a/src/dumper.c b/src/dumper.c index 4118809..137ce96 100644 --- a/src/dumper.c +++ b/src/dumper.c @@ -1249,6 +1249,11 @@ pdump_file_get (const char *path) lseek (fd, 0, SEEK_SET); #ifdef HAVE_MMAP +/* Unix 98 requires that sys/mman.h define MAP_FAILED, + but many earlier implementations don't. */ +# ifndef MAP_FAILED +# define MAP_FAILED ((void *) -1L) +# endif pdump_start = (char *) mmap (0, pdump_length, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); if (pdump_start != (char *) MAP_FAILED) { @@ -1256,7 +1261,7 @@ pdump_file_get (const char *path) close (fd); return 1; } -#endif +#endif /* HAVE_MMAP */ pdump_mallocadr = xmalloc (pdump_length+255); pdump_free = pdump_file_free; diff --git a/src/emacs.c b/src/emacs.c index 90179ea..522ffa7 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -2645,7 +2645,7 @@ main (int argc, char **argv, char **envp) #endif /* _SCO_DS */ vol_envp = environ; } -#ifdef RUN_TIME_REMAP +#if defined (RUN_TIME_REMAP) && ! defined (PDUMP) else /* obviously no-one uses this because where it was before initialized was *always* true */ diff --git a/src/fns.c b/src/fns.c index fc1d700..95ce145 100644 --- a/src/fns.c +++ b/src/fns.c @@ -113,7 +113,7 @@ static size_t size_bit_vector (const void *lheader) { Lisp_Bit_Vector *v = (Lisp_Bit_Vector *) lheader; - return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits, + return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, unsigned long, bits, BIT_VECTOR_LONG_STORAGE (bit_vector_length (v))); } diff --git a/src/glyphs.h b/src/glyphs.h index d9c64d4..5903f1c 100644 --- a/src/glyphs.h +++ b/src/glyphs.h @@ -405,7 +405,7 @@ struct image_specifier Lisp_Object attachee_property;/* property of that face or glyph */ }; -#define IMAGE_SPECIFIER_DATA(g) (SPECIFIER_TYPE_DATA (g, image)) +#define IMAGE_SPECIFIER_DATA(g) SPECIFIER_TYPE_DATA (g, image) #define IMAGE_SPECIFIER_ALLOWED(g) (IMAGE_SPECIFIER_DATA (g)->allowed) #define IMAGE_SPECIFIER_ATTACHEE(g) (IMAGE_SPECIFIER_DATA (g)->attachee) #define IMAGE_SPECIFIER_ATTACHEE_PROPERTY(g) \ diff --git a/src/lisp.h b/src/lisp.h index f179c59..38e4046 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -216,13 +216,10 @@ typedef union "Types must be declared in declarations, not in expressions." */ # define ALIGNOF(type) offsetof (struct { char c; type member; }, member) # else -/* 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))) +/* C++ is annoying, but it has a big bag of tricks. + The following doesn't have the "inside out" declaration bug C does. */ +template struct alignment_trick { char c; T member; }; +# define ALIGNOF(type) offsetof (alignment_trick, member) # endif #endif /* ALIGNOF */ @@ -1203,14 +1200,28 @@ void set_string_char (Lisp_String *s, Charcount i, Emchar c); #endif /* not MULE */ -/* Return the true size of a struct with a variable-length array field. */ -#define FLEXIBLE_ARRAY_STRUCT_SIZEOF(flexible_array_structtype, \ - flexible_array_field, \ - flexible_array_length) \ - (offsetof (flexible_array_structtype, flexible_array_field) + \ - (offsetof (flexible_array_structtype, flexible_array_field[1]) - \ - offsetof (flexible_array_structtype, flexible_array_field[0])) * \ - (flexible_array_length)) +/* Return the true aligned size of a struct whose last member is a + variable-length array field. (this is known as the "struct hack") */ +/* Implementation: in practice, structtype and fieldtype usually have + the same alignment, but we can't be sure. We need to use + ALIGN_SIZE to be absolutely sure of getting the correct alignment. + To help the compiler's optimizer, we use a ternary expression that + only a very stupid compiler would fail to correctly simplify. */ +#define FLEXIBLE_ARRAY_STRUCT_SIZEOF(structtype, \ + fieldtype, \ + fieldname, \ + array_length) \ +(ALIGNOF (structtype) == ALIGNOF (fieldtype) \ + ? (offsetof (structtype, fieldname) + \ + (offsetof (structtype, fieldname[1]) - \ + offsetof (structtype, fieldname[0])) * \ + (array_length)) \ + : (ALIGN_SIZE \ + ((offsetof (structtype, fieldname) + \ + (offsetof (structtype, fieldname[1]) - \ + offsetof (structtype, fieldname[0])) * \ + (array_length)), \ + ALIGNOF (structtype)))) /*------------------------------ vector --------------------------------*/ diff --git a/src/lread.c b/src/lread.c index c8fff59..91cdb66 100644 --- a/src/lread.c +++ b/src/lread.c @@ -2520,15 +2520,15 @@ retry: case '+': case '-': { - Lisp_Object fexp, obj, tem; + Lisp_Object feature_exp, obj, tem; struct gcpro gcpro1, gcpro2; - fexp = read0(readcharfun); + feature_exp = read0(readcharfun); obj = read0(readcharfun); /* the call to `featurep' may GC. */ - GCPRO2 (fexp, obj); - tem = call1 (Qfeaturep, fexp); + GCPRO2 (feature_exp, obj); + tem = call1 (Qfeaturep, feature_exp); UNGCPRO; if (c == '+' && NILP(tem)) goto retry; diff --git a/src/lstream.c b/src/lstream.c index 878449e..d413800 100644 --- a/src/lstream.c +++ b/src/lstream.c @@ -179,11 +179,17 @@ finalize_lstream (void *header, int for_disksave) } } +inline static size_t +aligned_sizeof_lstream (size_t lstream_type_specific_size) +{ + return ALIGN_SIZE (offsetof (Lstream, data) + lstream_type_specific_size, + ALIGNOF (max_align_t)); +} + static size_t sizeof_lstream (const void *header) { - const Lstream *lstr = (const Lstream *) header; - return sizeof (*lstr) + lstr->imp->size - 1; + return aligned_sizeof_lstream (((const Lstream *) header)->imp->size); } DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION ("stream", lstream, @@ -231,15 +237,15 @@ Lstream_new (const Lstream_implementation *imp, const char *mode) assert (lstream_type_count < countof (lstream_types)); lstream_types[lstream_type_count] = imp; Vlstream_free_list[lstream_type_count] = - make_lcrecord_list (sizeof (*p) + imp->size - 1, + make_lcrecord_list (aligned_sizeof_lstream (imp->size), &lrecord_lstream); lstream_type_count++; } p = XLSTREAM (allocate_managed_lcrecord (Vlstream_free_list[i])); /* Zero it out, except the header. */ - memset ((char *) p + sizeof (p->header), 0, - sizeof (*p) - sizeof (p->header) + imp->size - 1); + memset ((char *) p + sizeof (p->header), '\0', + aligned_sizeof_lstream (imp->size) - sizeof (p->header)); p->imp = imp; Lstream_set_buffering (p, LSTREAM_BLOCK_BUFFERED, 0); p->flags = LSTREAM_FL_IS_OPEN; diff --git a/src/lstream.h b/src/lstream.h index df46960..877f66c 100644 --- a/src/lstream.h +++ b/src/lstream.h @@ -167,8 +167,8 @@ struct lstream size_t unget_buffer_ind; /* pointer to next buffer spot to write a character */ size_t byte_count; - long flags; /* Align pointer for 64 bit machines (kny) */ - char data[1]; + int flags; + max_align_t data[1]; }; #define LSTREAM_TYPE_P(lstr, type) \ diff --git a/src/mule-ccl.c b/src/mule-ccl.c index a6576e7..ad52fd2 100644 --- a/src/mule-ccl.c +++ b/src/mule-ccl.c @@ -423,7 +423,7 @@ Lisp_Object Vccl_program_table; IC += 2; */ -#define CCL_Extention 0x1F /* Extended CCL code +#define CCL_Extension 0x1F /* Extended CCL code 1:ExtendedCOMMNDRrrRRRrrrXXXXX 2:ARGUMENT 3:... @@ -634,7 +634,9 @@ static int stack_idx_of_map_multiple; stack_idx++; \ ccl_prog = called_ccl.prog; \ ic = CCL_HEADER_MAIN; \ - goto ccl_repeat; \ + /* The "if (1)" prevents warning \ + "end-of loop code not reached" */ \ + if (1) goto ccl_repeat; \ } while (0) #define CCL_MapSingle 0x12 /* Map by single code conversion map @@ -675,29 +677,35 @@ static int stack_idx_of_map_multiple; r[7] = LOWER_BYTE (SJIS (Y, Z) */ /* Terminate CCL program successfully. */ -#define CCL_SUCCESS \ - do { \ - ccl->status = CCL_STAT_SUCCESS; \ - goto ccl_finish; \ - } while (0) +#define CCL_SUCCESS \ +do { \ + ccl->status = CCL_STAT_SUCCESS; \ + /* The "if (1)" inhibits the warning \ + "end-of loop code not reached" */ \ + if (1) goto ccl_finish; \ +} while (0) /* Suspend CCL program because of reading from empty input buffer or writing to full output buffer. When this program is resumed, the same I/O command is executed. */ -#define CCL_SUSPEND(stat) \ - do { \ - ic--; \ - ccl->status = stat; \ - goto ccl_finish; \ - } while (0) +#define CCL_SUSPEND(stat) \ +do { \ + ic--; \ + ccl->status = (stat); \ + /* The "if (1)" inhibits the warning \ + "end-of loop code not reached" */ \ + if (1) goto ccl_finish; \ +} while (0) /* Terminate CCL program because of invalid command. Should not occur in the normal case. */ -#define CCL_INVALID_CMD \ - do { \ - ccl->status = CCL_STAT_INVALID_CMD; \ - goto ccl_error_handler; \ - } while (0) +#define CCL_INVALID_CMD \ +do { \ + ccl->status = CCL_STAT_INVALID_CMD; \ + /* The "if (1)" inhibits the warning \ + "end-of loop code not reached" */ \ + if (1) goto ccl_error_handler; \ +} while (0) /* Encode one character CH to multibyte form and write to the current output buffer. At encoding time, if CH is less than 256, CH is @@ -709,7 +717,7 @@ static int stack_idx_of_map_multiple; CCL_INVALID_CMD; \ if (conversion_mode == CCL_MODE_ENCODING) \ { \ - if (ch == '\n') \ + if ((ch) == '\n') \ { \ if (ccl->eol_type == CCL_CODING_EOL_CRLF) \ { \ @@ -721,7 +729,7 @@ static int stack_idx_of_map_multiple; else \ Dynarr_add (destination, '\n'); \ } \ - else if (ch < 0x100) \ + else if ((ch) < 0x100) \ { \ Dynarr_add (destination, ch); \ } \ @@ -760,7 +768,7 @@ static int stack_idx_of_map_multiple; CCL_INVALID_CMD; \ else if (conversion_mode == CCL_MODE_ENCODING) \ { \ - for (i = 0; i < len; i++) \ + for (i = 0; i < (len); i++) \ { \ ch = ((XINT (ccl_prog[ic + (i / 3)])) \ >> ((2 - (i % 3)) * 8)) & 0xFF; \ @@ -789,7 +797,7 @@ static int stack_idx_of_map_multiple; } \ else \ { \ - for (i = 0; i < len; i++) \ + for (i = 0; i < (len); i++) \ { \ ch = ((XINT (ccl_prog[ic + (i / 3)])) \ >> ((2 - (i % 3)) * 8)) & 0xFF; \ @@ -812,7 +820,7 @@ static int stack_idx_of_map_multiple; if (!src) \ CCL_INVALID_CMD; \ if (src < src_end) \ - r = *src++; \ + (r) = *src++; \ else \ { \ if (ccl->last_block) \ @@ -837,20 +845,20 @@ static int stack_idx_of_map_multiple; #if 0 #define CCL_MAKE_CHAR(charset, code, c) \ do { \ - if (charset == CHARSET_ASCII) \ - c = code & 0xFF; \ + if ((charset) == CHARSET_ASCII) \ + (c) = (code) & 0xFF; \ else if (CHARSET_DEFINED_P (charset) \ - && (code & 0x7F) >= 32 \ - && (code < 256 || ((code >> 7) & 0x7F) >= 32)) \ + && ((code) & 0x7F) >= 32 \ + && ((code) < 256 || ((code >> 7) & 0x7F) >= 32)) \ { \ - int c1 = code & 0x7F, c2 = 0; \ + int c1 = (code) & 0x7F, c2 = 0; \ \ - if (code >= 256) \ - c2 = c1, c1 = (code >> 7) & 0x7F; \ - c = MAKE_CHAR (charset, c1, c2); \ + if ((code) >= 256) \ + c2 = c1, c1 = ((code) >> 7) & 0x7F; \ + (c) = MAKE_CHAR (charset, c1, c2); \ } \ else \ - c = code & 0xFF; \ + (c) = (code) & 0xFF; \ } while (0) #endif @@ -1268,7 +1276,7 @@ ccl_driver (struct ccl_program *ccl, ic = jump_address; break; - case CCL_Extention: + case CCL_Extension: switch (EXCMD) { #ifndef UTF2000 @@ -1276,60 +1284,57 @@ ccl_driver (struct ccl_program *ccl, if (!src) CCL_INVALID_CMD; - do { - if (src >= src_end) - { - src++; - goto ccl_read_multibyte_character_suspend; - } + if (src >= src_end) + { + src++; + goto ccl_read_multibyte_character_suspend; + } - i = *src++; - if (i < 0x80) - { - /* ASCII */ - reg[rrr] = i; - reg[RRR] = LEADING_BYTE_ASCII; - } - else if (i <= MAX_LEADING_BYTE_OFFICIAL_1) - { - if (src >= src_end) - goto ccl_read_multibyte_character_suspend; - reg[RRR] = i; - reg[rrr] = (*src++ & 0x7F); - } - else if (i <= MAX_LEADING_BYTE_OFFICIAL_2) - { - if ((src + 1) >= src_end) - goto ccl_read_multibyte_character_suspend; - reg[RRR] = i; - i = (*src++ & 0x7F); - reg[rrr] = ((i << 7) | (*src & 0x7F)); - src++; - } - else if (i == PRE_LEADING_BYTE_PRIVATE_1) - { - if ((src + 1) >= src_end) - goto ccl_read_multibyte_character_suspend; - reg[RRR] = *src++; - reg[rrr] = (*src++ & 0x7F); - } - else if (i == PRE_LEADING_BYTE_PRIVATE_2) - { - if ((src + 2) >= src_end) - goto ccl_read_multibyte_character_suspend; - reg[RRR] = *src++; - i = (*src++ & 0x7F); - reg[rrr] = ((i << 7) | (*src & 0x7F)); - src++; - } - else - { - /* INVALID CODE. Return a single byte character. */ - reg[RRR] = LEADING_BYTE_ASCII; - reg[rrr] = i; - } - break; - } while (1); + i = *src++; + if (i < 0x80) + { + /* ASCII */ + reg[rrr] = i; + reg[RRR] = LEADING_BYTE_ASCII; + } + else if (i <= MAX_LEADING_BYTE_OFFICIAL_1) + { + if (src >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = i; + reg[rrr] = (*src++ & 0x7F); + } + else if (i <= MAX_LEADING_BYTE_OFFICIAL_2) + { + if ((src + 1) >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = i; + i = (*src++ & 0x7F); + reg[rrr] = ((i << 7) | (*src & 0x7F)); + src++; + } + else if (i == PRE_LEADING_BYTE_PRIVATE_1) + { + if ((src + 1) >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = *src++; + reg[rrr] = (*src++ & 0x7F); + } + else if (i == PRE_LEADING_BYTE_PRIVATE_2) + { + if ((src + 2) >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = *src++; + i = (*src++ & 0x7F); + reg[rrr] = ((i << 7) | (*src & 0x7F)); + src++; + } + else + { + /* INVALID CODE. Return a single byte character. */ + reg[RRR] = LEADING_BYTE_ASCII; + reg[rrr] = i; + } break; ccl_read_multibyte_character_suspend: diff --git a/src/opaque.c b/src/opaque.c index 2fb6dec..976ecd7 100644 --- a/src/opaque.c +++ b/src/opaque.c @@ -52,11 +52,17 @@ print_opaque (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) write_c_string (buf, printcharfun); } +inline static size_t +aligned_sizeof_opaque (size_t opaque_size) +{ + return ALIGN_SIZE (offsetof (Lisp_Opaque, data) + opaque_size, + ALIGNOF (max_align_t)); +} + static size_t sizeof_opaque (const void *header) { - const Lisp_Opaque *p = (const Lisp_Opaque *) header; - return offsetof (Lisp_Opaque, data) + p->size; + return aligned_sizeof_opaque (((const Lisp_Opaque *) header)->size); } /* Return an opaque object of size SIZE. @@ -67,7 +73,7 @@ Lisp_Object make_opaque (const void *data, size_t size) { Lisp_Opaque *p = (Lisp_Opaque *) - alloc_lcrecord (offsetof (Lisp_Opaque, data) + size, &lrecord_opaque); + alloc_lcrecord (aligned_sizeof_opaque (size), &lrecord_opaque); p->size = size; if (data == OPAQUE_CLEAR) diff --git a/src/regex.c b/src/regex.c index 3652b91..ceda32a 100644 --- a/src/regex.c +++ b/src/regex.c @@ -1253,85 +1253,89 @@ typedef struct Does `return FAILURE_CODE' if runs out of memory. */ #if !defined (REGEX_MALLOC) && !defined (REL_ALLOC) -#define DECLARE_DESTINATION char *destination; +#define DECLARE_DESTINATION char *destination #else -#define DECLARE_DESTINATION +#define DECLARE_DESTINATION DECLARE_NOTHING #endif #define PUSH_FAILURE_POINT(pattern_place, string_place, failure_code) \ - do { \ - DECLARE_DESTINATION \ - /* Must be int, so when we don't save any registers, the arithmetic \ - of 0 + -1 isn't done as unsigned. */ \ - int this_reg; \ - \ - DEBUG_STATEMENT (failure_id++); \ - DEBUG_STATEMENT (nfailure_points_pushed++); \ - DEBUG_PRINT2 ("\nPUSH_FAILURE_POINT #%u:\n", failure_id); \ - DEBUG_PRINT2 (" Before push, next avail: %d\n", (fail_stack).avail);\ - DEBUG_PRINT2 (" size: %d\n", (fail_stack).size);\ +do { \ + DECLARE_DESTINATION; \ + /* Must be int, so when we don't save any registers, the arithmetic \ + of 0 + -1 isn't done as unsigned. */ \ + int this_reg; \ \ - DEBUG_PRINT2 (" slots needed: %d\n", NUM_FAILURE_ITEMS); \ - DEBUG_PRINT2 (" available: %d\n", REMAINING_AVAIL_SLOTS); \ + DEBUG_STATEMENT (failure_id++); \ + DEBUG_STATEMENT (nfailure_points_pushed++); \ + DEBUG_PRINT2 ("\nPUSH_FAILURE_POINT #%u:\n", failure_id); \ + DEBUG_PRINT2 (" Before push, next avail: %lu\n", \ + (unsigned long) (fail_stack).avail); \ + DEBUG_PRINT2 (" size: %lu\n", \ + (unsigned long) (fail_stack).size); \ \ - /* Ensure we have enough space allocated for what we will push. */ \ - while (REMAINING_AVAIL_SLOTS < NUM_FAILURE_ITEMS) \ - { \ - if (!DOUBLE_FAIL_STACK (fail_stack)) \ - return failure_code; \ + DEBUG_PRINT2 (" slots needed: %d\n", NUM_FAILURE_ITEMS); \ + DEBUG_PRINT2 (" available: %ld\n", \ + (long) REMAINING_AVAIL_SLOTS); \ \ - DEBUG_PRINT2 ("\n Doubled stack; size now: %d\n", \ - (fail_stack).size); \ - DEBUG_PRINT2 (" slots available: %d\n", REMAINING_AVAIL_SLOTS);\ - } \ + /* Ensure we have enough space allocated for what we will push. */ \ + while (REMAINING_AVAIL_SLOTS < NUM_FAILURE_ITEMS) \ + { \ + if (!DOUBLE_FAIL_STACK (fail_stack)) \ + return failure_code; \ \ - /* Push the info, starting with the registers. */ \ - DEBUG_PRINT1 ("\n"); \ + DEBUG_PRINT2 ("\n Doubled stack; size now: %lu\n", \ + (unsigned long) (fail_stack).size); \ + DEBUG_PRINT2 (" slots available: %ld\n", \ + (long) REMAINING_AVAIL_SLOTS); \ + } \ \ - for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \ - this_reg++) \ - { \ - DEBUG_PRINT2 (" Pushing reg: %d\n", this_reg); \ - DEBUG_STATEMENT (num_regs_pushed++); \ + /* Push the info, starting with the registers. */ \ + DEBUG_PRINT1 ("\n"); \ \ - DEBUG_PRINT2 (" start: 0x%lx\n", (long) regstart[this_reg]); \ - PUSH_FAILURE_POINTER (regstart[this_reg]); \ - \ - DEBUG_PRINT2 (" end: 0x%lx\n", (long) regend[this_reg]); \ - PUSH_FAILURE_POINTER (regend[this_reg]); \ + for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \ + this_reg++) \ + { \ + DEBUG_PRINT2 (" Pushing reg: %d\n", this_reg); \ + DEBUG_STATEMENT (num_regs_pushed++); \ \ - DEBUG_PRINT2 (" info: 0x%lx\n ", \ - * (long *) (®_info[this_reg])); \ - DEBUG_PRINT2 (" match_null=%d", \ - REG_MATCH_NULL_STRING_P (reg_info[this_reg])); \ - DEBUG_PRINT2 (" active=%d", IS_ACTIVE (reg_info[this_reg])); \ - DEBUG_PRINT2 (" matched_something=%d", \ - MATCHED_SOMETHING (reg_info[this_reg])); \ - DEBUG_PRINT2 (" ever_matched=%d", \ - EVER_MATCHED_SOMETHING (reg_info[this_reg])); \ - DEBUG_PRINT1 ("\n"); \ - PUSH_FAILURE_ELT (reg_info[this_reg].word); \ - } \ + DEBUG_PRINT2 (" start: 0x%lx\n", (long) regstart[this_reg]); \ + PUSH_FAILURE_POINTER (regstart[this_reg]); \ \ - DEBUG_PRINT2 (" Pushing low active reg: %d\n", lowest_active_reg);\ - PUSH_FAILURE_INT (lowest_active_reg); \ + DEBUG_PRINT2 (" end: 0x%lx\n", (long) regend[this_reg]); \ + PUSH_FAILURE_POINTER (regend[this_reg]); \ \ - DEBUG_PRINT2 (" Pushing high active reg: %d\n", highest_active_reg);\ - PUSH_FAILURE_INT (highest_active_reg); \ + DEBUG_PRINT2 (" info: 0x%lx\n ", \ + * (long *) (®_info[this_reg])); \ + DEBUG_PRINT2 (" match_null=%d", \ + REG_MATCH_NULL_STRING_P (reg_info[this_reg])); \ + DEBUG_PRINT2 (" active=%d", IS_ACTIVE (reg_info[this_reg])); \ + DEBUG_PRINT2 (" matched_something=%d", \ + MATCHED_SOMETHING (reg_info[this_reg])); \ + DEBUG_PRINT2 (" ever_matched_something=%d", \ + EVER_MATCHED_SOMETHING (reg_info[this_reg])); \ + DEBUG_PRINT1 ("\n"); \ + PUSH_FAILURE_ELT (reg_info[this_reg].word); \ + } \ \ - DEBUG_PRINT2 (" Pushing pattern 0x%lx: \n", (long) pattern_place); \ - DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend); \ - PUSH_FAILURE_POINTER (pattern_place); \ + DEBUG_PRINT2 (" Pushing low active reg: %d\n", lowest_active_reg); \ + PUSH_FAILURE_INT (lowest_active_reg); \ \ - DEBUG_PRINT2 (" Pushing string 0x%lx: `", (long) string_place); \ - DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, \ - size2); \ - DEBUG_PRINT1 ("'\n"); \ - PUSH_FAILURE_POINTER (string_place); \ + DEBUG_PRINT2 (" Pushing high active reg: %d\n", highest_active_reg); \ + PUSH_FAILURE_INT (highest_active_reg); \ \ - DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \ - DEBUG_PUSH (failure_id); \ - } while (0) + DEBUG_PRINT2 (" Pushing pattern 0x%lx: \n", (long) pattern_place); \ + DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend); \ + PUSH_FAILURE_POINTER (pattern_place); \ + \ + DEBUG_PRINT2 (" Pushing string 0x%lx: `", (long) string_place); \ + DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, \ + size2); \ + DEBUG_PRINT1 ("'\n"); \ + PUSH_FAILURE_POINTER (string_place); \ + \ + DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \ + DEBUG_PUSH (failure_id); \ +} while (0) /* This is the number of items that are pushed and popped on the stack for each register. */ @@ -1371,8 +1375,9 @@ typedef struct Also assumes the variables `fail_stack' and (if debugging), `bufp', `pend', `string1', `size1', `string2', and `size2'. */ -#define POP_FAILURE_POINT(str, pat, low_reg, high_reg, regstart, regend, reg_info)\ -{ \ +#define POP_FAILURE_POINT(str, pat, low_reg, high_reg, \ + regstart, regend, reg_info) \ +do { \ DEBUG_STATEMENT (fail_stack_elt_t ffailure_id;) \ int this_reg; \ const unsigned char *string_temp; \ @@ -1381,8 +1386,10 @@ typedef struct \ /* Remove failure points and point to how many regs pushed. */ \ DEBUG_PRINT1 ("POP_FAILURE_POINT:\n"); \ - DEBUG_PRINT2 (" Before pop, next avail: %d\n", fail_stack.avail); \ - DEBUG_PRINT2 (" size: %d\n", fail_stack.size); \ + DEBUG_PRINT2 (" Before pop, next avail: %lu\n", \ + (unsigned long) fail_stack.avail); \ + DEBUG_PRINT2 (" size: %lu\n", \ + (unsigned long) fail_stack.size); \ \ assert (fail_stack.avail >= NUM_NONREG_ITEMS); \ \ @@ -1429,7 +1436,7 @@ typedef struct \ set_regs_matched_done = 0; \ DEBUG_STATEMENT (nfailure_points_popped++); \ -} /* POP_FAILURE_POINT */ +} while (0) /* POP_FAILURE_POINT */ @@ -3400,7 +3407,7 @@ re_compile_fastmap (struct re_pattern_buffer *bufp) #ifdef MATCH_MAY_ALLOCATE fail_stack_type fail_stack; #endif - DECLARE_DESTINATION + DECLARE_DESTINATION; /* We don't push any register information onto the failure stack. */ REGISTER char *fastmap = bufp->fastmap; diff --git a/src/s/aix4.h b/src/s/aix4.h index 8837db7..adf3195 100644 --- a/src/s/aix4.h +++ b/src/s/aix4.h @@ -11,15 +11,6 @@ /* AIX is happier when bzero and strcasecmp are declared */ #include "strings.h" -/* AIX 4.2's sys/mman.h doesn't seem to define MAP_FAILED, - although Unix98 claims it must. */ -#ifdef HAVE_MMAP -#include -# ifndef MAP_FAILED -# define MAP_FAILED ((void *) -1) -# endif -#endif - /* Forward declarations for xlc warning suppressions */ struct ether_addr; struct sockaddr_dl; diff --git a/src/select-msw.c b/src/select-msw.c index 1e8fd43..67b4c89 100644 --- a/src/select-msw.c +++ b/src/select-msw.c @@ -186,7 +186,8 @@ static Lisp_Object mswindows_own_selection (Lisp_Object selection_name, Lisp_Object selection_value, Lisp_Object how_to_add, - Lisp_Object selection_type) + Lisp_Object selection_type, + int owned_p /* Not used */) { HGLOBAL hValue = NULL; UINT cfType; diff --git a/src/select-x.c b/src/select-x.c index aea4aa4..de3acda 100644 --- a/src/select-x.c +++ b/src/select-x.c @@ -46,7 +46,8 @@ Lisp_Object time_to_lisp (time_t); static void hack_motif_clipboard_selection (Atom selection_atom, Lisp_Object selection_value, Time thyme, Display *display, - Window selecting_window); + Window selecting_window, + int owned_p); #endif #define CUT_BUFFER_SUPPORT @@ -74,6 +75,9 @@ Lisp_Object Vx_sent_selection_hooks; */ int x_selection_timeout; +/* Enable motif selection optimizations. */ +int x_selection_strict_motif_ownership; + /* Utility functions */ @@ -201,7 +205,8 @@ x_atom_to_symbol (struct device *d, Atom atom) */ static Lisp_Object x_own_selection (Lisp_Object selection_name, Lisp_Object selection_value, - Lisp_Object how_to_add, Lisp_Object selection_type) + Lisp_Object how_to_add, Lisp_Object selection_type, + int owned_p) { struct device *d = decode_x_device (Qnil); Display *display = DEVICE_X_DISPLAY (d); @@ -233,7 +238,7 @@ x_own_selection (Lisp_Object selection_name, Lisp_Object selection_value, #ifdef MOTIF_CLIPBOARDS hack_motif_clipboard_selection (selection_atom, selection_value, - thyme, display, selecting_window); + thyme, display, selecting_window, owned_p); #endif return selection_time; } @@ -249,8 +254,8 @@ hack_motif_clipboard_selection (Atom selection_atom, Lisp_Object selection_value, Time thyme, Display *display, - Window selecting_window) - /* Bool owned_p)*/ + Window selecting_window, + int owned_p) { struct device *d = get_device_from_display (display); /* Those Motif wankers can't be bothered to follow the ICCCM, and do @@ -270,7 +275,10 @@ hack_motif_clipboard_selection (Atom selection_atom, to look up the new value, and you can't Copy from a buffer, Paste into a text field, then Copy something else from the buffer and paste it into the text field -- it pastes the first thing again. */ -/* && !owned_p */ + && (!owned_p + /* Selectively re-enable this because for most users its + just too painful - especially over a remote link. */ + || x_selection_strict_motif_ownership) ) { #ifdef MOTIF_INCREMENTAL_CLIPBOARDS_WORK @@ -1781,6 +1789,17 @@ A value of 0 means wait as long as necessary. This is initialized from the \"*selectionTimeout\" resource (which is expressed in milliseconds). */ ); x_selection_timeout = 0; + + DEFVAR_BOOL ("x-selection-strict-motif-ownership", &x_selection_strict_motif_ownership /* +*If true and XEmacs already owns the clipboard, don't own it again in the +Motif way. Owning the selection on the Motif way does a huge amount of +X protocol, and it makes killing text incredibly slow when using an +X terminal. However, when enabled Motif text fields don't bother to look up +the new value, and you can't Copy from a buffer, Paste into a text +field, then Copy something else from the buffer and paste it into the +text field; it pastes the first thing again. +*/ ); + x_selection_strict_motif_ownership = 1; } void diff --git a/src/select.c b/src/select.c index add109b..9c6191a 100644 --- a/src/select.c +++ b/src/select.c @@ -280,7 +280,7 @@ It defaults to the selected device. if (HAS_DEVMETH_P (XDEVICE (device), own_selection)) selection_time = DEVMETH (XDEVICE (device), own_selection, (selection_name, selection_value, - how_to_add, data_type)); + how_to_add, data_type, !NILP (prev_value))); else selection_time = Qnil; diff --git a/src/specifier.c b/src/specifier.c index 8f2055b..18ba86d 100644 --- a/src/specifier.c +++ b/src/specifier.c @@ -354,16 +354,21 @@ specifier_hash (Lisp_Object obj, int depth) internal_hash (s->buffer_specs, depth + 1)); } +inline static size_t +aligned_sizeof_specifier (size_t specifier_type_specific_size) +{ + return ALIGN_SIZE (offsetof (Lisp_Specifier, data) + + specifier_type_specific_size, + ALIGNOF (max_align_t)); +} + static size_t sizeof_specifier (const void *header) { - if (GHOST_SPECIFIER_P ((Lisp_Specifier *) header)) - return offsetof (Lisp_Specifier, data); - else - { - const Lisp_Specifier *p = (const Lisp_Specifier *) header; - return offsetof (Lisp_Specifier, data) + p->methods->extra_data_size; - } + const Lisp_Specifier *p = (const Lisp_Specifier *) header; + return aligned_sizeof_specifier (GHOST_SPECIFIER_P (p) + ? 0 + : p->methods->extra_data_size); } static const struct lrecord_description specifier_methods_description_1[] = { @@ -476,8 +481,7 @@ make_specifier_internal (struct specifier_methods *spec_meths, { Lisp_Object specifier; Lisp_Specifier *sp = (Lisp_Specifier *) - alloc_lcrecord (offsetof (Lisp_Specifier, data) + data_size, - &lrecord_specifier); + alloc_lcrecord (aligned_sizeof_specifier (data_size), &lrecord_specifier); sp->methods = spec_meths; sp->global_specs = Qnil; diff --git a/src/specifier.h b/src/specifier.h index a483ff6..ac006a3 100644 --- a/src/specifier.h +++ b/src/specifier.h @@ -235,7 +235,7 @@ struct Lisp_Specifier Lisp_Object fallback; /* type-specific extra data attached to a specifier */ - char data[1]; + max_align_t data[1]; }; typedef struct Lisp_Specifier Lisp_Specifier; @@ -261,7 +261,7 @@ DECLARE_LRECORD (specifier, Lisp_Specifier); /***** Defining new specifier types *****/ -#define specifier_data_offset (offsetof (Lisp_Specifier, data)) +#define specifier_data_offset offsetof (Lisp_Specifier, data) extern const struct lrecord_description specifier_empty_extra_description[]; #ifdef ERROR_CHECK_TYPECHECK diff --git a/src/window.c b/src/window.c index 7790ce7..a3ad1b1 100644 --- a/src/window.c +++ b/src/window.c @@ -5006,7 +5006,7 @@ struct window_config /* Record the values of window-min-width and window-min-height so that window sizes remain consistent with them. */ int min_width, min_height; - int saved_windows_count; + unsigned int saved_windows_count; /* Zero-sized arrays aren't ANSI C */ struct saved_window saved_windows[1]; }; @@ -5021,7 +5021,7 @@ static Lisp_Object mark_window_config (Lisp_Object obj) { struct window_config *config = XWINDOW_CONFIGURATION (obj); - int i; + unsigned int i; mark_object (config->current_window); mark_object (config->current_buffer); mark_object (config->minibuffer_scroll_window); @@ -5050,12 +5050,11 @@ mark_window_config (Lisp_Object obj) return Qnil; } -static size_t -sizeof_window_config_for_n_windows (int n) +inline static size_t +sizeof_window_config_for_n_windows (unsigned int n) { - return (sizeof (struct window_config) + - /* n - 1 because zero-sized arrays aren't ANSI C */ - (n - 1) *sizeof (struct saved_window)); + return FLEXIBLE_ARRAY_STRUCT_SIZEOF (struct window_config, + struct saved_window, saved_windows, n); } static size_t @@ -5120,7 +5119,7 @@ static int window_config_equal (Lisp_Object conf1, Lisp_Object conf2) { struct window_config *fig1, *fig2; - int i; + unsigned int i; /* First check if they are truly the same. */ if (EQ (conf1, conf2)) @@ -5175,7 +5174,7 @@ mark_windows_in_use (struct frame *f, int mark) static Lisp_Object free_window_configuration (Lisp_Object window_config) { - int i; + unsigned int i; struct window_config *config = XWINDOW_CONFIGURATION (window_config); /* Free all the markers. It's not completely necessary that @@ -5227,7 +5226,7 @@ by `current-window-configuration' (which see). struct window_config *config; struct saved_window *p; Lisp_Object new_current_buffer; - int k; + unsigned int k; Lisp_Object frame; struct frame *f; struct gcpro gcpro1; @@ -5725,7 +5724,7 @@ delete_all_subwindows (struct window *w) } -static int +static unsigned int count_windows (struct window *window) { return 1 + @@ -5840,7 +5839,7 @@ its value is -not- saved. Lisp_Object result; struct frame *f = decode_frame (frame); struct window_config *config; - int n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f))); + unsigned int n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f))); int minibuf_height; int real_font_height; @@ -6152,7 +6151,7 @@ syms_of_window (void) void reinit_vars_of_window (void) { - int i; + unsigned int i; /* Make sure all windows get marked */ minibuf_window = Qnil; staticpro_nodump (&minibuf_window); diff --git a/tests/ChangeLog b/tests/ChangeLog index 117f16b..877dc91 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2001-01-26 Martin Buchholz + + * XEmacs 21.2.43 "Terspichore" is released. + 2001-01-20 Martin Buchholz * XEmacs 21.2.42 "Poseidon" is released. diff --git a/version.sh b/version.sh index 34cd7a2..a9e37c3 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=42 -xemacs_codename="Poseidon" +emacs_beta_version=43 +xemacs_codename="Terspichore" infodock_major_version=4 infodock_minor_version=0 infodock_build_version=8