XEmacs -- Emacs: The Next Generation
     Searching XEmacs
Quick Links About XEmacs Getting XEmacs Customizing XEmacs Troubleshooting XEmacs Developing XEmacs

XEmacs 21.5.35 "kohlrabi" is released

goto announcement, summary, changes

From: "Aidan Kehoe" <kehoea@parhasard.net>
Subject: XEmacs 21.5.35 "kohlrabi" is released.
Organization: The XEmacs Project

*          XEmacs 21.5.35 "kohlrabi" is released.
      "kohlrabi" is the thirty-sixth in the VEGETABLE series.

This release is the first beta release since 2013. The most important change
included is a merge of Ben Wing’s work providing Unicode as an internal
format. The bulk of this work was done coming up to 2010 and it was merged to
the trunk in 2016. To enable it, pass --with-mule
--with-unicode-internal as arguments to the configure

Important other changes are Jeff Sparke’s work updating the GTK support to
handle GTK3, Jerry James’ work to add transport level security (TLS, including
SSL) support to the network code, Aidan Kehoe’s to improve algorithmic
complexity problems related to use of character positions in C code, Jaakko
Salomaa’s work to support the OpenSSL bignum implementation, work from
multiple people to have XEmacs build on 64-bit Windows.

Changes to improve maintainability include removal of support for Windows
95/98/ME, removal of support for unexec, removal of support for 
incremental garbage collection (slower, more memory-intensive, and buggier
than the alternative), removal of support for non-KKCC memory descriptions
(KKCC was done as part of the incremental GC work, but is stable, fast and
reliable), removal of several redundant C-level hash table implementations,
moving many non-hotspot functions from C to Lisp.

This is the development line.  The current series started with XEmacs
21.5.0 (an alias for XEmacs 21.4.0 "Solid Vapor", the first release in
the current stable line).  21.5 is the code base for introduction of
major new subsystems and fixes to design bugs that experience shows will
introduce instability.  So far the main effort has been on improved
support for Unicode, updates to the build infrastructure, and development
of new features in memory allocation.

For general information about XEmacs, the developers, and the user
community, see our home page,


* XEmacs 21.5.35 is "beta" software. 

The usual "no warranty" disclaimer (see etc/COPYING, sections 10 and 11)
applies.  At this point in time, it is the version that most developers
are using for their daily work.  However, it is certain that many bugs
remain and new ones will be introduced as development proceeds.  Be sure
to take care to save your work often and follow a regular backup regime.

* Availability

Anonymous ftp:


See http://www.xemacs.org/Install/ for more information about building
from source.

Also, if you don't have the packages yet, see


Mercurial repository:


This is a read-only Mercurial repository.  To check out XEmacs 21.5.35,
use the command

    hg clone -r r21-5-35 https://foss.heptapod.net/xemacs/xemacs

to create a new Mercurial workspace, or

                        hg pull -u -r r21-5-35

if you already have a local workspace from Mercurial.  To update to the
most recent commits to the official repository, use

                            hg pull -u tip

For more details, see

             http://www.xemacs.org/Develop/hgaccess.html .

Changes in XEmacs 21.5.35 "kohlrabi"

goto announcement, summary, changes

Major Features, Bugfixes, and Backward Incompatible Changes

  • New: Ben Wing's unicode-internal support (Ben Wing)
  • Improve: Reduce needless byte-char conversion, C code (Aidan Kehoe)
  • Improve: Add support for OpenSSL bignum implementation (Jaakko Salomaa)
  • Improve: #'format and friends now much more featured (Aidan Kehoe)
  • Improve: Removed unexec, incremental garbage collector, support for non-system malloc(), support for Win 95/98/ME (Aidan Kehoe)

User-Visible Bug Fixes and Improvements

  • Improve: Help buffer behaviour synced with GNU (Mats Lidell)
  • Improve: Better behaviour with deletion of text and saved window points (Aidan Kehoe)

Build Infrastructure and Source Tree

  • Improve: Use more recent makeinfo(1) if available (Jerry James)
  • Improve: GTK 3.X support when available (Jeff Sparkes)
  • New: TLS support (Jerry James)
  • Improve: Disable ASLR on any system where that is necessary for XEmacs binary (Aidan Kehoe, Mike Sperber, Marcus Crestani)
  • Improve: Use pkg-info if available to determine linked libraries for ncurses (Aidan Kehoe, Mats Lidell)
  • Improve: Run autoupdate on configure.ac, heed its advice (Aidan Kehoe)
  • Improve: Fix broken linker -R flag detection, pkg-config problems, -f* flags inappropriate when linking (Jaakko Salomaa)
  • Improve: Fix PostgreSQL header detection (Jaakko Salomaa)
  • Fix: --with-infopath handling, configure.ac (Jaakko Salomaa)
  • Fix: Canna version detection (Jaakko Salomaa)


  • Improve: Bignum documentation (Jerry James)
  • Improve: Port texi files to Texinfo 5, fix style (Jerry James)
  • Improve: Document #'digit-char-p, #'digit-char, #'parse-integer (Aidan Kehoe)
  • Improve: Add notes about pixel_to_glyph_transation and related code (Mike Kupfer)
  • Improve: Document char-code-limit (Aidan Kehoe)
  • New: Describe the arbitrary-base syntax for rationals (Aidan Kehoe)
  • Improve: Details of extent properties vs string properties (Stephen Turnbull)
  • New: Document extent support in #'format, document #'format-into (Aidan Kehoe)
  • Improve: Move generalised support for duplicable extents to Old Future work (Aidan Kehoe)
  • New: Document the new flags and modifiers, #'format (Aidan Kehoe)
  • New: Document shadowing of lambda list arguments, #'symbol-macrolet. Document the new SHADOW argument for each symbol macro specified. (Aidan Kehoe)
  • New: Document #'string-match-p, #'looking-at-p. (Aidan Kehoe)
  • New: Document that (shift a) is supported as keystroke syntax (Aidan Kehoe)
  • Improve: Remove duplicated info, widget.texi. (Aidan Kehoe, FKtPp, Steven Mitchell)
  • New: Update documentation of #'generate-new-buffer-name (Aidan Kehoe)
  • Improve: Face property documentation (Stephen Turnbull)
  • Improve: Remove mention of non-system malloc() implementations (Aidan Kehoe)
  • Improve: Document algorithmic complexity consideration with #'marker-position (Aidan Kehoe)
  • Improve: Re-encode texi as UTF-8 when appropriate (Aidan Kehoe)
  • New: Document named non-shy groups, limits on interval qualifiers (Aidan Kehoe)
  • New: Document workarounds to avoid compile-time evaluation of (require ...) forms (Aidan Kehoe)
  • New: Document MARKERP argument to #'extent-{start,end}-position (Aidan Kehoe)
  • New: Document underlying implementation of the match data, associated performance and correctness considerations (Aidan Kehoe)
  • New: Document search-error-on-bad-match-data (Aidan Kehoe)
  • New: Document redisplay no longer entered recursively (Aidan Kehoe)
  • New: Document changes to unique stream identifiers (Aidan Kehoe)
  • New: Document changes to profiling implementation (Aidan Kehoe)
  • New: Document removal of support for Windows 95/98/ME systems (Aidan Kehoe)
  • Improve: Remove details of the implementation of the incremental garbage collector; document experience with it and its removal (Aidan Kehoe)
  • Improve: Update the documentation of the dumping process (Aidan Kehoe)
  • Improve: Adjust documentation of the garbage collector to put KKCC in the forefront. (Aidan Kehoe)
  • Improve: Documentation of no need for POSIX-compatible #'looking-at-p, #'string-match-p (Aidan Kehoe)
  • New: Document the OpenSSL bignum driver (Jaakko Salomaa)
  • New: Document the ?z integer length modifier (Aidan Kehoe)
  • Improve: Move display table extensions to Old Future work (Aidan Kehoe)
  • New: Document the -no-configured-paths command line flag (Jaakko Salomaa)
  • Fix: Build error, navigation problems, internals.texi (Henry Thompson)
  • Improve: Deprecate #'string-equal (Aidan Kehoe)
  • Fix: Buggy ASCII art, internals.texi (Aidan Kehoe, Mats Lidell)
  • Improve: Remove deprecated @refill from manual (Aidan Kehoe)

Lisp API

  • Improve: Add optional WHEN and DOCSTRING arguments to #'define-obsolete-function-alias, #'define-compatible-function-alias, #'define-obsolete-variable-alias, #'define-compatible-variable-alias (GNU compatibility) (Stephen Turnbull, Mike Sperber, Jeff Sparkes)
  • New: Add #'font-lock-extend-region-functions' from GNU Emacs, use it (Mike Sperber)
  • New: Add #'write-sequence, API from Common Lisp. (Aidan Kehoe)
  • Improve: Allow optional `docstring' argument to #'define-function, as in GNU Emacs. (Mike Sperber)
  • Fix: #'next-command-event: Only snooze displaying keystrokes if PROMPT is nil (Aidan Kehoe)
  • Fix: #'message and friends: Preserve extent information in prompts. (Aidan Kehoe.)
  • Fix: #'x-store-cutbuffer-internal: No longer crash when passed a non-string STRING argument. (Aidan Kehoe)
  • Fix: #'encode-time: Correct the sign used when calculating the time zone strong. (Marcus Crestani.)
  • New: #'open-network-stream-internal, #'tls-negotiate: Add support for TLS to streams.
  • New: Expose #'parse-integer to Lisp (Aidan Kehoe)
  • Fix: #'event-matches-key-specifier-p: Check keysym and modifiers when on a TTY. (Aidan Kehoe)
  • New: Add support for GNU's help-event-list. (Aidan Kehoe)
  • New: no-character-typed error, used in #'self-insert-command (Aidan Kehoe)
  • New: char-code-limit available (Aidan Kehoe)
  • Fix: #'accept-process-output: Restore the current buffer even on non-local exit (Aidan Kehoe)
  • Fix: #'getenv: Escape quotation marks correctly when interactively showing a variable's value (Aidan Kehoe)
  • New: Add #'clear-string, API From GNU. (Aidan Kehoe)
  • Fix: #'string-to-number: Canonicalise ratios in this function (Aidan Kehoe)
  • Fix: #'logand, #'logior, #'rem, #'lsh: Make errors less misleading (Aidan Kehoe)
  • Improve: #'line-number: Implement using the C implementation of src/line-number.c, improving performance. (Aidan Kehoe)
  • Fix: #'load-internal: Error correctly with a zero-length file name, rather than giving a bus error. (Aidan Kehoe)
  • Fix: #'print and friends: Avoid crashes when STREAM can cause string data relocation. (Aidan Kehoe)
  • Fix: string property lists: Avoid silent corruption of a fixnum stored in a string's property list. (Aidan Kehoe)
  • Fix: #'reduce: avoid a crash with a cons sequence, :from-end nil, and a zero-length range. (Aidan Kehoe)
  • Improve: Move #'concatenate to C, improve the implementation and algorthmic complexity of #'concat. (Aidan Kehoe)
  • New: Provide Common Lisp's #'make-string-output-stream, exposing the existing C resizing_buffer lstream type, and preserving extent information for this. (Aidan Kehoe)
  • Improve: Do not accept non-fixnum number arguments with %c, #'format. (Aidan Kehoe)
  • Improve: Use our integer to string conversion code within #'format, #'number-to-string.
  • Improve: Preserve extent information within #'format.
  • New: Add digit-fixnum-ascii, a version of digit-fixnum-map supporting only the ASCII digits; use this internally. (Aidan Kehoe)
  • Improve: Don't echo mouse wheel events. (Aidan Kehoe.)
  • Improve: Add support for pad characters, h, l, hh, ll modifiers, unsigned modifiers, #'format. (Aidan Kehoe)
  • New: Provide #'format-into, writing the output into a stream. (Aidan Kehoe)
  • Fix: #'substitute-command-keys, preserve extent information (Aidan Kehoe)
  • Fix: Avoid problems in #'mapcon when FUNCTION returns nil. (Aidan Kehoe)
  • Improve: Implement obarray as a proper Lisp hash table. (Aidan Kehoe)
  • Fix: #'normalize-menu-text, avoid corruption of result. (Aidan Kehoe)
  • Improve: Sync the #'run-hook family of functions from GNU. (Aidan Kehoe)
  • New: #'run-hook-wrapped, API imported from GNU. (Aidan Kehoe)
  • Improve: Accept (shift a) as equivalent to (A) when parsing keysyms. (Aidan Kehoe)
  • Fix: Error with (aref STRING (length STRING)) (Aidan Kehoe)
  • New: Add #'with-hash-table-iterator, API from Common Lisp. (Aidan Kehoe)
  • Improve: Increase default gc-cons-threshold to 32 megabytes from 2 megabytes. (Aidan Kehoe)
  • Improve: Sync API for #'generate-new-buffer-name. (Aidan Kehoe)
  • Improve: Standardise the behaviour of #'% within XEmacs, don't rely on quirks of underlying C implementation. (Aidan Kehoe)
  • Improve: Standardise on Lisp characters as the keysym objects across all supported platforms. (Aidan Kehoe)
  • Improve: Return two values in #'user-name-completion, no need for #'user-name-completion-1. (Aidan Kehoe)
  • New: Support named non-shy ("explicitly numbered") groups in regular expressions. (Aidan Kehoe)
  • New: Take up to #xFFFF repetitions when using \{N,M\} regexp repetition syntax (Aidan Kehoe)
  • New: Extend display table handling to take arbitrary format strings. (Aidan Kehoe)
  • Improve: Restrict MINWIDTH, PRECISION field ranges in format strings to #xFFFF. (Aidan Kehoe)
  • Improve: Add a -no-configured-paths option, most useful when building (Jaakko Salomaa)
  • Improve: Deprecate #'string-equal, move it to obsolete.el (Aidan Kehoe)
  • Improve: Add a Latin-script Azeri language environment (Aidan Kehoe)
  • Improve: Avoid errors with misc-user events and isearch-pre-command-hook (Aidan Kehoe)
  • Improve: Warn about non-string, non-integer args to #'gensym (Aidan Kehoe)
  • Improve: Give better backtraces on error at startup (Aidan Kehoe)
  • Improve: Deal better with unparseable Fc font names. (Stephen Turnbull)
  • New: Sync mode-require-final-newline from GNU (Aidan Kehoe)
  • New: Add #'write-string, #'write-line (Aidan Kehoe)
  • Improve: Blinking of parentheses when demonstrating matching parentheses (Aidan Kehoe)
  • New: Respect function-key-map in #'read-char, #'read-char-exclusive, error if no character typed. (Aidan Kehoe)
  • Improve: Remove metadata marking #'keymapp as side-effect free. (Aidan Kehoe)
  • New: #'synthesize-unicode-codepoint, bind it to (control shift u) as specified by ISO 14755. (Aidan Kehoe)
  • Improve: Do not insert timestamps in .elc comments, making builds reproducible. (Jerry James.)
  • New: Transport layer security (TLS) support (Jerry James)
  • Improve: `noerror' optional argument to #'line-move (Michael Sperber.)
  • Improve: Handling of case sensitivity in interactive regular expression search (Aidan Kehoe)
  • Improve: Remove unused code for Mule TTY support. (Aidan Kehoe)
  • New: #'max-char function for GNU compatibility. (Aidan Kehoe)
  • Improve: Avoid using the regexp support for very simple searches. (Aidan Kehoe)
  • Fix: Avoid over-eager deletion of frams, gnuclient (Aidan Kehoe)
  • Improve: Less garbage with the message stack. (Aidan Kehoe)
  • Fix: Give clearer errors with #'check-type and non-setf'able PLACEs (Aidan Kehoe)
  • New: #'logcount, function from Common Lisp. (Aidan Kehoe)
  • Improve: Mark #'integer-length, #'logcount as side-effect free. Avoid allocating memory with #'integer-length (Aidan Kehoe)
  • Improve: Respect load-ignore-out-of-date-elc-files, call #'substitute-in-file-name #'load. (Aidan Kehoe)
  • Improve: Sync functionality from GNU, mwheel.el (Aidan Kehoe)
  • Improve: Avoid use of #'vassoc in core code, move it to packages (Aidan Kehoe)
  • Improve: Warn if interactive spec encountered where arglist expected, bytecomp.el (Aidan Kehoe)
  • Improve: Abbrev tables are now vectors, not hash tables. (Aidan Kehoe)
  • Improve: Add compatibility implementation of traditional emacs obarray, now we use hash tables. (Aidan Kehoe)
  • New: help.el, add support for detecting the current Lisp function if we are in the context of a C file. (Aidan Kehoe)
  • Fix: Shadow symbol macros when the corresponding symbols are encountered in lambda argument lists (Aidan Kehoe)
  • Improve: Rename #'font-menu-change-face to #'font-menu-maybe-change-face, fix a bug in it. (Aidan Kehoe)
  • Improve: FORM does not need to be a cons, #'assert (Aidan Kehoe)
  • New: Merge GNU's :height custom-face-attribute. (Aidan Kehoe)
  • Fix: auto-save-unescape-name, correct the hex parsing (Aidan Kehoe)
  • Improve: Replace calls to #'string-match with calls to #'string-match-p if appropriate. (Aidan Kehoe)
  • Improve: Remove keyboard-type, never used. (Aidan Kehoe)
  • Improve: Case tables generated from UnicodeData.txt (Aidan Kehoe)
  • Improve: Make compose.el available on non-X11 platforms. (Aidan Kehoe)
  • Improve: Allow a numeric offset as the APPEND argument to #'write-region. (Aidan Kehoe)
  • Fix: Make #'key-or-mouse-event-p, #'timeout-or-eval-event-p, #'char-or-event-p available. (Aidan Kehoe)
  • New: Import coding-system-history. Adjust #'read-coding-system to use it and to adjust PROMPT based on default-coding-system. (Aidan Kehoe)
  • New: Import pcase.el from GNU. (Aidan Kehoe)

Internal API and Implementation

  • Fix: Canonicalize some ratios (Jerry James)
  • Fix: Change integer arithmetic to fixnums in check_valid_xbm_inline; adjust test to changed error (Jerry James)
  • Fix: Initialization of bignums from long longs (Jerry James)
  • Fix: Replace AC_FUNC_FSEEKO with HAVE_FSEEKO in config.h.in (Jerry James)
  • Improve: Add mp-specific allocation functions (Jerry James)
  • Improve: Prepare for large file support (Jerry James)
  • Improve: Reimplement #'process-synchronize-point as a label in #'call-process-internal (Aidan Kehoe)
  • Improve: Support for statically linked modules (Jerry James)
  • Improve: Use make_fixnum instead of make_integer where size is known to fit in many places (Jerry James)
  • Improve: Lazy conversion of markers when comparing values in the same buffer, giving performance improvements e.g. with large VM buffers (Aidan Kehoe)
  • Improve: Use skip_ascii() in the no-conversion coding system, speeding up writes of large buffers (Aidan Kehoe)
  • Improve: Pass character count information to the buffer insertion code from the no-conversion and Unicode coding systems, speeding up reads of large files (Aidan Kehoe)
  • Improve: Increase the C buffer size used in #'copy-file, #'insert-file-contents-internal, speeding up these operations (Aidan Kehoe)
  • Improve: Add error handling to the coding conversion code (Jerry James)
  • Improve: Quiet compiler warnings with clang, g++, Visual Studio (Aidan Kehoe, Vin Shelton, Jerry James.)
  • Improve: Be more careful dealing with C's isupper() when calculating the inverse table for Vdigit_fixnum_map (Aidan Kehoe, Vin Shelton.)
  • Improve: Work exclusively in byte positions, extent.c (Aidan Kehoe)
  • Improve: Only provide our max_align_t if the current compiler does not. (Jerry James)
  • Improve: Speed of get_char_table () on builds without optimization (Aidan Kehoe)
  • Improve: print_symbol(), read_atom(): Speed these up significantly, add support for non-ASCII digits (Aidan Kehoe)
  • Fix: Avoid problems with GMP and non-finite C doubles. (Aidan Kehoe)
  • Fix: #'truncate: Avoid bugs with bignums and double_to_integer() (Aidan Kehoe)
  • Improve: encode_unicode_char (): Use U+FFFD unconditionally when we have no information on the Unicode mapping of a character. (Aidan Kehoe)
  • Fix: x_IO_error_handler(): Check for a real error in this, avoiding a crash on OS X. (Stephen Turnbull)
  • Improve: #'save-current-buffer: Docstring changes. (Stephen Turnbull)
  • Fix: Regular expression searching within relocating Lisp buffers. (Aidan Kehoe.)
  • Improve: Create less garbage when reading symbols, lread.c (Aidan Kehoe)
  • Improve: No need for NARGS argument to write_fmt_string_lisp() (Aidan Kehoe)
  • Improve: Give the compiler a chance to do strlen at compile time, write_ascstring () (Aidan Kehoe)
  • Improve: Differentiate between char->byte and byte->char conversion and between external->internal, internal->external conversion when profiling. (Aidan Kehoe)
  • Change: Rename emacs_v?sprintf_malloc* functions to emacs_v?asprintf, analagous to their usual Unix equivalents. (Aidan Kehoe)
  • Improve: Make general functions available to convert between C integers of a specific type and Lisp integers, including bignums. Use this. (Aidan Kehoe)
  • Improve: Move various simple, non-loop hotspot, functions from data.c to subr.el (Aidan Kehoe)
  • Fix: Our integer to string code was buggy with LONG_MIN, fix that. (Aidan Kehoe)
  • New: Merge the unicode-internal branch, providing an ISO10646-compatibile internal format to Mule builds (Ben Wing)
  • Improve: Write to the normal stdio object, stderr_out(), stdout_out(). (Aidan Kehoe)
  • Improve: Drop extensive needless Ibyte -> Ichar conversion, redisplay. (Aidan Kehoe.)
  • Improve: Use make_uninit_vector(), make_uninit_string() in Freverse (Aidan Kehoe)
  • Improve: Implement #'looking-at-p, #'string-match-p in C. (Aidan Kehoe)
  • Improve: Circularity checking with unread-command-events. (Aidan Kehoe)
  • Improve: Circularity and well-formedness checking for external lists, Lisp primitives. (Aidan Kehoe)
  • Fix: Respect SIGNALP in PRIVATE_UNVERIFIED_LIST_LOOP_7(), avoiding problems with circular lists. (Aidan Kehoe)
  • Fix: Correct regexp interval handling code. (Aidan Kehoe, Stephen Turnbull)
  • Fix: Error within read1() if a #@INTEGER docstring comment has an unreasonably large integer. (Aidan Kehoe, Hao Sun.)
  • Fix: Error when passed values that would overflow, Fmake_vector(), Fmake_string(), Fmake_bit_vector(). (Aidan Kehoe)
  • Fix: Avoid stack overflow with recursive specifiers, print_specifier (). (Aidan Kehoe, Raymond Toy)
  • Fix: Avoid tying up XEmacs with error messages when specifier instantiator fails. (Aidan Kehoe)
  • Fix: Take a size_t argument, xemacs_c_alloca, check for overflow. (Aidan Kehoe)
  • Improve: Remove gmalloc.c, which is unmaintained, always use system malloc. (Aidan Kehoe)
  • Improve: Remove use of Eistring malloc buffers, write directly to Lisp streams instead. (Aidan Kehoe)
  • Improve: Use the Lisp hash table infrastructure for the X GC cache, improve algorithm. (Aidan Kehoe)
  • Improve: Fix some leaks in the GTK code. (Aidan Kehoe)
  • Improve: Avoid clobbering documentation for compiled function aliases (Aidan Kehoe)
  • Improve: Use an explicit weak list object for the syntax table, specifier, and weak hash table, avoiding duplicating implementation. (Aidan Kehoe)
  • Improve: Move the weak box implementation to Lisp. (Aidan Kehoe)
  • Improve: Only convert markers to integers when needed to compare them. (Aidan Kehoe)
  • Improve: Reduce unnecessary byte-char conversion costs with markers. (Aidan Kehoe)
  • Improve: Adjust the line numbering code to track buffer byte positions, which is cheaper. (Aidan Kehoe)
  • Improve: Reduce needless byte-char conversion in redisplay (Aidan Kehoe)
  • Improve: Save window points as zero-length extents, not C integers (Aidan Kehoe)
  • Improve: Pay attention to wraparound in buffer modification ticks. (Aidan Kehoe)
  • Improve: Rename byte_marker_position to marker_byte_position for GNU compatibility. (Aidan Kehoe)
  • Fix: Correct type description of dynarr lengths (Aidan Kehoe)
  • Fix: Don't choke on an ill-formed or circular Vprocess_environment (Aidan Kehoe)
  • New: Make qxeGetWindowLongPtr and related functions available to the NT code. (Aidan Kehoe)
  • New: Make write_external_fmt_string_va () availab, allowing a coding system to be specified for string arguments. (Aidan Kehoe)
  • Improve: Use the existing Lisp list infrastructure with struct expose_ignore. (Aidan Kehoe)
  • Improve: Use the existing Lisp list infrastructure with timeouts. (Aidan Kehoe)
  • Fix: Prevent update_syntax_cache(), Fextent_at() from accessing buffer positions outside the accessible region (Alan Mackenzie)
  • Fix: Make Fscan_sexps() respect syntax table properties, terminating quotes (Alan Mackenzie)
  • New: Flag GB_ALLOW_NIL to indicate to return point for buffer positions, get_buffer_pos_{char,byte} (Aidan Kehoe)
  • New: set_marker_byte_position_restricted(), reduce need to convert to character positions. (Aidan Kehoe)
  • Improve: Use Bytebpos values in the line-start cache (Aidan Kehoe)
  • Improve: Make vertical scrollbars function in terms of lines, not buffer positions, with small buffers (Aidan Kehoe)
  • New: Provide a GET_STRSIGNAL() macro, on the model of GET_STRERROR() (Aidan Kehoe)
  • Improve: Get XEmacs building and runnning on 64 bit Cygwin. (Aidan Kehoe)
  • New: get_buffer_pos_both (), reduce needless byte->char conversion with (goto-char MARKER) (Aidan Kehoe)
  • Improve: Mark generated modeline strings as such, respect this when signalling that extents have changed. (Aidan Kehoe)
  • New: Move match subexpression information to being implemented as extents, giving better warnings and more consistent behaviour with #'replace-match. (Aidan Kehoe)
  • Improve: Remove needless byte-char conversion from search.c (Aidan Kehoe)
  • Improve: Rename string ascii_begin field to ascii_end (Aidan Kehoe)
  • Improve: Move window_end_pos[] to being an array of markers. (Aidan Kehoe)
  • Fix: Avoid recursive entry to redisplay, Fwindow_end(). (Aidan Kehoe)
  • Fix: Never return an invalid buffer position, #'event-point, #'event-modeline-position (Aidan Kehoe)
  • Improve: Remove redisplay_text_width_string(), equivalent to redisplay_window_text_width_string(). (Aidan Kehoe)
  • Improve: Drop caching of GCs under GTK. (Aidan Kehoe)
  • Improve: No need for a hash table mapping marshaller types to functions, ui-gtk.c (Aidan Kehoe)
  • Improve: Use weak lists for the window point and saved_window_start caches (Aidan Kehoe)
  • Improve: Use a weak list for the USID to process mapping (Aidan Kehoe)
  • Improve: Move the main profiling hash table to being a Lisp hash table (Aidan Kehoe)
  • Improve: Implement the mswindows_read_link () cache as a normal Lisp hash table. (Aidan Kehoe)
  • Improve: Remove hash.c, hash.h, no longer used. (Aidan Kehoe)
  • Improve: Correct a bug in ALIST_LOOP_4() (Aidan Kehoe)
  • Improve: Remove support for running as a non-Unicode program under Win32. (Aidan Kehoe)
  • Improve: Remove support for the incremental garbage collector, improving stability, speed, memory usage, and mantainability. (Aidan Kehoe)
  • Improve: Remove support for unexec, improving maintainability. (Aidan Kehoe)
  • Improve: Remove support for the old mark algorithm, KKCC is stable and performant (Aidan Kehoe)
  • Improve: Remove support for systems without job control, mkdir or rmdir, imprve maintainability. (Aidan Kehoe)
  • Improve: Don't modify the compiled pattern in re_match_2_internal, avoiding re-entrancy problems. (Aidan Kehoe)
  • Improve: Represent internal register numbers with two bytes rather than one in compiled regular expressions. (Aidan Kehoe)
  • Improve: Move implementation of long-deprecated #'following-char, #'preceding-char to Lisp. (Aidan Kehoe)
  • Improve: Provide access to the OpenSSL bignum implementation, which doesn't have the reliability concerns of GMP (Jaakko Salomaa)
  • Improve: Better error handling with OpenSSL, TLS (Jaakko Salomaa)
  • Fix: Use the z integer length modifier in C code when printing EMACS_INT (Aidan Kehoe)
  • Improve: Implement total_data_usage() in terms of BSD libkvm. (Aidan Kehoe)
  • Improve: Provide formatted printing that doesn't error to the C code. (Aidan Kehoe)
  • Improve: Never return a negative value to Lisp when hashing. (Aidan Kehoe)
  • Improve: Load the Unicode conversion tables as Lisp structures. (Jaakko Salomaa )
  • Improve: Avoid a blinking TTY cursor (Jaakko Salomaa)
  • Fix: Avoid infinite loop in next_previous_single_property_change () (Jaakko Salomaa.)
  • Fix: Avoid calling Fextent_object () on non-live extents, #'delete-window, #'set-window-buffer (Aidan Kehoe, Henry Thompson)
  • Improve: Have the syntax cache, indentation code work in byte positions. (Aidan Kehoe)
  • Improve: Avoid needles byte-char conversion, process.c (Aidan Kehoe)
  • Fix: Avoid crashes with invalid characters in generated modeline strings and error-checking builds. (Aidan Kehoe)
  • Fix: Avoid the AMD64 red zone confusing find_stack_direction (), alloca.c (Aidan Kehoe)
  • Improve: Changes to bring XEmacs closer to building and running on 64-bit Visual Studio. (Aidan Kehoe)
  • Improve: Reduce memory allocation, use of the regexp engine, gnuserv.el (Aidan Kehoe)
  • Improve: Print the stderr of make-docfile to the terminal instead of silently discarding it. (Aidan Kehoe)
  • Improve: Handle vectors better in backquote.el (Aidan Kehoe)
  • Improve: Use #'string-match-p, #'looking-at-p if match data not used (Aidan Kehoe)
  • Improve: Implement #'eval-when in the byte compiler. (Aidan Kehoe)
  • Improve: Remove alist.el from core code. (Aidan Kehoe)
  • Improve: Minimise calls to #'marker-position in the core Lisp code (Aidan Kehoe)
  • Improve: Use #'apply-partially to create closures with lambdas and lexical variables. (Aidan Kehoe)
  • Fix: Save any existing non-default mode-popup-menu correctly, #'easy-menu-remove (Aidan Kehoe)
  • Improve: Generate digit.el from UnicodeData.txt (Aidan Kehoe)
  • Fix: Deal with byte offsets generated by makeinfo(1), info.el (Aidan Kehoe)
  • Improve: Avoid calls to #'following-char, #'preceding-char in core code (Aidan Kehoe)
  • Improve: Avoid lock files when generating finder-inf.el, make parallel builds more likely to work (Aidan Kehoe, Mats Lidell)
  • Improve: Clean up startup path debugging code (Jaakko Salomaa)
  • Improve: Abstract out the list of things to be saved and restored in #'search-push-state (Aidan Kehoe)
  • Fix: Avoid silent wrapping of fill-column, #'do-auto-fill, #'fill-region-as-paragraph. (Aidan Kehoe)
  • Fix: Don't error with anonymous functions, #'display-call-tree. (Aidan Kehoe)

Testing and Debugging

  • Improve: Use print_circle within debug_print() (Jerry James.)
  • New: Test fixnum_to_string with LONG_MIN (Aidan Kehoe)
  • Improve: Process tests (Stephen Turnbull)
  • New: Test require-final-newline, mode-require-final-newline (Mats Lidell)
  • Improve: Only test fontconfig if the font-mgr feature is available (Aidan Kehoe)
  • New: Test #'write-sequence, #'write-string, #'write-line (Aidan Kehoe)
  • New: Test propagation of extent information (Aidan Kehoe)
  • New: Test #'parse-integer, #'digit-char, #'digit-char-p (Aidan Kehoe)
  • New: Test #'substitute (Aidan Kehoe)
  • Improve: Test read and print handling of symbols that look like numbers. (Aidan Kehoe)
  • New: Test character with no Unicode mapping represented as REPLACEMENT CHARACTER, UTF-8 (Aidan Kehoe)
  • New: Test #'integer-length, #'logcount (Aidan Kehoe)
  • New: Superficial tests #'load, #'load-internal (Aidan Kehoe)
  • New: Test #'equalp compiler macro (Aidan Kehoe)
  • New: Check Lisp printer handles relocation of string data OK (Aidan Kehoe)
  • New: Test for insufficient GCPRO in sublis () (Aidan Kehoe)
  • New: Check bug with #'reduce fixed (Aidan Kehoe)
  • New: Test #'make-string-output-stream, #'get-output-stream-string (Aidan Kehoe)
  • New: Test #'format and friends (Aidan Kehoe, Uwe Bonnes, Aneurin Price, Mike McCormack)
  • New: Check no crash with #'decode-time if localtime() returns nil (Aidan Kehoe)
  • New: Check bug in #'mapcon fixed (Aidan Kehoe)
  • New: Check no crash on large number of symbols in an obarray (Aidan Kehoe)
  • New: Test #'normalize-menu-text, #'compare-menu-text (Aidan Kehoe)
  • New: Test #'lexical-let, #'lexical-let* (Aidan Kehoe)
  • New: Test #'string-match-p, #'looking-at-p (Aidan Kehoe)
  • New: Check bug in regexps with backreferences fixed. (Aidan Kehoe)
  • New: Test #'run-hooks and friends (Aidan Kehoe)
  • New: Test #'safe-length (Aidan Kehoe)
  • New: Check special operators GCPRO correctly (Aidan Kehoe)
  • New: Check bugs fixed with intervals in regexps (Aidan Kehoe)
  • New: Test #'auto-save-escape-name, #'auto-save-unescape-name (Aidan Kehoe)
  • New: Test restrictions on ZONE argument to #'encode-time (Aidan Kehoe)
  • New: Test limits on the size of array types (Aidan Kehoe)
  • New: Test the SHADOW argument to #'symbol-macrolet (Aidan Kehoe)
  • New: Check (int-char most-negative-fixnum) gives nil (Aidan Kehoe)
  • New: Check (user-login-name 4294967296) no longer gives "root" (Aidan Kehoe)
  • New: Test simple predicates recently moved to subr.el from data.c; test #'ignore (Aidan Kehoe)
  • Improve: Update checking for search algorithm used to take uppercase Unicode sharp s into account (Aidan Kehoe)
  • New: Check ?\x00 not accepted as a converter character, #'format (Aidan Kehoe)
  • New: Test #'max, #'min, #'< and friends with fixnums and markers (Aidan Kehoe)
  • New: Check #'read doesn't get confused with a marker STREAM and a multibyte buffer. (Aidan Kehoe)
  • New: Test #'car, #'cdr (Aidan Kehoe)
  • New: Test case-insensitive packages (obarrays) (Aidan Kehoe)
  • New: Test named non-shy groups (Aidan Kehoe)
  • New: Test limits of regexp ranges (Aidan Kehoe)
  • New: Check for a bug fixed in #'save-window-start (Aidan Kehoe)
  • New: Check error appropriately with (format "%c" ...), non char-or-char-int-p arguments (Aidan Kehoe)
  • Improve: Tests for #'replace-regexp-in-string (Aidan Kehoe)
  • Improve: Test #'replace-match when stored match data has its start and end positions reversed (Aidan Kehoe)
  • Improve: Naming of bug-hash-table, reproduce-crashes.el (Aidan Kehoe)
  • New: Test bug fixed with display of line numbers in modeline (Aidan Kehoe)
  • New: Check that #'zerop errors with character or marker arguments (Aidan Kehoe)
  • New: Test #'split-char, #'make-char (Aidan Kehoe)
  • New: Test overflow detected with integer parsing code, Lisp reader (Aidan Kehoe)
  • New: Check more than 255 shy groups supported (Aidan Kehoe)
  • New: Test the OpenSSL bignum driver (Jaakko Salomaa)
  • New: Test :error-behavior keyword argument to #'format-into (Aidan Kehoe)
  • New: Test #'apply-partial with lambdas with &rest arguments (Jaakko Salomaa)
  • New: Test get_string_{pos,range}_byte () (Aidan Kehoe)
  • Improve: Call #'test-chars even on unicode-internal builds (Aidan Kehoe)
  • New: Test for a bug in #'byte-optimize-zerop (Aidan Kehoe)

ChangeLogs for XEmacs 21.5.35 "kohlrabi"

goto announcement, summary, changes

ChangeLog Entries from ChangeLog

goto announcement, summary, changes

2023-05-13  Aidan Kehoe  <kehoea@parhasard.net>

        * XEmacs 21.5.35 "kohlrabi" is released.

2022-12-24  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac: Revise Mats' change of 8dac3e59da3f to avoid
        extended regular expressions, not guaranteed to work with sed(1),
        and not necessary.
        Mats' change allowed for patch numbers in makeinfo(1)'s version
        output, as does this.

        * configure: Regenerate.

2022-10-28  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * configure.ac:
        In my previous change, the preprocessor detection of a Canna version
        that uses the CANNA_NEW_WCHAR_AWARE preprocessor define was broken with
        preprocessors that split the result of two tokens in the same line to
        two lines. Use the standard C preprocessor substitution and
        concatenation to make the test robust.

        In operating systems where the standard headers define _WCHAR_T,
        autodetecting Canna's RK.h fails unless CANNA_NEW_WCHAR_AWARE is
        defined. Split the header detection to check the requirement from
        jrkanji.h and then use the result to detect RK.h.

2022-10-25  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * configure.ac:
        Canna detection was attempting to use an environment variable,
        $ac_header_compiler, to deduce the result of simple header checks. It
        might have worked in some previous version of autoconf, but not
        anymore, resulting in the detection being non-functional. Also I'm not
        sure what the check for -DCANNA_NEW_WCHAR_AWARE tried to do, since I
        tested the Canna versions previous to where that flag was introduced,
        and as far as I can tell, the test has never worked. U WOT M8.

        Rewrite the detection. Make configure error out if Canna was requested
        explicitly with --with-canna and detection didn't pan out.

        * configure: Renegerate.

2022-07-31  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * configure.ac:
        $with_infopath was written as $with_info_path, causing the config
        flag --with-infopath to generate an empty define for PATH_INFOPATH
        for src/paths.h. Fix.

        * configure: Renegerate.

2022-07-24  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * configure.ac:
        Remove the check for a Cygwin sscanf() bug. It was encountered by Ben
        Wing in 2004, and is fixed nowadays.

        * configure: Regenerate.

        * Makefile.in.in:
        Tiny change unrelated to the Unicode mapping: Fix the checking of
        test ! -d $${dir} for mkdir $(DESTDIR)$${dir} to
        test ! -d $(DESTDIR)$${dir}.

2022-07-10  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * configure.ac:
        Add detection from Free/Net/OpenBSD libkvm's for the memory usage API.

        Add the POSIXly correct -Wl,-R option to the tested list of compiler-
        to-linker passthrough parameters. Thanks to nbhauke for pointing to

        * configure: Regenerate.

2022-07-08  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * configure.ac:
        Add Solaris >= 10 _XOPEN_SOURCE=600 define so that sys/feature_test.h
        doesn't choke on C99 mode. See
        https://docs.oracle.com/cd/E88353_01/html/E37853/xpg6-7.html for

        Fix /usr/ucbinclude in known include paths, add /usr/sfw/include to

        Improve libmp type detection.

        * configure: Regenerate

2022-06-30  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * configure.ac: Fix the PostgreSQL header detection.
        * configure: Regenerate.

2022-06-19  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * configure.ac:
        Fix the broken linker -R flag detection under BSD.

        Generalize the include directory detection mechanism, broadening the
        FreeType detection while at it.

        Fix a pattern of incorrect "test_command; if test "$?"; then ...; fi"
        usage that made configure quite unreliable.

        Remove the hardcoded pkg-config dependency that caused configure error
        messages and compile errors with the assumption that a non-existent
        pkg config yielded a working "--libs". Make all call sites that
        actually require pkg-config fail-fast autodetection instead of giving
        false positives that crash builds. This also fixes ncurses support in
        systems without pkg-config.

        * configure.ac (XE_PROTECT_LINKER_FLAGS):
        Fix LLVM compilation by making XE_PROTECT_LINKER_FLAGS() recognize
        -f flags for CLANG like -fstack-protector-strong and not pass them to
        the linker with -Xlinker.

        * configure.ac (XE_ADD_TO_LIST):
        New macro, adds an entry if it isn't already in an environment var.

        * configure.ac (XE_TLS_TEST):
        * configure.ac (XE_LOCATE_NSS):
        Revamp completely the TLS detection mechanism so that it now actually
        works with and without pkg-config.

        * configure: Regenerate.

2022-06-16  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac: Don't check for intptr_t, not needed.
        * configure: Regenerate.

2022-05-18  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * configure.ac:
        Add --with-bignum=openssl for the OpenSSL bignum driver.

        * configure: Regenerate.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac:
        We have removed support for the old GC mark algorithms, and so
        --with-kkcc is no longer needed, since it is the default.

        * configure: Regenerate.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac:
        Remove support for unexec from configure.ac, which means no longer
        any need for --with-pdump, it is the default.

        * configure: Regenerate.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac (AC_LANG):
        * configure.ac (XE_COMPLEX_ARG):
        * configure.ac (TAB):
        * configure.ac (CPP_MAKEFILE):
        Run autoupdate on configure.ac, take its advice regarding the lack
        of a need to #define STDC_HEADERS, the lack of a need for a
        RETSIGTYPE #define, the lack of a need for a TIME_WITH_SYS_TIME
        #define that is distinct from HAVE_SYS_TIME_H.
        * configure: Regenerate.

2021-10-23  Aidan Kehoe  <kehoea@parhasard.net>

        * configure: Regenerate.
        * configure.ac (XE_COMPLEX_ARG):
        * configure.ac (TAB):
        Remove support for --with-newgc from this file, it is slower, more
        unstable, and uses more memory than the old GC.

2021-09-09  Aidan Kehoe  <kehoea@parhasard.net>

        * README (Note):
        Update a link in this file, now Bitbucket support for Mercurial is
        no longer extant.  Thank you J Lewis Muir on Heptapod!

2021-01-01  Henry S. Thompson  <ht@home.hst.name>

        * configure.ac: make explicit --with-ncurses work again
        --with-ncurses stopped working as a result of the 2020-03-29
        change that made it unnecessary, fixed.
        * configure: Regenerate.

2020-11-25  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac: Check for strsignal().
        Only in its absence check for sys_siglist, which recent glibc no
        longer provides given its lack of thread safety.
        * configure: Regenerate.

2020-03-29  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac:
        Use pkg-info if available to determine the linked libraries
        necessary for ncurses, thank you Mats Lidell.
        * configure: Regenerate.

2018-11-01  Jerry James  <james@xemacs.org>

        * configure.ac: OPENSSL_init_crypto is gone; check for
        OPENSSL_init_ssl instead.
        * configure: Regenerate.

2018-04-10  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac (TAB):
        No longer check for wcwidth().

2017-11-23  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac:
        Don't just take the first link-time option to disable ASLR that
        links, check that it actually disables ASLR (in the same way we
        checked for ASLR in the first place) before choosing it. Thank
        you for the bug report, Stephen Turnbull.
        * configure: Regenerate.

2017-11-23  Stephen J. Turnbull  <stephen@xemacs.org>

        * configure.ac (Disable ASLR): Output $no_pie in AC_MSG_RESULT.
        * configure: Regenerate.

2017-11-23  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac (XE_COMPLEX_ARG):
        Make a HAVE_GLIBC #define available, turns out autoconf is too
        enthusiastic about _GNU_SOURCE, #defining it even on non-glibc

        Accept MAP_ANON, a BSDism, as an alias for MAP_ANONYMOUS here.
        Be careful not to redefine an existing definition for MAP_ANONYMOUS
        Remove a caddr_t variable, this type is long obsolete and the
        variable was unused.
        * configure: Regenerate.

2017-11-23  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac (XE_COMPLEX_ARG):
        Remove gmalloc.c, remove the configure line options
        --with-dlmalloc, --with-system-malloc, --with-debug-malloc. Always
        use the system malloc. Autodetect __after_morecore_hook, use it
        for our memory-full warning if available, otherwise ignore it.
        Use mcheck.h if ERROR_CHECK_MALLOC is defined, as we had planned
        for years pending its maturity.
        * configure.ac (have_libmcheck): Make this available.
        * configure: Regenerate.        

2017-11-15  Aidan Kehoe  <kehoea@parhasard.net>

        * configure: Regenerate.
        * configure.ac:
        Take a more general approach to checking for ASLR; check for the
        technique itself initially, don't just examine the operating
        system or the compile-time #defines. Then to work around it try a
        list of techniques, using the first one that compiles.

        This may bring an end to the XEmacs tradition of a single-line
        configure.ac commit every time a new Mac OS version is released.

2017-11-14  Aidan Kehoe  <kehoea@parhasard.net>

        * configure: Regenerate.
        * configure.ac:
        Detect and disable ASLR on Linux as well as on Darwin, it doesn't
        work with our approach to dumping.
        Limit this to the main xemacs binary, not movemail, gnuclient and so

2017-11-07  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac (XE_COMPLEX_ARG):
        Document that we default to the system malloc.
        * configure.ac:
        Implement this. Use src/gmalloc.c if --with-system-malloc=no was
        supplied, otherwise use the system malloc.
        Document that the right next step is to remove src/gmalloc.c, and
        to use __after_morecore_hook and malloc_set_state if those are
        available in the system malloc, not otherwise.
        * configure:

2017-03-13  Aidan Kehoe  <kehoea@parhasard.net>

        * ChangeLog:
        Update mid.gmane.org to mid.xemacs.org. We miss you, Gmane.

2016-12-27  Aidan Kehoe  <kehoea@parhasard.net>

        * configure:
        Regenerate for the GTK branch.

2017-01-23  Jeff Sparkes  <jsparkes@gmail.com>

        * configure.ac (HAVE_XFACE): giflib 5.0 removed a function we
        were checking for.
        * configure: Rebuild.

2017-03-15  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac:
        Don't #define _BSD_SOURCE or _SVID_SOURCE on glibc, even if xmkmf
        asks us to. Silences a warning on Linux. Thank you Mats Lidell.
        * configure: Regenerate.

2016-11-05  Michael Sperber  <mike@xemacs.org>

        * configure.ac: Disable ASLR on macOS Sierra..
        * configure: Rebuild.

2016-10-13  Jerry James  <james@xemacs.org>

        * configure.ac: Fix OpenSSL detection for versions >= 1.1.0.
        * configure: Regenerate.

2016-09-26  Aidan Kehoe  <kehoea@parhasard.net>

        * src/doprnt.c (doprnt_2): Increase the complexity of this
        function, handle flags as appropriate for rationals (not just
        strings). We don't take rationals as arguments just yet, this is
        an incremental change.

2015-10-28  Marcus Crestani  <crestani@xemacs.org>

        * configure.ac: Disable ASLR on El Capitan.
        * configure: Rebuild.

2015-05-05  Stephen J. Turnbull  <stephen@xemacs.org>

        * configure.ac (Installation): Report all compiler switches.
        * configure: Regenerate.

2015-05-05  Stephen J. Turnbull  <stephen@xemacs.org>

        * configure.ac (XE_EXPAND_VARIABLE):
        Collect with other macro definitions.
        * configure: Regenerate.

2015-05-05  Stephen J. Turnbull  <stephen@xemacs.org>

        * configure.ac (PostgreSQL): Fix shell syntax error.
        * configure: Regenerate.

2015-05-04  Stephen J. Turnbull  <stephen@xemacs.org>

        * configure.ac (PostgreSQL): Allow specification of subdir.
        Add most recent versioned directories for multiversion
        installations (eg, MacPorts.
        * configure: Regenerate.

2015-04-09  Aidan Kehoe  <kehoea@parhasard.net>

        * configure.ac:
        If X509_check_host() is available, check the number of arguments
        it takes. Don't use it if it takes any number of arguments other
        than five. Also don't use it if <openssl/x509v3.h> does not
        declare it, since if that is so there is no portable way to tell
        how many arguments it should take, and so we would end up smashing
        the stack.
        * configure: Regenerate.

2015-03-26  Vin Shelton  <acs@xemacs.org>

        * configure.ac: Recognize and support 64-bit cygwin, thanks to
        Henry S. Thompson  <ht@inf.ed.ac.uk>.
        * configure: Regenerated.

2015-02-28  Mike Kupfer  <mike.kupfer@xemacs.org>

        * README: fix note about which Bitbucket repository to push to.

2015-03-19  Stephen J. Turnbull  <stephen@xemacs.org>

        * configure.ac (TLS): Prevent unintended fall-through to OpenSSL.
        * configure: Rebuild.

2015-01-11  Stephen J. Turnbull  <stephen@xemacs.org>

        * configure.ac (Xft): Remove dupes from pkg-config --cflags.

2015-01-10  Stephen J. Turnbull  <stephen@xemacs.org>

        * configure.ac (Postgresql): Improve Installation text.
        * configure: Rebuild.

2015-01-08  Stephen J. Turnbull  <stephen@xemacs.org>

        Fix progress bar crashes.
        Thanks to Ralf Soergel for diagnosis and a patch.

        * configure.ac (Athena widgets):
        Test for "international" resource in SimpleWidgetClass in libXaw3d.
        * configure: Rebuild.

2014-12-20  Jeff Sparkes  <jsparkes@gmail.com>

        * configure.ac: Remove obsolete gdk_imlib check.

2014-11-09  Jeff Sparkes  <jsparkes@gmail.com>

        * configure.ac (HAVE_GNUTLS): Add SSL/TLS libraries to $LIBS, not

2014-10-10  Marcus Crestani  <crestani@xemacs.org>

        * configure.ac: Disable ASLR on Yosemite.
        * configure: Rebuild.

2014-10-09  Jerry James  <james@xemacs.org>

        * configure.ac: Check for TLS headers as well as libraries.

2014-10-07  Jerry James  <james@xemacs.org>

        * configure.ac: Add TLS support.

2014-02-11  Jerry James  <james@xemacs.org>

        * .hgignore: Add man/Makefile.

2013-11-19  Jeff Sparkes  <jsparkes@gmail.com>

        * configure.ac: Add support for --with-gtk=2 and --with-gtk=3 to
        build with a specific major version.
        * configure: Regenerate.

2013-11-15  Jeff Sparkes  <jsparkes@gmail.com>

        * configure.ac: Output exact GTK version.
        Simplify version checking code.
        Check for GTK 3.X first, then 2.X.
        (HAVE_GTK2): Remove incorrect second setting.
        * configure: Regenerate.

2013-10-28  Marcus Crestani  <crestani@xemacs.org>

        * configure.ac: Disable ASLR on Mavericks.
        * configure: Rebuild.

2013-09-15  Jeff Sparkes  <jsparkes@gmail.com>

        * configure.ac: Force -lX11 for GTK to link XKeycodeToKeysym.
        * configure: Regenerate.

2013-09-08  Marcus Crestani  <crestani@xemacs.org>

        * configure.ac: x86_64 Macs also use POSIX virtual-dirty-bit write
        * configure: Rebuild.

2013-07-28  Stephen J. Turnbull  <stephen@xemacs.org>

        * configure.ac (makeinfo):
        Use basic regexp.  Avoid autoconf errors on empty version strings.
        Report version found if insufficient.  Lightly tested.

2013-06-25  Jerry James  <james@xemacs.org>

        * INSTALL: Update required makeinfo version.
        * Makefile.in.in: Check for usable makeinfo before invoking submake.
        * configure.ac: Try to find makeinfo >= 4.12.

2013-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.35 "kohlrabi" is released.

2013-06-17  Jerry James  <james@xemacs.org>

	* configure.ac: Support bignums with MPIR.

2013-06-17  Jerry James  <james@xemacs.org>

	* configure.ac: Add check for mp_set_memory_functions.

2013-03-12  Jerry James  <james@xemacs.org>

	* config.guess: Update to latest upstream version.
	* config.sub: Ditto.
	* install-sh: Ditto.

2013-03-04  Jerry James  <james@xemacs.org>

	* configure.ac: Check for large file support.

2013-03-04  Jerry James  <james@xemacs.org>

	* configure.ac: Complete removal of need_modules_common, forgotten
	in the previous patch.

2013-03-02  Jerry James  <james@xemacs.org>

	* configure.ac: Make symbolic links in src for module source files
	if they are built into the executable, so they are built with the
	same CFLAGS as the non-module source files.

ChangeLog Entries from etc/ChangeLog

goto announcement, summary, changes

2023-05-13  Aidan Kehoe  <kehoea@parhasard.net>

        * XEmacs 21.5.35 "kohlrabi" is released.

2022-10-24  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * Emacs.ad:
        Specify the resolution_x and resolution_y fields for the default
        fonts that have 75 and 100 DPI versions in the X.org base distribution
        to prioritize the 75 DPI versions.

2017-09-30  Aidan Kehoe  <kehoea@parhasard.net>

        * HELLO:
        Encode the IPA using ISO-IR 196 rather than our proprietary
        charset, which we dropped in the process of merging the
        unicode-internal support.

2017-03-13  Aidan Kehoe  <kehoea@parhasard.net>

        * unicode/unicode-consortium/EASTASIA/OBSOLETE/BIG5.TXT:
        Update mid.gmane.org to mid.xemacs.org. We miss you, Gmane.

2015-01-25  Jeff Sparkes  <jsparkes@gmail.com>

        * xemacs.css: CSS styling file for Gtk 3.0.

2014-12-05  Jerry James  <james@xemacs.org>

        * xemacs.appdata.xml:
        * xemacs.desktop:
        * xemacs-icon.svg: New files for distribution packaging.

ChangeLog Entries from lib-src/ChangeLog

goto announcement, summary, changes

2023-05-13  Aidan Kehoe  <kehoea@parhasard.net>

        * XEmacs 21.5.35 "kohlrabi" is released.

2023-04-06  Aidan Kehoe  <kehoea@parhasard.net>

        * make-mswin-unicode.pl:
        The W32API headers have some preprocessor directives that end up
        matched by $rettype_re, remove them before further processing.

2022-07-15  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * Makefile.in.in:
        Change the installation of scripts to use the command in the
        INSTALL_SCRIPT variable. This fixes attempting to install the script
        files with install(1)'s -s flag and failing because strip(1) doesn't
        work with shell scripts.

2022-06-19  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * fakemail.c (cuserid): Fix FreeBSD compile.

2021-11-29  Aidan Kehoe  <kehoea@parhasard.net>

        * gnuclient.c (filename_expand):
        * winclient.c (doFile):
        * winclient.c (parseCommandLine):
        Fix some types, silence some unused-variable warnings in these
        files for the sake of clang++-8.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

        * etags.c:
        * fakemail.c:
        * hexl.c:
        * ootags.c:
        No longer check for STDC_HEADERS in these files, pre-C89 compilers
        are long obsolete.

2021-10-20  Aidan Kehoe  <kehoea@parhasard.net>

        * make-mswin-unicode.pl:
        Revise this now we have removed support for Win95/98/Me; generate
        the Unicode encapsulated code as inline headers that no longer
        check at runtime whether the Unicode versions of the functions
        should be called. No longer generate intl-auto-encap.c.
        Revise the file to better deal with the Cygwin headers and types,
        in a way that is compatible with Visual Studio 8.

2021-09-09  Aidan Kehoe  <kehoea@parhasard.net>

        * gnuserv.c (handle_unix_request):
        Update a link to a specific changeset on Heptapod here, now
        Bitbucket's Mercurial support is dead.

2020-03-17  Aidan Kehoe  <kehoea@parhasard.net>

        * gnuclient.c:
        * gnuclient.c (filename_expand):
        * gnuclient.c (clean_string):
        cygwin_conv_to_posix_path() has been removed, use
        cygwin_conv_path() instead.

2019-03-21  Jerry James  <james@xemacs.org>

        * pop.c: Prevent potential buffer overflows.  The size argument to
        strncat() must be at most 1 less than the buffer size, to leave room
        for the terminating null byte.  See strncat(3).

2018-04-27  Aidan Kehoe  <kehoea@parhasard.net>

        * make-case-conv.py:
        Remove this file, replaced by lisp/mule/make-case-conv.el

2017-11-09  Aidan Kehoe  <kehoea@parhasard.net>

        * make-case-conv.py:
        Document why this file's approach didn't work. Slot it for deletion.

2017-09-24  Aidan Kehoe  <kehoea@parhasard.net>

        * b2m.c (main):
        * etags.c:
        * etags.c (just_read_file):
        * movemail.c (main):
        * ootags.c (just_read_file):
        Silence a few compiler warnings in these files.

2017-03-15  Aidan Kehoe  <kehoea@parhasard.net>

        * make-docfile.c (scan_lisp_file):
        Don't wrap the integer counter when reading the length of a #@
        comment. Thank you for the tracker bug report, Hao Sun in tracker
        issue 870!

2015-03-08  Aidan Kehoe  <kehoea@parhasard.net>

        * gnuserv.c (echo_request):
        No longer close the file handle unconditionally, leave this to the
        individual socket types.
        * gnuserv.c (handle_internet_request):
        Close the file handle here.
        * gnuserv.c (handle_unix_request):
        Don't close the file handle here, document why (it broke gnuclient
        under OS X). It should actually be OK, but my suspicion is that
        the issues is that the Unix (local) domain sockets are still
        underdocumented compared to the internet sockets.

2014-12-05  Jerry James  <james@xemacs.org>

        * gnuserv.c (echo_request): close the socket when done
        (handle_unix_request): do not call echo_request on accept failure

2014-12-05  Jerry James  <james@xemacs.org>

        * pop.c (socket_connection): Do not leak a socket if the POP
        server's address cannot be determined.

2014-10-18  Aidan Kehoe  <kehoea@parhasard.net>

        * ootags.c (substitute):
        Cast the result of strlen to int before comparing it with a signed
        value, for the sake of compiler warnings.

ChangeLog Entries from lisp/ChangeLog

goto announcement, summary, changes

2023-05-13  Aidan Kehoe  <kehoea@parhasard.net>

        * XEmacs 21.5.35 "kohlrabi" is released.

2023-05-08  Aidan Kehoe  <kehoea@parhasard.net>

        * byte-optimize.el (byte-optimize-zerop):
        Don't use #'byte-optimize-zerop incorrectly in this function, use
        #'cl-safe-expr-p instead, which also checks that subforms do not
        have side effects.
        * byte-optimize.el (byte-optimize-side-effect-free-p):
        Add a docstring to this function, all going well preventing the
        above bug going forward.

2023-04-16  Aidan Kehoe  <kehoea@parhasard.net>

        * mule/compiled-unicode-tables.el (unicode-ignore-first-column):
        * mule/compiled-unicode-tables.el (harvest-unicode-files):
        * mule/compiled-unicode-tables.el (search-for-unicode-path-strings):
        * mule/compiled-unicode-tables.el (match-all-unicode-files):
        Revise these functions to respect directory-sep-char,
        necessary for building for win32-native.

2023-01-29  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el (display-call-tree):
        Don't error within this when dealing with anonymous functions.

2022-12-24  Aidan Kehoe  <kehoea@parhasard.net>

        * info.el (Info-find-file-node):
        Info-tag-table-marker is buffer-local, and we need to
        #'set-marker on the value in the original buffer, not the tag
        table buffer. Avoid error with C-u F1 i ../info/lispref.info RET
        with this change.

2022-12-18  Aidan Kehoe  <kehoea@parhasard.net>

        * compat.el:
        * diagnose.el:
        * dialog-gtk.el:
        * dialog-items.el:
        * dump-paths.el:
        * font-menu.el:
        * font.el:
        * gdk.el:
        * generic-widgets.el:
        * glade.el:
        * gnome-widgets.el:
        * gnome.el:
        * gpm.el:
        * gtk-compose.el:
        * gtk-extra.el:
        * gtk-faces.el:
        * gtk-ffi.el:
        * gtk-file-dialog.el:
        * gtk-init.el:
        * gtk-mouse.el:
        * gtk-package.el:
        * gtk-password-dialog.el:
        * gtk-select.el:
        * gtk-widget-accessors.el:
        * gtk-widgets.el:
        * gtk.el:
        * gutter.el:
        * hash-table.el:
        * help-macro.el:
        * itimer.el:
        * loadup-el.el:
        * msw-faces.el:
        * msw-init.el:
        * msw-select.el:
        * mule/compiled-unicode-tables.el:
        * mule/general-early.el:
        * mule/iso-with-esc.el:
        * mule/kinsoku.el:
        * mule/mule-category.el:
        * mule/mule-coding.el:
        * mule/mule-composite-stub.el:
        * mule/mule-msw-init-late.el:
        * mule/mule-win32-init.el:
        * mule/windows.el:
        * next-error.el:
        * occur.el:
        * package-net.el:
        * post-gc.el:
        * printer.el:
        * raw-process.el:
        * resize-minibuffer.el:
        * term/bobcat.el:
        * term/cygwin.el:
        * term/linux.el:
        * term/scoansi.el:
        * term/tvi970.el:
        * term/vt102.el:
        * term/vt125.el:
        * term/vt200.el:
        * term/vt201.el:
        * term/vt220.el:
        * term/vt240.el:
        * term/vt300.el:
        * term/vt320.el:
        * term/vt400.el:
        * term/vt420.el:
        * unicode.el:
        * widgets-gtk.el:
        Add missing ";;; FILE.el ends here" lines at the end of all these
        Lisp files, a good practice that I want to encourage.

2022-11-06  Aidan Kehoe  <kehoea@parhasard.net>

        * info.el (Info-find-file-node):
        Avoid provoking a warning when calling #'match-end in a buffer
        that is distinct from the current-buffer at the time of
        #'looking-at, something usually suggestive of a bug but actually
        OK in this context.

2022-11-04  Aidan Kehoe  <kehoea@parhasard.net>

        * fill.el (fill-region-as-paragraph):
        * simple.el (do-auto-fill):
        If fill-column is most-positive-fixnum, (1+ fill-column) can be
        negative on non-bignum builds. Avoid passing this negative number
        to #'move-to-column when filling.

2022-08-31  Aidan Kehoe  <kehoea@parhasard.net>

        * files.el (set-auto-mode):
        Use #'file-system-ignore-case-p now it is available. Remove a
        comment from 2000 basically regretting that it was not available.
        Switch to #'string-match-p throughout this function in passing,
        reducing match data conflicts.

2022-08-31  Aidan Kehoe  <kehoea@parhasard.net>

        * files.el (file-relative-name): 
        Correct a bug introduced into this function by the last commit,
        the length of the filename examined by #'mismatch should be at
        most two.
        Compare using #'equalp in passing for case-insensitivity,
        appropriate for drive letters under Windows.

2022-08-29  Aidan Kehoe  <kehoea@parhasard.net>

        Deprecate #'string-equal, #'string-equal-ignore-case, encourage
        use of #'equal, #'equalp instead, with or without the caller's own
        type checking. Some small other changes in passing.

        * build-report.el (build-report-make-output-get):
        Revise this slightly, (eql (length build-report-make-output-dir)
        0) is equivalent to checking it against "" and nil.     

        * byte-optimize.el:
        * byte-optimize.el (byte-compile-side-effect-free-ops):
        Remove the optimizers from #'string=, #'string-equal, now they are
        marked as GNU Emacs compatible and deprecated for other uses.

        * bytecomp.el:
        * bytecomp.el (152): Keep the byte-defop of byte-string= for the
        sake of the disassembler.
        Comment out the corresponding byte-defop-compiler statements.

        * cmdloop.el (yes-or-no-p-minibuf):
        Use #'canoncase rather than #'downcase, as is more correct for
        this use case.

        * dragdrop.el (experimental-dragdrop-drop-mime-default):
        Switch from string= to equal in this function, as is done
        elsewhere in this changeset.
        * dragdrop.el (dragdrop-is-some-url):
        Revise the checking that we correspond to some METHOD to avoid
        #'string-equal and to use a CL function that doesn't allocate
        dynamic memory.
        * find-paths.el:
        * find-paths.el (paths-decode-directory-path):
        Be a bit more sensible in this function, use #'mapcan instead of
        (delete "" (mapcar ...)), switch to #'equal instead of

        * files.el (kill-some-buffers):
        Make this a bit more idiomatic, use #'dolist, avoid #'string-equal.

        * obsolete.el:
        * obsolete.el (string-equal): New.
        * obsolete.el (string-equal-ignore-case): New.
        Move the implementation of these functions here from fns.c.
        * obsolete.el (canonicalize-string-equal-argument): New. Used by
        the implementation of the above.

        * replace.el (perform-replace):
        Switch to #'canoncase from #'downcase in this function, which is
        more appropriate for this use case.

        * shadow.el (find-emacs-lisp-shadows):
        Use #'file-name-sans-extension instead of re-implementing it.

        * subr.el (string-equal-ignore-case): Removed.
        * subr.el ('string=): Removed.
        Move these to obsolete.el

        * x-font-menu.el:
        * x-font-menu.el (x-font-menu-load-font-core):
        Make this a bit more idiomatic, #'return-from the function rather
        than using #'catch, 

        * x-init.el (x-initialize-keyboard):
        Use #'string-match-p in this function given the match data are not
        * abbrev.el (define-abbrev):
        * autoload.el (generate-autoload-type-section):
        * autoload.el (update-file-autoloads):
        * autoload.el (update-autoload-files):
        * cus-edit.el (customize-set-value):
        * cus-edit.el (customize-set-variable):
        * cus-edit.el (customize-save-variable):
        * cus-edit.el (customize):
        * cus-edit.el (customize-other-window):
        * cus-edit.el (custom-browse-insert-prefix):
        * cus-file.el:
        * cus-file.el (make-custom-file-name):
        * etags.el (visit-tags-table):
        * etags.el (complete-symbol):
        * etags.el (display-tag-info):
        * files.el (create-file-buffer):
        * files.el (find-buffer-visiting):
        * files.el (find-file-noselect):
        * files.el (set-visited-file-name):
        * files.el (write-file):
        * files.el (file-relative-name):
        * files.el (delete-auto-save-file-if-necessary):
        * files.el (file-newest-backup):
        * files.el (rename-uniquely):
        * files.el (rename-auto-save-file):
        * fill.el (maybe-adapt-fill-prefix):
        * fill.el (fill-region-as-paragraph):
        * fill.el (justify-current-line):
        * fill.el (unjustify-current-line):
        * font-menu.el (font-menu-family-constructor):
        * font-menu.el (font-menu-weight-constructor):
        * font.el (font-spatial-to-canonical):
        * font.el (x-font-create-object):
        * gtk-faces.el (gtk-convert-font-slant-from-xlfd):
        * gtk-faces.el (gtk-convert-font-size-from-xlfd):
        * gtk-ffi.el (gtk-ffi-check-function):
        * gtk-font-menu.el (gtk-reset-device-font-menus):
        * gtk-font-menu.el (gtk-font-menu-load-font):
        * gtk-marshal.el (define-marshaller):
        * hyper-apropos.el (hyper-apropos):
        * indent.el (beginning-of-line-text):
        * info.el (Info-find-file-node):
        * info.el (Info-follow-reference):
        * info.el (Info-menu):
        * isearch-mode.el (isearch-update-ring):
        * ldap.el (ldap-decode-boolean):
        * lisp.el (lisp-complete-symbol):
        * list-mode.el (choose-completion-delete-max-match):
        * make-docfile.el (done):
        * minibuf.el (defun):
        * minibuf.el (minibuffer-do-completion-1):
        * minibuf.el (minibuffer-do-completion):
        * minibuf.el (completing-read):
        * minibuf.el (exit-minibuffer):
        * minibuf.el (read-file-name-internal):
        * minibuf.el (append-expand-filename):
        * msw-font-menu.el (mswindows-font-menu-load-font):
        * mule/ethio-util.el (ethio-tilde-escape):
        * mule/ethio-util.el (ethio-flag-to-language):
        * mule/ethio-util.el (i):
        * mule/korea-util.el (quail-hangul-switch-symbol-ksc):
        * mule/mule-cmds.el (activate-input-method):
        * mule/mule-cmds.el (inactivate-input-method):
        * mule/mule-cmds.el (describe-language-environment):
        * newcomment.el (comment-normalize-vars):
        * newcomment.el (comment-quote-nested):
        * newcomment.el (comment-padright):
        * newcomment.el (comment-padleft):
        * newcomment.el (comment-region-internal):
        * newcomment.el (comment-region):
        * newcomment.el (comment-dwim):
        * newcomment.el (comment-auto-fill-only-comments):
        * occur.el (multi-occur):
        * package-admin.el (package-admin-find-top-directory):
        * package-get.el (package-get-interactive-package-query):
        * package-get.el (package-get):
        * package-get.el (package-get-info-version):
        * package-get.el (package-get-info-prop):
        * packages.el (packages-split-path):
        * regexp-opt.el (regexp-opt-charset):
        * regexp-opt.el (regexp-opt):
        * simple.el:
        * simple.el (delete-indentation):
        * simple.el (interprogram-paste-function):
        * startup.el (command-line-early):
        * startup.el (load-user-init-file):
        * startup.el (command-line-1):
        * startup.el (splash-screen-window-body):
        * subr.el (insert-face):
        * view-less.el (view-search-forward):
        * view-less.el (view-search-backward):
        * wid-edit.el (widget-prompt-spaceify):
        * wid-edit.el (widget-checklist-prompt-value):
        * wid-edit.el (widget-file-complete):
        * wid-edit.el (widget-color-complete):
        * x-faces.el (x-color-list-internal):
        * x-font-menu.el (x-reset-device-font-menus-core):
        Mechanically change from #'string-equal to #'equal in these files.
2022-08-19  Aidan Kehoe  <kehoea@parhasard.net>

        * isearch-mode.el (isearch-fix-case):
        * isearch-mode.el (isearch-complete1):
        Small changes to modernize this code; call #'string-match-p
        instead of wrapping #'string-match with #'save-match-data, no need
        to cons up an alist to pass to #'try-completion, the latter now
        accepts lists of strings without problems.

2022-08-02  Aidan Kehoe  <kehoea@parhasard.net>

        Abstract out the list of things to be saved and restored in
        #'isearch-push-state, using #'macrolet and #'setf.
        * isearch-mode.el:
        * isearch-mode.el (isearch-state-places): New. Symbol macro
        expanding to a list of those PLACEs to be manipulated for the
        isearch state stack.
        * isearch-mode.el (isearch-setf-state-places): New. Macro using
        isearch-state-places, for use in isearch-top-state.
        * isearch-mode.el (isearch-make-state-object): New. Macro using
        isearch-state-places, for use in isearch-push-state.

        * isearch-mode.el (isearch-top-state): Move within the
        #'macrolet. Use #'isearch-setf-state-places.
        * isearch-mode.el (isearch-pop-state): Move within the #'macrolet.
        * isearch-mode.el (isearch-push-state): Move within the #'macrolet.

2022-08-04  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * setup-paths.el (paths-emacs-root-p):
        * setup-paths.el (paths-find-emacs-roots):
        * setup-paths.el (paths-find-site-lisp-directory):
        * setup-paths.el (paths-find-site-module-directory):
        * setup-paths.el (paths-find-lisp-directory):
        * setup-paths.el (paths-find-mule-lisp-directory):
        * setup-paths.el (paths-find-module-directory):
        * setup-paths.el (paths-construct-info-path):
        * setup-paths.el (paths-find-doc-directory):
        * setup-paths.el (paths-find-exec-directory):
        * setup-paths.el (paths-find-data-directory):
        * setup-paths.el (paths-construct-data-directory-list):
        Make all of these functions respect the -no-configured-paths command
        line flag and disregard the configured and built in paths.

        * startup.el (command-line-do-help):
        Document -no-configured-paths in the command line help text.

2022-08-03  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * startup.el (startup-setup-paths):
        Clean up the path debugging code by replacing all clunky
        ([if/when] debug-paths (princ (format "...))) invocations with code

        * startup.el (startup-setup-paths-debug-vars):
        ...this new macro that prints variable names and values one per line
        in "variable name: variable value" format.

        The debugging output changes a little, splitting the "this-var and
        that-var\nvalue of this-var\nvalue of that-var\n" messages to easier
        to read multiple lines that all start with the name of the variable.

        * startup.el (startup-setup-paths-debug-dump-info):
        * startup.el (startup-setup-paths-missing-emacs-roots-warning):
        ...and these functions that move the error and debug messaging wholly
        out of #'startup-setup-paths.

        Print a newline after the "Couldn't find an obvious default for the
        root of the XEmacs hierarchy." message.

2022-07-29  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * mule/compiled-unicode-tables.el:
        Use #'push instead of open coding with #'setq and #'cons.

2022-07-28  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * cl-macs.el (apply-partially):
        Fix support for &rest lambdas.

        * subr.el (apply-partially):
        Use #'list* instead of #'list and #'append.

2022-07-24  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * mule/compiled-unicode-tables.el:
        A new mechanism for packing the used Unicode translation tables from
        etc/unicode to a compiled .elc.

        At compile time, harvest from the Lisp codebase all files that could
        possibly be used in etc/unicode, dump them with
        unicode.c:Fdump_unicode_mapping_table() and create a search table out
        of them. unicode.c:Fload_unicode_mapping_table() will then call this
        file's #'set-compiled-unicode-file-search-table to make the compiled
        data available to it.

        * unicode.el:
        * mule/latin.el:
        * mule/mule-charset.el:
        The mapping files under etc/unicode/unicode-consortium/ISO8859 were
        renamed to make their filenames unambiguous for the Unicode table
        compiler. Change these files to reflect that.

2022-07-25  Aidan Kehoe  <kehoea@parhasard.net>

        * wid-edit.el (widget-sublist): Removed. Equivalent to #'subseq,
        but less general.
        * wid-edit.el (widget-remove-if): Removed.
        Usually equivalent to #'remove-if, always equivalent to (delete-if
        PREDICATE (copy-sequence LIST)), not used in the XEmacs packages,
        no indication to keep it.
        * wid-edit.el (widget-item-match-inline): Adjust this not to use
        widget-sublist, and to cons a little less.      

2022-07-23  Aidan Kehoe  <kehoea@parhasard.net>

        * pcase.el (pcase--u1):
        Suppress a warning about an unused variable bound by
        #'destructuring-bind, by not binding it and modifying EXPR

2022-07-23  Aidan Kehoe  <kehoea@parhasard.net>

        * pcase.el: New. Imported from GNU, a version before the
        introduction of lexical binding there.
        The reasoning to put it here rather than xemacs-base is that it is
        completely routine for the GNU Emacs core code to use these
        macros, and as we synch our core files going forward we will need
        to have it available.
        The following relevant ChangeLog entries are taken from GNU's

    2011-02-28  Juanma Barranquero  <lekktu@gmail.com>

        * emacs-lisp/pcase.el (pcase, pcase--u1, pcase--q1):
        Fix typos in docstrings.

    2011-02-27  Stefan Monnier  <monnier@iro.umontreal.ca>

        * emacs-lisp/pcase.el (pcase--if): Try to invert test to reduce depth.
        (pcase-mutually-exclusive-predicates): New var.
        (pcase--split-consp, pcase--split-pred): Use it.
        (pcase--split-equal, pcase--split-member): When splitting against
        a pure predicate, run it to know the outcome.
        (pcase--u1): Mark vars that are actually used.
        (pcase--q1): Avoid introducing unused vars.

    2011-02-18  Stefan Monnier  <monnier@iro.umontreal.ca>

        * emacs-lisp/pcase.el (pcase--u1): Understand non-linear patterns.

    2010-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>

        * emacs-lisp/pcase.el: Improve pcase-let.  Use "pcase--" prefix.
        (pcase--dontcare-upats): New var.
        (pcase-let, pcase-let*): Generate better code.
        Accept the same bodies as `let'.
        (pcase-dolist): New macro.
        (pcase--trivial-upat-p): New helper function.
        (pcase--expand): Strip leading "(let nil" if any.

    2010-11-12  Stefan Monnier  <monnier@iro.umontreal.ca>

        * emacs-lisp/pcase.el (pcase-let*, pcase-let): Add debug and
        indentation specs.

    2010-10-29  Stefan Monnier  <monnier@iro.umontreal.ca>

        * emacs-lisp/pcase.el (pcase): New `string' and `guard' patterns.
        (pcase-if): Add one minor optimization.
        (pcase-split-equal): Rename from pcase-split-eq.
        (pcase-split-member): Rename from pcase-split-memq.
        (pcase-u1): Add strings to the member optimization.
        Add `guard' variant of predicates.
        (pcase-q1): Add string patterns.

    2010-09-26  Stefan Monnier  <monnier@iro.umontreal.ca>

        * emacs-lisp/pcase.el (pcase-let*, pcase-let): plet -> pcase-let.

    2010-09-01  Stefan Monnier  <monnier@iro.umontreal.ca>

        * emacs-lisp/pcase.el (pcase-split-memq):
        Fix overenthusiastic optimization.
        (pcase-u1): Handle the case of a lambda pred.

    2010-08-10  Stefan Monnier  <monnier@iro.umontreal.ca>

        * emacs-lisp/pcase.el: New file.

2022-07-20  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * subr.el (apply-partially):
        For a &rest argumented lambda, construct one in return in
        #'apply-partially instead of returning a lambda with an empty argument
        list and make it append together the pre-applied and provided &rest
        arg lists.

2022-07-18  Aidan Kehoe  <kehoea@parhasard.net>

        * byte-optimize.el (byte-optimize-zerop):
        #'numberp has a byte code, and so it's fine to transform (zerop
        OBJECT) into (if (numberp OBJECT) (= OBJECT 0)
        (signal 'wrong-type-argument 'number OBJECT).
        This avoids correctness problems introducted by the
        byte-compile-delete-errors option, revealed in

2022-07-11  Aidan Kehoe  <kehoea@parhasard.net>

        * update-elc.el (do-autoload-commands):
        If we just need to rebuild the module autoloads, load autoload.el,
        something that wasn't done before.
        * update-elc.el (preloaded-file-list):
        full-arg-dir was not used, remove it, thank you the byte compiler.

2022-07-09  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (format):
        Update the documentation of the integer length modifiers, now that
        ?z has been added.

2022-06-30  Aidan Kehoe  <kehoea@parhasard.net>

        * finder.el (finder-compile-keywords):
        Correct a thinko in c6966a009d0d , insert a coding cookie that
        reflects buffer-file-coding-system.

2022-06-30  Aidan Kehoe  <kehoea@parhasard.net>

        * update-elc.el (source-modules): New.
        Document where the C source is for modules, which differs from
        module-directory when --srcdir is specified. This is relevant when
        deciding whether to build auto-autoloads.el for modules.
        * update-elc.el (preloaded-file-list):
        Use this when examining for outdatedness of auto-autoloads.el.
        * update-elc.el (do-autoload-commands):
        Correct the code to build the modules' auto-autoload.el, which
        cannot just use batch-update-directory-autoloads, since that
        doesn't recurse.  Thank you Stephen Turnbull, Mats Lidell, and the
        Gentoo users.
        * update-elc-2.el (batch-update-elc-2):
        Don't wrap errors loading the auto-autoloads for the modules, if
        that fails, whatever caused it to fail should be fixed.

2022-06-27  Stephen J. Turnbull  <turnbull@sk.tsukuba.ac.jp>

        * update-elc-2.el (batch-update-elc-2):
        Trap missing file errors for autoloads in modules.  Currently
        there are none, and the build process apparently doesn't produce
        an empty file in this case.

2022-06-27  Aidan Kehoe  <kehoea@parhasard.net>

        * finder.el (finder-compile-keywords):
        Don't use the save-buffer infrastructure when generating
        finder-inf.el, since that leads to lock files, making parallel
        builds less likely to work. Thank you Mats Lidell and the Gentoo

2022-06-23  Aidan Kehoe  <kehoea@parhasard.net>

        * x-faces.el (:compile-toplevel):
        Only (require 'fontconfig) at compile time, meaning that file is
        not dumped on non-Xft builds.

2022-06-17  Aidan Kehoe  <kehoea@parhasard.net>

        * code-process.el:
        * code-process.el (:compile-toplevel):
        Silence compiler warnings about variables provided by starttls.el,
        functions provided by format-spec.el.
        * code-process.el (network-stream-open-starttls):
        Fix a bug in this function, thank you the byte compiler
        (#'make-network-process is not available on XEmacs, use
        #'open-network-stream-internal instead.)
        * x-faces.el (fontconfig):
        Silence byte compile warnings, just (require 'fontconfig)
        unconditionally, which works even if fontconfig support is not
        compiled in.

2022-06-16  Aidan Kehoe  <kehoea@parhasard.net>

        * update-elc-2.el (batch-update-elc-2):
        Remove the code to update auto-autoloads from this file.
        (It was buggy (e.g. it updated mule/auto-autoloads.el and then
        immediately compiled auto-autoloads.el) and caused dependency
        Load the module auto-autoloads when byte-compiling,
        which we didn't previously.
        * update-elc.el:
        * update-elc.el (need-to-rebuild-module-autoloads): New.
        * update-elc.el (need-to-recompile-module-autoloads): New.
        * update-elc.el (module-directory): Make this available when
        updating module auto-autoloads.
        * update-elc.el (aa-modules): New.
        * update-elc.el (aac-modules): New.
        The path to the module auto-autoloads.el, auto-autoloads.elc
        * update-elc.el
        Add finder-inf.el to this list.
        * update-elc.el (or):
        Check explictly whether module/auto-autoloads.el is out of date in
        this file, which we did not do previously.
        * update-elc.el (do-autoload-commands):
        If there are no files to be byte-compiled but auto-autoloads need
        updated, do that here (using run-temacs with the byte-compiled
        files) rather than signalling to update-elc-2.el using
        ../src/REBUILD_AUTOLOADS. This should avoid dependency problems
        with massively parallel builds.

2022-03-23  Aidan Kehoe  <kehoea@parhasard.net>

        * custom.el:
        No need to #'require widget, both it and this file are dumped, and
        doing so makes the output of the dump a little more confusing.
        * dumped-lisp.el (preloaded-file-list):
        Move menubar, menubar-items, font-menu ahead of x-font-menu to
        avoid the latter forcing load of the former.
        * files.el (file-remote-p):
        Use and-boundp when checking for efs-path-regexp.
        * help.el (add-log-current-defun):
        Use and-fboundp when calling this function, provided as an
        autoload in xemacs-base.
        * mule/cyrillic.el:
        * mule/greek.el:
        Tell the byte-compiler where to find #'setup-case-pairs in these
        * mule/mule-charset.el:
        Tell the byte-compiler where to find #'init-windows-glyph-list-4
        in this file.
        * obsolete.el (define-obsolete-function-alias):
        * obsolete.el (define-compatible-function-alias):
        * obsolete.el (define-obsolete-variable-alias):
        * obsolete.el (define-compatible-variable-alias):
        Declare the WHEN argument special to avoid compiler warnings when
        using these functions.
        * unicode.el:
        Un-obsolete #'split-char, portable to GNU and very widely used
        (and not too bad of an API).

2022-03-19  Aidan Kehoe  <kehoea@parhasard.net>

        * apropos.el (apropos-documentation-check-doc-file):
        * buff-menu.el (Buffer-menu-toggle-read-only):
        * buff-menu.el (Buffer-menu-popup-menu):
        * compose.el (electric-diacritic):
        * cus-edit.el (custom-buffer-create-internal):
        * cus-edit.el (custom-variable-value-create):
        * cus-edit.el (custom-face-value-create):
        * cus-edit.el (custom-group-value-create):
        * files.el (insert-directory):
        * finder.el (finder-insert-at-column):
        * mode-motion.el (mode-motion-highlight-sexp):
        * mode-motion.el (mode-motion-add-help-echo):
        * mule/china-util.el (decode-hz-region):
        * mule/devan-util.el (indian-to-devanagari-region):
        * mule/devan-util.el (devanagari-to-indian-region):
        * mule/ethio-util.el (ethio-sera-to-fidel-english):
        * mule/ethio-util.el (ethio-sera-to-fidel-ethio):
        * mule/ethio-util.el (ethio-process-language-flag):
        * mule/ethio-util.el (ethio-tilde-escape):
        * mule/ethio-util.el (ethio-convert-digit):
        * mule/ethio-util.el (ethio-fidel-to-sera-buffer):
        * mule/ethio-util.el (ethio-modify-vowel):
        * mule/ethio-util.el (ethio-fidel-to-tex-buffer):
        * mule/ethio-util.el (ethio-tex-to-fidel-buffer):
        * mule/ethio-util.el (ethio-fidel-to-java-buffer):
        * mule/ethio-util.el (ethio-find-file):
        * mule/ethio-util.el (ethio-insert-space):
        * mule/ethio-util.el (ethio-gemination):
        * mule/japan-util.el (japanese-katakana-region):
        * mule/japan-util.el (japanese-hiragana-region):
        * mule/japan-util.el (japanese-hankaku-region):
        * mule/japan-util.el (japanese-zenkaku-region):
        * mule/kinsoku.el (kinsoku-process-shrink):
        * mule/tibet-util.el (tibetan-compose-region):
        * mule/tibet-util.el (tibetan-decompose-region):
        * mule/viet-util.el (viet-encode-viqr-region):
        * picture.el (move-to-column-force):
        * view-less.el (cleanup-backspaces):
        * wid-browse.el (widget-browse):
        * wid-edit.el (widget-after-change):
        * wid-edit.el (widget-default-format-handler):
        * wid-edit.el (widget-checklist-add-item):
        * wid-edit.el (widget-radio-add-item):
        * wid-edit.el (widget-group-value-create):
        Migrate #'following-char, #'preceding-char to #'char-after,
        #'char-before in these files.

2022-03-19  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el:
        Document that the byte-following-char, byte-preceding-char defops
        are only kept around for the sake of the disassembler. 
        Remove the corresponding byte-defop-compiler, compile both the
        functions as normal calls, so the warning that they are obsolete
        comes through, and so there is no speed upside to calling them.

        * obsolete.el:
        * obsolete.el (following-char): New.
        * obsolete.el (preceding-char): New.  Move the implementations of
        these functions to this file from C.

2022-03-21  Aidan Kehoe  <kehoea@parhasard.net>

        * loadup.el:
        We can no longer just (store-match-data nil) to clear the extent
        information for strings known to the search code before dumping;
        pass in an extent with its SEARCH property set to DISCARD

2022-03-06  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el:
        * bytecomp.el (byte-compile-default-warnings):
        Disable the format-not-constant warning by default, after
        discussion with Stephen Turnbull, thank you Steve.

2022-01-31  Aidan Kehoe  <kehoea@parhasard.net>

        #'check-type gives a clearer error message than
        #'check-argument-type (it lists PLACE in the error message). It is
        also better style.  Prefer it in dumped Lisp except in those
        places where startup dependencies make it not available.

        * auto-save.el (recover-all-files):
        * coding.el:
        * coding.el (unencodable-char-position):
        * coding.el (check-coding-systems-region):
        * descr-text.el (unidata-initialize-unicodedata-database):
        * descr-text.el (unidata-initialize-unihan-database):
        * dialog.el (popup-dialog-box):
        * events.el:
        * events.el (set-character-of-keysym):
        * events.el (get-character-of-keysym):
        * files.el (file-system-ignore-case-p):
        * gui.el (insert-gui-button):
        * menubar.el (find-menu-item):
        * modeline.el (add-minor-mode):
        * mule/mule-category.el (define-category):
        * mule/mule-category.el (undefine-category):
        * mule/mule-category.el (category-doc-string):
        * mule/mule-category.el (modify-category-entry):
        * mule/mule-category.el (char-category-list):
        * mule/mule-charset.el (set-charset-registry):
        * mule/mule-charset.el (charset-after):
        * mule/mule-charset.el (find-translation-table):
        * mule/mule-charset.el (define-charset-tag):
        * mule/mule-charset.el (charset-tag-to-charset-list):
        * simple.el (warning-level-<):
        * simple.el (display-warning):
        * specifier.el (let-specifier):
        * subr.el (replace-in-string):
        * unicode.el (frob-unicode-errors-region):
        * widget.el (define-widget):
        * window-xemacs.el (display-buffer):

2021-11-09  Aidan Kehoe  <kehoea@parhasard.net>

        * info.el (Info-find-file-node):
        makeinfo(1) constructs its tag table using byte positions, and
        with significant non-ASCII contents info files it is routine for
        this to get out of synch with our character positions.
        This gave difficult-to-pin-down "No such node" errors with the
        Take the discrepancy between byte and character positions on board
        when deciding where to start looking for a node.
        Thank you for the investigation and bug report, Henry Thompson!
        In passing there is no need to restrict the range of the position
        passed to #'goto-char, it has always limited its movement to the
        visible portion of the buffer.

2021-10-20  Aidan Kehoe  <kehoea@parhasard.net>

        * descr-text.el (describe-char-unicodedata-file):
        Only delete a trailing newline if one is present, avoiding
        build-time problems now mule/make-digit.el has (require

2021-10-23  Aidan Kehoe  <kehoea@parhasard.net>

        * backquote.el (backquote):
        Document that the support for the old-style backquote syntax is
        obsolete and will be removed soon.

2021-10-09  Aidan Kehoe  <kehoea@parhasard.net>

        * mule/make-digit.el:
        New. File to generate digit.el from UnicodeData.txt.
        * mule/digit.el:
        Regenerate this reflecting the same version of UnicodeData of last
        commit, last modification on unicode.org 2021-07-06 12:31, md5

2021-10-09  Aidan Kehoe  <kehoea@parhasard.net>

        * mule/uni-case-conv.el:
        Update this file to reflect current UnicodeData.txt, last
        modification on unicode.org 2021-07-06 12:31, md5

2021-07-15  Aidan Kehoe  <kehoea@parhasard.net>

        * files.el:
        * files.el (file-remote-p):
        If EFS is loaded, use efs-path-regexp to work out if FILE is remote.
        * minibuf.el (minibuffer-complete-and-exit):
        * minibuf.el (exit-minibuffer):
        Fix some indentation in these two functions.
        * minibuf.el (minibuffer-smart-mouse-tracker):
        Ignore ange-ftp, long deprecated.
        Trust that #'file-remote-p will recognise EFS pathnames if EFS is
        Use the newer #'test-completion, which always gives t for an exact
        match, rather than the older #'try-completion, where this is not
        * minibuf.el (minibuffer-smart-select-kludge-filename):
        ange-ftp is long deprecated, ignore it.
        Use the new support of #'file-remote-p for EFS, don't implement
        that ourselves.

2021-06-10  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-extra.el (cl-do-prettyprint):
        Fix a bug in a regexp here, can't start a subexpression within a
        character set.

2021-05-10  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (zerop):
        Error if NUMBER is a character or a marker in this function, as
        the C code did previously.

2021-05-06  Aidan Kehoe  <kehoea@parhasard.net>

        * easymenu.el (easy-menu-add):
        * easymenu.el (easy-menu-remove):
        In the normal course of events #'easy-menu-remove is called before
        #'easy-menu-add, and so the code in the latter to save any
        existing non-default mode-popup-menu fails. Add corresponding code
        to #'easy-menu-remove too.

2021-05-11  Aidan Kehoe  <kehoea@parhasard.net>

        * gtk-marshal.el (get-marshaller-type-info): New.
        Summarize the type info (so return type and argument type) of RVAL
        and ARGS as a string.
        * gtk-marshal.el (get-marshaller-name): Implement this using
        * gtk-marshal.el (define-marshaller):
        Add a newline and appropriate indentation to the C definition of
        the function.
        Push the now-defined marshal function onto defined-marshallers.
        * gtk-marshal.el:
        When creating emacs-marshal.c, instead of creating a long list of
        puthash() calls to be called the first time any function is
        imported, create a table mapping the lower 16 bits of the type
        string hash to the corresponding function, which is faster in my
        testing (with 10,000 gtk-import-function-internal calls), and has
        more predictable performance than the old approach.

2021-02-14  Aidan Kehoe  <kehoea@parhasard.net>

        * replace.el (perform-replace): Update a
        (save-match-data ... (string-match "[[:upper:]]" ...)) call to
        call `string-match-p' without the encloding `save-match-data'
        instead, now `string-match-p' is available.

2021-02-14  Aidan Kehoe  <kehoea@parhasard.net>

        Minor changes to deal with moving the match data to being extents.
        * cl-extra.el (cl-prettyprint):
        Call #'replace-match instead of accessing the match data after
        deleting the relevant text in this function.
        * loadup.el:
        Clear the match data before dumping, now we use string extent info
        for it and that is not dumpable.
        * replace.el (perform-replace): Use the more exhaustive
        #'match-data-canonical instead of #'match-data when saving the
        match data associated with the real match in this function.
        Don't pass the INTEGERS argument to #'match-data given its
        performance issues with large buffers.
        * subr.el (save-match-data):
        Update this to save the match data with the more exhaustive
        #'match-data-canonical, and to explicitly detach any extents in
        the saved data once done with them.
        * subr.el (match-string): Moved to C, now its algorithmic
        complexity is better there.
        * subr.el (match-string-no-properties):
        Implement in terms of #'match-string.

2021-01-28  Aidan Kehoe  <kehoea@parhasard.net>

        * code-files.el (load):
        Revise my change of 2021-01-10 looking for unwanted duplicate
        extensions to strip directory information before calling #'equal,
        something which will give us fewer false-positives.

2021-01-21  Aidan Kehoe  <kehoea@parhasard.net>

        * x-init.el (pseudo-canonicalize-keysym):
        Document why there's no need to call #'canonicalize-keysym in this

2021-01-11  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-extra.el (bignump): New.
        * cl-extra.el (ratiop): New.
        * cl-extra.el (rationalp): New.
        * cl-extra.el (bigfloatp): New.
        * cl-extra.el (floatingp): New.
        * cl-extra.el (realp): New.
        Move all these from number.c.
        They are very short and mostly translate to one funcall +/- a
        couple of bytecodes, make them available with defsubst*.
        * make-docfile.el (docfile-out-of-date):
        #'integerp no longer available on bare-metal XEmacs, and it is only
        relevant if STATUS is zero; use #'fixnump instead.

2021-01-11  Aidan Kehoe  <kehoea@parhasard.net>

        Move some further simple functions to Lisp from C.
        * subr.el:
        * subr.el (integerp): New.
        * subr.el (car-safe): New.
        * subr.el (cdr-safe): New.
        * subr.el (copy-sequence): New.
        * subr.el (wrong-type-argument): New.
        All of these are from data.c.

2021-01-11  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el (byte-compile-file-form-eval-boundary): Removed.
        * bytecomp.el (byte-compile-file-form-require): New.
        Use a more sensible name for #'require's byte hunk handler, also
        used by GNU.  Only evaluate the call to require if
        byte-compile-eval-when-seen is non-nil, allowing users to
        explicitly avoid compile time evaluation if that is needed.

2021-01-10  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el (byte-compile-file):
        When loading TARGET-FILE, pass a non-nil NOSUFFIX argument to
        #'load, avoiding issues when FILENAME.elc.elc exists in the target
        * code-files.el (load):
        Warn if FILENAME.elc was supplied, NOSUFFIX is nil, and
        #'locate-file returned FILENAME.elc.elc.
        Don't error, this is rare and there may be compatibility issues if
        we do that.

2020-12-28  Aidan Kehoe  <kehoea@parhasard.net>

        * simple.el (delete-backward-char):
        Both COUNT and KILLP are optional in this function, declare them
        as such.

2020-11-24  Aidan Kehoe  <kehoea@parhasard.net>

        * device.el (get-device): New.
        Moved here from device.c, no need for it to be in C.
        * simple.el (delete-backward-char): New.
        Moved here from cmds.c, no need for it to be in C.

2020-11-17  Aidan Kehoe  <kehoea@parhasard.net>

        * events.el (keyboard-translate):
        Use `canonicalize-keysym' here, just introduced, so the keyboard
        translate processing is more reliable.

2020-11-17  Aidan Kehoe  <kehoea@parhasard.net>

        * events.el (keyboard-translate):
        * events.el (set-character-of-keysym):

2020-11-03  Aidan Kehoe  <kehoea@parhasard.net>

        * minibuf.el (read-coding-system):
        Correct the spelling in the docstring here.
        * subr.el (format):
        CONTROL-STRING isn't optional in #'format, correct the arglist

2020-09-01  Aidan Kehoe  <kehoea@parhasard.net>

        Some style, efficiency changes to wid-edit.el.

        * wid-edit.el:
        * wid-edit.el (widget-shadow-subrs): Removed.
        No longer necessary.
        * wid-edit.el (widget-princ-to-string):
        Remove the commented old implementation.
        * wid-edit.el (widget-member):
        Use #'plist-get rather than #'widget-plist-member (which
        ultimately calls #'plist-get).
        No need for a final clause that returns nil, that's what #'cond
        does by default.
        * wid-edit.el (widget-default-menu-tag-get):
        Call #'prin1-to-string rather than #'widget-princ-to-string, which
        calls #'prin1-to-string anyway. 

2020-08-25  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp-runtime.el (eval-when-feature): Removed.
        This never worked (the after-load-alist entry syntax was
        incorrect), it is not used in packages and GNU have removed it. No
        indication to continue with it in XEmacs.

2020-03-25  Aidan Kehoe  <kehoea@parhasard.net>

        * code-cmds.el (universal-coding-system-argument):
        Use the DEFAULT argument to #'read-coding-system, trust it to
        rewrite the prompt rather than doing it ourselves.
        * code-files.el (set-buffer-file-coding-system):
        Call #'read-coding-system expicitly, take a default from
        * code-files.el (set-buffer-file-coding-system-for-read):
        Call #'check-coding-system rather than #'get-coding-system, which
        is clearer for what we want.
        * code-files.el (insert-file-contents):
        * code-process.el:
        * code-process.el (set-buffer-process-coding-system):
        Explicitly call #'read-coding-system in the (interactive) spec
        here, so we can pass in the existing default-process-coding-system
        as a DEFAULT argument.
        * coding.el (set-keyboard-coding-system):
        Explicitly call #'read-coding-system in the (interactive) spec
        here, displaying keyboard-coding-system as the default.
        * coding.el (set-terminal-coding-system):
        Explicitly call #'read-coding-system in the (interactive) spec
        here, displaying terminal-coding-system as the default.
        * minibuf.el (coding-system-history): New.
        * minibuf.el (read-file-name):
        Backslash some parentheses in the first column for the sake of
        * minibuf.el (read-directory-name):
        * minibuf.el (read-coding-system):
        Revise this to use coding-system-history, to adjust PROMPT
        depending on DEFAULT-CODING-SYSTEM, to ignore case (as does GNU).
        * minibuf.el (read-non-nil-coding-system):
        Revise this to use coding-system-history and to ignore case.

2020-03-23  Aidan Kehoe  <kehoea@parhasard.net>

        * simple.el (kill-line-1): Implement this with #'macrolet rather
        than keeping around a function in the dumped Lisp.
        * simple.el (kill-entire-line): Use the macro.
        * simple.el (kill-line): Use the macro.
        * simple.el (backward-kill-line): Use the macro. This function
        differs from the other two in that it previously did not use

2020-03-23  Aidan Kehoe  <kehoea@parhasard.net>

        * simple.el (digit-argument):
        Use #'digit-char-p in this function rather than re-implementing

2020-03-23  Aidan Kehoe  <kehoea@parhasard.net>

        * byte-optimize.el:
        #'prefix-numeric-value is a pure function, optimise it as such.

2020-03-23  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (with-trapping-errors):
        If RESIGNAL is non-nil and ERROR-FORM is nil, don't wrap the
        #'call-with-condition-handler with #'condition-case.
        If ERROR-FORM is nil and RESIGNAL is nil, use `block' to return
        control to the caller.

2020-03-20  Aidan Kehoe  <kehoea@parhasard.net>

        Further reduce potential match data corruption bugs by avoiding
        #'string-match when the match data isn't used, mostly using
        #'string-match-p instead but sometimes the CL sequence functions
        for particularly trivial regexps.

        * finder.el:
        * finder.el (finder-select):
        * font-lock.el (font-lock-set-defaults-1):
        As well as the above, use a label instead of binding a symbol's
        value to a lambda and then funcalling that.
        * newcomment.el (comment-indent-new-line):
        Use #'search instead of #'string-match for a trivial regexp.
        * package-admin.el (package-admin-get-install-dir):
        * register.el (describe-register-1):
        * startup.el (load-terminal-library):
        * startup.el (find-init-file-1):
        * startup.el (command-line-1):
        Use #'string-match-p in these four functions.
        * startup.el (splash-screen-window-body):
        Use #'search instead of #'string-match for a trivial regexp.
        * syntax.el (syntax-string-to-code):
        * test-harness.el (test-harness-from-buffer):
        * test-harness.el (batch-test-emacs):
        * update-elc-2.el (do-update-elc-2):
        * update-elc.el:
        * update-elc.el (update-elc-chop-extension):
        * version.el (emacs-version):
        * wid-browse.el (widget-browse-sexp):
        * wid-edit.el (widget-field-use-before-change):
        Searching `emacs-version' for the string XEmacs is not the way to
        check whether this emacs is XEmacs, use featurep instead.
        * wid-edit.el (widget-field-validate):
        * wid-edit.el (widget-field-value-create):
        * window-xemacs.el (display-buffer):
        * x-scrollbar.el (x-init-scrollbar-from-resources):
        Use #'string-match-p for the last four.

2019-10-18  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (with-trapping-errors):
        Revise this to use the Common Lisp keyword parsing
        infrastructure, which will accept :allow-other-keys t and explicitly
        have the trailing keyword override.
        Declare its indentation using (declare (indent ...)) rather than
        using #'put.

2020-01-24  Aidan Kehoe  <kehoea@parhasard.net>

        * wid-edit.el (widget-parsing-escapes): New.
        Macro to do most of the work of parsing %-escapes in widget format
        strings, refactored out.
        * wid-edit.el (widget-value-convert-widget):
        Use it. 
        Adjust the order of frequency of the value escape in passing, that
        is much more common in the customize code than in the about-xemacs
        code which I had been testing on.
        * wid-edit.el (widget-checklist-add-item, widget-radio-add-item):
        Use `widget-parsing-escapes' in these functions.

2020-01-22  Aidan Kehoe  <kehoea@parhasard.net>

        * wid-edit.el (widget-default-create):
        * wid-edit.el (widget-checklist-add-item):
        * wid-edit.el (widget-radio-add-item):
        * wid-edit.el (widget-editable-list-entry-create):
        Move away from code using #'re-search-forward to parse format
        strings within all these functions, use #'position instead.

        In #'widget-default-create, use the more reasonable and readable
        (case escape ...) rather than funcalling an uncompiled lambda
        which is in a vector indexed according to a string offset, which
        offset is produced using #'string-match.

2019-04-22  Aidan Kehoe  <kehoea@parhasard.net>

        * process.el (setenv):
        Sync the API of this function with GNU.
        Remove UNSET as an argument, giving nil for VALUE always has been
        Add SUBSTITUTE-ENV-VARS in its stead, 
        Check that VARIABLE, VALUE can be encoded in the coding system of
        the system, error if they can't.        

2019-04-14  Aidan Kehoe  <kehoea@parhasard.net>

        * misc.el:
        * misc.el (make-weak-box):
        * misc.el (weak-box-ref):
        * misc.el (:load-toplevel):
        Remove #'weak-box-ref-1 from the dumped Lisp binary, using
        (eval-when (:load-toplevel) ...) to ensure a reasonable docstring.

2019-03-28  Aidan Kehoe  <kehoea@parhasard.net>

        * x-init.el (pseudo-canonicalize-keysym):
        * x-init.el (x-keysym-on-keyboard-sans-modifiers-p):
        * x-init.el (x-keysym-on-keyboard-p):
        Accept characters as keysyms in these functions, as well as
        strings and symbols. This is needed since changeset a69c6e871607
        of 2017-12-20, which applied to the C code.

2019-03-21  Jerry James  <james@xemacs.org>

        * startup.el (startup-setup-paths): Silence startup warnings due to
        mismatched format strings and arguments.  Patch thanks to Tim
        Landscheidt <tim@tim-landscheidt.de>.

2019-03-21  Aidan Kehoe  <kehoea@parhasard.net>

        Move several more functions, not loop hotspots and easily
        implemented in Lisp, from C to Lisp.

        * abbrev.el:
        * abbrev.el (insert-abbrev-table-description): New.
        Move this back to Lisp, now there's a penalty for it being in C
        with NEWGC.
        Remove comment with old Lisp implementation.

        * cmdloop.el:
        * cmdloop.el (prefix-numeric-value): New.
        Move this here from callint.c.
        * loadup.el:
        * loadup.el (really-early-error-handler):
        Use #'format-into rather than (princ (format ...)), now #'format
        is not available on a bare-metal XEmacs.
        * setup-paths.el (paths-default-info-directories):
        Use (string directory-sep-char) rather than (char-to-string
        directory-sep-char), now the latter is not available on a
        bare-metal XEmacs.
        * simple.el:
        * simple.el (backward-char): New.
        * simple.el (beginning-of-line): New.
        * simple.el (end-of-line): New.
        Move these three from cmds.c.
        * subr.el:
        * subr.el (format): New.
        Move this from doprnt.c
        * subr.el (arrayp): New.
        * subr.el (sequencep): New.
        * subr.el (natnump): New.
        * subr.el (nonnegativep): New.
        Move all these from data.c
        * subr.el (identity):
        Give this a better argument name and docstring.
        * subr.el (char-to-string): New.
        * subr.el (string-to-char): New.
        * subr.el (char-equal): New.
        Move these three from editfns.c.
        * x-misc.el:
        * x-misc.el (default-x-device): New.
        Move this from device-x.c.

2019-03-27  Aidan Kehoe  <kehoea@parhasard.net>

        * minibuf.el (read-file-name-internal-1):
        Revise this now #'user-name-completion returns two values and
        #'user-name-completion-1 is no longer available.

2011-03-05  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el:
        * bytecomp.el (byte-compile-default-warnings):
        * bytecomp.el (byte-compiler-legal-options):
        * bytecomp.el (byte-compile-format): New.
        * bytecomp.el (byte-compile-message): New.
        Introduce `byte-compile-format', which warns if CONTROL-STRING is
        not constant, something that is reasonably often a security
        issue. Suppress this warning for calls to #'gettext, or
        if-statements both branches of which are constant strings.

2018-10-07  Aidan Kehoe  <kehoea@parhasard.net>

        * font-lock.el (font-lock-fontify-syntactically-region):
        Careful here, font-lock-cache-position can be a marker that
        doesn't point anywhere; thanks for the bug report, Michael

2018-10-01  Aidan Kehoe  <kehoea@parhasard.net>

        * code-files.el (insert-file-contents):
        * cus-edit.el (custom-redraw):
        * font-lock.el (font-lock-fontify-syntactically-region):
        * help.el (Help-princ-face):
        * help.el (Help-prin1-face):
        * help.el (help-symbol-regexp):
        * indent.el (increase-left-margin):
        * indent.el (decrease-left-margin):
        * info.el (Info-find-file-node):
        * info.el (Info-cease-edit):
        * mouse.el (default-mouse-track-deal-with-down-event):
        * select.el (select-convert-to-lineno):
        * select.el (select-convert-to-sourceloc):
        * simple.el (kill-region):
        * simple.el (pop-global-mark):
        * simple.el (signal-error-on-buffer-boundary):
        * wid-edit.el (widget-setup):
        * window-xemacs.el (restore-saved-window-parameters):
        Don't call #'marker-position in the core Lisp code, as we have
        just advised in its docstring.

2018-09-28  Aidan Kehoe  <kehoea@parhasard.net>

        * byte-optimize.el (byte-optimize-car):
        * byte-optimize.el (byte-optimize-cdr):
        Leave erroring on zero arguments and returning nil on nil
        arguments to #'byte-optimize-predicate within these functions.

2018-09-16  Aidan Kehoe  <kehoea@parhasard.net>

        * alist.el: Remove this.
        It's indifferent to poor code, nothing uses it in core, and the
        file is in APEL already.

2018-09-05  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-macs.el (cl-const-expr-p):
        Recognise that keywords are constant symbols within this
        * byte-optimize.el:
        * byte-optimize.el (byte-compile-trueconstp): Removed.
        * byte-optimize.el (byte-optimize-car):
        * byte-optimize.el (byte-optimize-cdr):
        * byte-optimize.el (byte-optimize-or):
        * byte-optimize.el (byte-optimize-if):
        * byte-optimize.el (byte-optimize-letX):
        Use `byte-compile-constp' instead in the places this macro was
        used, which recognises that keywords are constant symbols too, and
        so reduces the number of places this bug can happen.

2018-09-02  Aidan Kehoe  <kehoea@parhasard.net>

        * byte-optimize.el:
        * byte-optimize.el (:execute):
        * bytecomp.el (:execute):
        * cl-extra.el:
        * cl-extra.el (:execute):
        * cl-extra.el (streamp):
        * cl-macs.el:
        * cus-face.el:
        * cus-face.el (:compile-toplevel):
        * easy-mmode.el:
        * help.el:
        * help.el (:execute):
        * info.el (:compile-toplevel):
        * info.el (unless):
        * regexp-opt.el (regexp-opt-group):
        * syntax-ppss.el (font-lock-beginning-of-syntax-function):
        * syntax-ppss.el (syntax-ppss-depth):
        * wid-browse.el:
        * wid-browse.el (widget-browse):
        * x-init.el (:compile-toplevel):
        Now #'eval-when is in bytecomp-runtime, use it in those places
        where it is clearer than #'eval-when-compile.
        Many of the places #'eval-when-compile were used were actually
        unnecessary; remove them.
        * bytecomp-runtime.el (eval-when):
        Document #'eval-when in a little more detail.

2018-09-02  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el (byte-compile-initial-macro-environment):
        Correct a comment here, there's no bug in defstruct or defsetf.

2018-09-02  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp-runtime.el:
        * bytecomp-runtime.el (eval-when): Move the runtime part of this
        here from cl-macs.el.
        * bytecomp.el:
        * bytecomp.el (byte-compile-eval):
        * bytecomp.el (byte-compile-eval-when-seen): New.
        * bytecomp.el (byte-compile-initial-macro-environment):
        Implement the bulk of #'eval-when in the compiler, where it belongs.
        * cl-macs.el:
        * cl-macs.el (cl-not-toplevel): Removed.
        * cl-macs.el (eval-when): Removed.
        * cl-macs.el (arguments): Removed.
        * cl-macs.el (cl-compile-time-too): Removed.
        * cl-macs.el (define-setf-method):
        * cl-macs.el (defstruct):
        * cl-macs.el (deftype):
        * cl-macs.el (define-compiler-macro):
        * cl.el (declaim):
        Use the ANSI CL syntax for the stages in WHEN with #'eval-when.
        No need to worry about delaying loading cl-macs.el when using that
        * cl.el (cl-random-time):
        * ldap.el (:load-toplevel):
        Correct the syntax of this #'eval-when call.

2018-08-25  Aidan Kehoe  <kehoea@parhasard.net>

        * autoload.el (generate-file-autoloads):
        * autoload.el (generate-custom-defines):
        * autoload.el (generate-custom-defines-1):
        * bytecomp.el:
        * bytecomp.el (byte-compile-dest-file): New.
        * bytecomp.el (byte-compile-inline-expand):
        * disass.el (disassemble-1):
        * files.el:
        * files.el (parse-colon-path):
        * files.el (set-auto-mode):
        * files.el (hack-local-variables):
        * files.el (hack-local-variables-last-page):
        * files.el (hack-local-variables-prop-line):
        * files.el (file-relative-name):
        * files.el (revert-buffer):
        * files.el (recover-session):
        * files.el (file-expand-wildcards):
        * files.el (shell-quote-wildcard-pattern):
        * files.el (insert-directory):
        * files.el (insert-directory-adj-pos):
        * find-paths.el (paths-find-recursive-path):
        * font-lock.el (font-lock-lisp-like):
        * font-lock.el (font-lock-match-java-declarations):
        * font-mgr.el:
        * font-mgr.el (xlfd-font-name-p):
        * gutter-items.el (buffers-tab-omit-some-buffers):
        * gutter-items.el (select-buffers-tab-buffers-by-mode):
        Call #'string-match, #'looking-at much less often, preferring
        #'string-match-p and #'looking-at-p instead for fewer side-effects.
        * cus-edit.el:
        * cus-edit.el (customize-version-lessp):
        Use the much cheaper #'parse-integer instead of #'read here.
        * files.el (convert-standard-filename):
        Redefine this to act as identity on non-windows-nt systems.

2018-08-14  Aidan Kehoe  <kehoea@parhasard.net>

        * misc.el (make-weak-box):
        Make this code work when run interpreted too, not that it will come
        up much.

2018-08-13  Aidan Kehoe  <kehoea@parhasard.net>

        * misc.el (make-weak-box):
        Have distinct weak boxes print distinctly; remove information on
        the type of the one-time contents from the weak box, it doesn't
        add anything and will be inaccurate once the contents are nil.

2018-08-12  Aidan Kehoe  <kehoea@parhasard.net>

        * misc.el:
        * misc.el (weak-box-p):
        * misc.el (make-weak-box):
        * misc.el (weak-box-ref):
        Improve the implementation here; make #'weak-box-ref free in terms
        of garbage, make weak boxes that reference distinct objects print
        distinctly, give information as to the type of CONTENTS stored.
        Document some more on the performance and debugging implications
        of the Lisp implementation.

2018-08-12  Aidan Kehoe  <kehoea@parhasard.net>

        * misc.el:
        * misc.el (weak-box-p): New.
        * misc.el (make-weak-box): New.
        * misc.el (weak-box-ref): New.
        Move all these functions here from data.c.

2018-07-17  Aidan Kehoe  <kehoea@parhasard.net>

        * backquote.el (bq-process):
        * backquote.el (bq-process-2):
        * backquote.el (bq-comma):
        * backquote.el (bq-process-1):
        Style improvements in this file:
        1. Give structured errors on encountering invalid syntax.
        2. Call member* when interpreted, which #'memq was doing anyway,
        and which will translate to the memq bytecode in the old way when
        3. Indent if statements as Emacs Lisp, not Common Lisp.

2018-07-17  Aidan Kehoe  <kehoea@parhasard.net>

        * backquote.el (bq-process-2):
        Be better about handling vectors here; pass through constants,
        call #'vector, #'vconcat directly at runtime if appropriate. Call
        #'atom (which translates to bytecode) rather than #'vectorp first
        within this function.
        New #'bq-process-2 flag, vector*, which means "call apply
        #'vector in the old way"
        * backquote.el (bq-comma):
        Don't check for numberp here, leave that to #'bq-process-1.
        * backquote.el (bq-process-1):
        Implement vector*.  Call #'quote-maybe when appropriate, giving
        more readable output.

2018-07-05  Aidan Kehoe  <kehoea@parhasard.net>

        Silence an extensive list of byte compile warnings, chiefly
        through use of #'globally-declare-fboundp and

        Also prefer (default-device 'x) to (default-x-device), since the
        former always exists when byte compiling.

        * autoload.el:
        * autoload.el (make-autoload):
        * autoload.el (autoload-make-autoload-operators): New.
        * autoload.el (autoload-make-autoload-complex-operators): New.
        Be a bit better about silencing byte compile warnings regarding
        autoload-make-autoload-operators here

        * behavior.el:
        * behavior.el (unless):
        * buff-menu.el:
        * buff-menu.el (unless):
        * cmdloop.el:
        * cmdloop.el (unless):
        * cmdloop.el (yes-or-no-p):
        * cmdloop.el (y-or-n-p):
        * cus-edit.el:
        * cus-edit.el (unless):
        * custom.el (custom-theme-reset-internal-face):
        * custom.el (custom-define-hook):
        * dialog-items.el:
        * dialog-items.el (unless):
        * dialog.el:
        * easymenu.el:
        * easymenu.el (unless):
        * font-menu.el:
        * font-menu.el (unless):
        * font.el:
        * font.el (fontconfig):
        * font.el (font-xft-font-regexp):
        * font.el (font-xft-font-regexp)): New.
        * font.el (x-font-build-cache):
        * font.el (xft-font-create-object):
        * fontconfig.el (fc-try-font):
        * fontconfig.el (fc-find-available-font-families):
        * fontconfig.el (fc-find-available-weights-for-family):
        * gnuserv.el:
        * gnuserv.el (unless):
        * gtk-faces.el:
        * gtk-faces.el (unless):
        * gtk-faces.el (gtk-convert-font-from-xlfd):
        * help.el:
        * help.el (unless):
        * help.el (help):
        * hyper-apropos.el:
        * hyper-apropos.el (unless):
        * info.el:
        * info.el (unless):
        * lisp-mode.el:
        * lisp-mode.el (unless):
        * menubar-items.el:
        * menubar-items.el (unless):
        * menubar.el:
        * menubar.el (unless):
        * minibuf.el:
        * minibuf.el (unless):
        * minibuf.el (insert-default-directory):
        * mode-motion.el:
        * mode-motion.el (mouse):
        * modeline.el:
        * modeline.el (unless):
        * mouse.el:
        * mouse.el (unless):
        * mouse.el (shift):
        * msw-select.el:
        * msw-select.el (unless):
        * mule/mule-charset.el (do-define-charset-tags):
        * mule/mule-charset.el (script):
        * mwheel.el:
        * mwheel.el (unless):
        * occur.el:
        * occur.el (unless):
        * package-ui.el:
        * package-ui.el (unless):
        * picture.el:
        * picture.el (unless):
        * printer.el:
        * printer.el (unless):
        * scrollbar.el:
        * scrollbar.el (unless):
        * select.el:
        * select.el (unless):
        * startup.el:
        * startup.el (unless):
        * toolbar-items.el:
        * toolbar-items.el (unless):
        * toolbar.el:
        * toolbar.el (unless):
        * userlock.el:
        * userlock.el (unless):
        * userlock.el (ask-user-about-lock-minibuf):
        * wid-edit.el:
        * wid-edit.el (unless):
        * x-faces.el (x-make-font-bold-xft):
        * x-faces.el (x-make-font-unbold-xft):
        * x-faces.el (x-make-font-italic-xft):
        * x-faces.el (x-make-font-unitalic-xft):
        * x-faces.el (x-font-size-xft):
        * x-faces.el (x-find-xft-font-of-size):
        * x-font-menu.el:
        * x-font-menu.el (unless):
        * x-init.el:
        * x-init.el (unless):
        * x-mouse.el:
        * x-mouse.el (unless):
        * x-scrollbar.el:
        * x-scrollbar.el (unless):
        * x-scrollbar.el (x-init-scrollbar-from-resources):
        * x-win-sun.el:
        * x-win-sun.el (unless):
        * x-win-sun.el (x-win-init-sun):
        * x-win-xfree86.el:
        * x-win-xfree86.el (unless):

2018-07-05  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-macs.el (defsubst*):
        Document that within BODY the variable names within ARGLIST may
        not have dynamic binding.
        Don't check BODY for side effects, our check is inaccurate and the
        result was used, inaccurately, within cl-defsubst-expand to decide
        whether argument names needed binding.
        * cl-macs.el (cl-defsubst-expand):
        Don't bind arguments using let if the UNSAFE argument is supplied,
        that gives byte-compile warnings that don't help anyone.

2018-07-05  Aidan Kehoe  <kehoea@parhasard.net>

        * map-ynp.el (normalize-menu-text): Add an autoload for this
        function, now it's available in Lisp when C menubar support isn't
        * menubar.el (normalize-menu-text): Implement this function, moved
        from C.

2018-07-04  Aidan Kehoe  <kehoea@parhasard.net>

        * loadup.el (source-lisp):
        * make-docfile.el (source-lisp):
        * update-elc.el (source-lisp):
        #'nth no longer available on a bare-metal XEmacs, use its
        * subr.el:
        * subr.el (identity): New.
        * subr.el (nth): New.
        Move these functions here from fns.c.

2018-07-01  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el (byte-compile-normal-call):
        When examining the :test, :key, etc arguments, be aware that a
        quoted symbol may be a data placeholder, and take that into
        account before warning.
        * cl-extra.el (cl-macroexpand-all):
        Only close around variables that are actually *used* in the
        lambda, when dealing with lambdas and lexical scope.

2018-07-01  Aidan Kehoe  <kehoea@parhasard.net>

        * easymenu.el:
        * easymenu.el (easy-menu-do-define):
        * easymenu.el (easy-menu-change):
        * easymenu.el (easy-menu-add):
        * easymenu.el (easy-menu-remove):
        * easymenu.el (easy-menu-add-item):
        * easymenu.el (easy-menu-item-present-p):
        * easymenu.el (easy-menu-remove-item):
        * lisp-mode.el (emacs-lisp-mode):
        * lisp-mode.el (lisp-interaction-mode):
        * startup.el (command-line):
        If running noninteractively (e.g. byte-compiling Lisp when
        building), don't bother to add menubar entries.

2018-07-01  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-extra.el (cl-macroexpand-all):
        Use #'apply-partially to create closures with lambdas and lexical
        * cl-macs.el (apply-partially):
        #'function-max-args can give nil, handle this OK.
        #'error doesn't take a format string, correct calls to it.
        * subr.el (apply-partially):
        Don't use a (&rest args) arglist for the constructed function if
        we've been supplied an explicit lambda. Parse the supplied arglist
        and construct one that reflects it, something that allows the byte
        compiler to give more useful warnings with labels.
        Do the check for the number of args passed correctly.
        If we haven't been supplied an explicit lambda, use an uninterned
        symbol for the argument list name, avoiding problems with dynamic

2018-06-30  Aidan Kehoe  <kehoea@parhasard.net>

        * gtk-widgets.el:
        Avoid duplicate function imports in this file.
        * gtk-faces.el:
        Silence warnings about unbound symbols within this file when
        * gtk-file-dialog.el:
        Silence warnings about #'gtk-dialog-get-content-area not being
        * gtk-init.el:
        Silence warnings about #'gtk-load-css not having a function

2018-06-14  Aidan Kehoe  <kehoea@parhasard.net>

        * test-harness.el (test-harness-from-buffer):
        Use the correct number of #'format arguments in calls to
        Print-Failure here, avoiding log chatter when XEmacs warns about
        too many arguments to #'format.

2018-05-25  Aidan Kehoe  <kehoea@parhasard.net>

        * events.el:
        * events.el (key-or-mouse-event-p): New.
        * events.el (timeout-or-eval-event-p): New.
        * events.el (char-or-event-p): New.
        Make these available, the C code has been calling them from
        wrong_type_argument() for years, despite their not existing.

2018-04-27  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el:
        * bytecomp.el (ignore):
        * bytecomp.el (byte-compile-ignore): New.
        Add a byte-compile method for #'ignore, marking all its arguments
        as for-effect, and returning nil.

2018-04-25  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (not): New.
        * subr.el (null): New.
        * subr.el (atom): New.
        * subr.el (listp): New.
        * subr.el (nlistp): New.
        * subr.el (bitp): New.
        * subr.el (zerop): New.
        * subr.el (true-list-p): New.   
        Move all these functions from C, they're not loop hotspots,
        they're easily implemented in Lisp, and implementing them in C
        costs less memory with NEWGC.
        * bytecomp.el (byte-compile-throw):
        #'null is no longer in C, don't include its code in
        * dumped-lisp.el:
        * dumped-lisp.el (preloaded-file-list):
        * loadup.el (gc-cons-threshold):
        * loadup.el (really-early-error-handler):
        * loadup.el (fboundp):
        * make-docfile.el (done):
        * make-docfile.el (process-args):
        * make-docfile.el (preloaded-file-list):
        * make-docfile.el (site-file-list):
        * packages.el (packages-add-suffix):
        * packages.el (packages-list-autoloads-path):
        * update-elc.el:
        * update-elc.el (preloaded-file-list):
        * update-elc.el (or):
        * update-elc.el (featurep):
        * update-elc.el (do-autoload-commands):
        Don't use those functions when running a bare-metal XEmacs binary.

2018-04-25  Aidan Kehoe  <kehoea@parhasard.net>

        * make-docfile.el (docfile-out-of-date):
        #'call-process can return a non-integer if the underlying process
        signaled, and exited for that reason. Handle this more gracefully.

2018-04-10  Aidan Kehoe  <kehoea@parhasard.net>

        * code-files.el (write-region):
        Document that APPEND can now be a numeric offset, indicating a
        point to seek to.

2018-02-18  Aidan Kehoe  <kehoea@parhasard.net>

        * simple.el (no-case-regexp-p):
        * simple.el (with-search-caps-disable-folding):
        * simple.el (with-interactive-search-caps-disable-folding):
        * simple.el (log-message-filter):
        Use `string-match-p' in these functions, no need to save the match
        data with same.
        * simple.el (clone-process):
        * simple.el (clone-buffer):
        * simple.el (clone-indirect-buffer):
        Ditto; use the same idiom throughout the file when stripping
        trailing <DIGIT+> patterns from strings.

2017-12-25  Aidan Kehoe  <kehoea@parhasard.net>

        * hyper-apropos.el (hyper-apropos-grok-variables):
        User variables' docstrings do not necessarily start with *, check
        for one before removing the first character from the output.

2017-12-24  Aidan Kehoe  <kehoea@parhasard.net>

        * test-harness.el (test-harness-from-buffer):
        Error in `Skip-Test-Unless' if BODY is not specified.

2017-12-22  Aidan Kehoe  <kehoea@parhasard.net>

        * descr-text.el (describe-char-unicodedata-file):
        The UnicodeData.txt installed with Perl no longer serves our
        needs. Use that installed by TeX instead, if available.
2017-12-22  Aidan Kehoe  <kehoea@parhasard.net>

        * compose.el: Rename from x-compose.el, it's not
        Remove the last of the X11-specific code, don't use the UABCD
        keysyms for some exotic composed base characters.
        * gtk-compose.el (gtk-compose): Require the new feature.
        * isearch-mode.el (isearch-pre-command-hook):
        * keymap.el (for):
        Update documentation, references to x-compose.el to reference the
        new name.

2017-12-01  Aidan Kehoe  <kehoea@parhasard.net>

        * about.el (about): New custom group for this file.
        * about.el (about-headline-face):
        * about.el (about-link-face):
        Provide and use a custom group for these faces, avoiding a
        distracting warning when viewing the about page.

2017-11-16  Aidan Kehoe  <kehoea@parhasard.net>

        * x-faces.el (x-library-search-path):
        Update this variable to include share/ subdirectories of all the
        potential prefixes, since rgb.txt is usually now in share/X11.
        * x-faces.el (x-color-list-internal):
        Use #'canoncase, not #'downcase when adding completion for the
        lowercase form, avoiding problems with Turkish locales.

2017-11-14  Aidan Kehoe  <kehoea@parhasard.net>

        * mule/cyrillic.el ("Cyrillic-ISO"):
        * mule/cyrillic.el ("Russian"):
        * mule/cyrillic.el ("Cyrillic-ALT"):
        Remove cyril-util from the features list of these language
        environments; `standard-display-cyrillic-translit' is the only
        function in that file, and it has an autoload entry
        already. Removing it from the features list is helpful in buildbot
        tests without installed packages.

2017-11-14  Aidan Kehoe  <kehoea@parhasard.net>

        * gutter-items.el (buffers-tab-items):
        Add a missing parenthesis after Stephen's last change, get things
        building again.

2017-11-14  Stephen J. Turnbull  <stephen@xemacs.org>

        * gutter-items.el (buffers-tab-items):
        Sort list before truncating it.  Clarify logic, remove comment.

2017-11-13  Aidan Kehoe  <kehoea@parhasard.net>

        * unicode.el (decode-char):
        Return nil instead of erroring when CODE cannot be encoded, as did
        this function pre-unicode-internal and as does (did) GNU's

2017-11-09  Aidan Kehoe  <kehoea@parhasard.net>

        Ben's approach in lib-src/make-case-conv.el didn't work, there are
        107 entries in CaseFolding.txt as of today where the first column
        is a lowercase letter, not an uppercase one. Parse UnicodeData.txt

        * mule/make-case-conv.el: New.
        Replacement for lib-src/make-case-conv.py, parsing UnicodeData.txt
        * mule/uni-case-conv.el:
        Update this file to reflect output from make-case-conv.el with
        recent UnicodeData.txt instead.

2017-10-29  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-extra.el (cl-macroexpand-all):
        When processing a let binding, and an existing symbol macro has
        the same symbol name as the let binding, delay shadowing until all
        bindings are processed. 

2017-10-26  Stephen J. Turnbull  <stephen@xemacs.org>

        * mule/japanese.el (shift_jis): Correct comment.

2017-10-26  Stephen J. Turnbull  <stephen@xemacs.org>

        * gutter-items.el (buffers-tab-omit-function):
        Clarify docstrings.

2017-10-12  Aidan Kehoe  <kehoea@parhasard.net>

        * frame.el (frame-utmost-window-2): Made into a label.
        * frame.el (frame-utmost-window-1): Use the label.
        Remove #'frame-utmost-window-2 from the global namespace.

2017-10-06  Aidan Kehoe  <kehoea@parhasard.net>

        * mule/chinese.el:
        * mule/chinese.el (for):
        * mule/chinese.el (chinese-big5/list):
        * mule/chinese.el (find-charset):
        * mule/mule-category.el (predefined-category-list):
        * mule/mule-charset.el:
        Remove Ben's attempt under unicode-internal to make Big5 into one
        charset. This is incompatible with byte-compiled code from 21.4,
        which uses the hackish chinese-big5-1, chinese-big5-2 charsets
        with ISO-2022 escapes to encode these characters.
        If at some point in the future where we use UTF-8 for compiled
        code this could be revisited.

2017-09-30  Aidan Kehoe  <kehoea@parhasard.net>

        * mule/thai.el:
        * mule/thai.el (thai-tis620):
        * mule/thai.el (tis-620):
        The charset thai-iso8859-11 is identical to thai-tis620 for our
        purposes, and its presence makes the digit-char test code fail on
        non-mule. Remove it.  Use tis-620, the preferred IANA name for
        related coding system, as the related coding system name. Provide
        iso-8859-11, not actually an IANA name, as an alias.

2017-09-25  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (concat):
        This function hasn't accepted individual fixnums as arguments in
        twenty years, and GNU's version of the function doesn't
        either. Remove all mention of it.
        Clarify the types of the elements accepted in the argument sequences.
        * subr.el (bvconcat):
        Clarify the types of the elements accepted in the argument sequences.

2017-09-16  Aidan Kehoe  <kehoea@parhasard.net>

        * startup.el:
        Remove `keyboard-type', which has been present since 1991 and
        never used. Don't do a make-compatible with it, since though it is
        present in GNU code it is not set or examined there. The byte
        compiler warning should be enough.

2017-09-07  Aidan Kehoe  <kehoea@parhasard.net>

        * rect.el (delete-extract-rectangle-line):
        Use (format "%*s" N "") instead of (spaces-string N) in this
        * rect.el (extract-rectangle-line): Ditto.
        * rect.el (spaces-strings): Removed.
        * rect.el (spaces-string): Removed.
        These aren't needed, (format "*s" N "") does the same job.
        * rect.el (apply-on-rectangle):
        * rect.el (delete-rectangle-line):
        * rect.el (open-rectangle-line):
        * rect.el (string-rectangle-line):
        * rect.el (clear-rectangle-line):
        * rect.el (rect):
        Fixup whitespace in this file.

2017-06-28  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (char-width): Move this to C, necessary as part of the
        unicode-internal support.

2017-05-30  Aidan Kehoe  <kehoea@parhasard.net>

        * about.el (about-xemacs):
        Correct a recently-introduced bug here, give the correct bounding
        keywords to #'parse-integer when working out the month of the
        release date.
        Don't check for xemacs-extra-name, xemacs-release-date being
        #'boundp, we control src/emacs.c, and can ensure they always are.

2017-03-15  Aidan Kehoe  <kehoea@parhasard.net>

        * make-docfile.el:
        Don't bother working around a berkeley-unix and next-mach bug
        that is likely long fixed anyway.
        Print the stderr of make-docfile to the terminal instead of simply
        discarding it.
        Pass through make-docfile's exit code.

2017-03-13  Aidan Kehoe  <kehoea@parhasard.net>

        * ChangeLog:
        * data.c:
        Update mid.gmane.org to mid.xemacs.org. We miss you, Gmane.

2017-03-12  Aidan Kehoe  <kehoea@parhasard.net>

        Replace calls to #'string-match, where the match data isn't used,
        with calls to #'string-match-p. This will lead to fewer
        undesired interactions (= bugs) with other code.

        * abbrev.el (define-abbrev):
        * auto-save.el (auto-save-file-name-p):
        * auto-save.el (auto-save-original-name):
        * buff-menu.el (list-buffers-internal):
        * byte-optimize.el (byte-compile-log-lap-1):
        * bytecomp-runtime.el (error-unless-tests-match):
        * bytecomp-runtime.el (byte-compile-file-being-compiled):
        * bytecomp.el (byte-recompile-directory):
        * bytecomp.el (byte-recompile-file):
        * bytecomp.el (batch-byte-compile-one-file):
        * cl-extra.el (names):
        * cmdloop.el:
        * cmdloop.el (keyboard-escape-quit):
        * code-files.el (find-file-coding-system-for-read-from-filename):
        * code-files.el (find-file-coding-system-for-write-from-filename):
        * code-process.el (call-process):
        * code-process.el (start-process):
        * code-process.el (network-stream-open-starttls):
        * code-process.el (open-network-stream):
        * cus-edit.el (custom-guess-type):
        * cus-edit.el (customize-apropos):
        * custom.el (custom-group-of-mode):
        * custom.el (custom-load-symbol):
        * derived.el (derived-mode-make-docstring):
        * descr-text.el (describe-text-sexp):
        * etags.el (get-tag-table-buffer):
        * etags.el (add-to-tag-completion-table):
        * faces.el (face-complain-about-font):
        * files.el:
        * files.el (file-chase-links):
        * files.el (find-file-noselect):
        * files.el (set-auto-mode):
        * files.el (hack-local-variables):
        * files.el (hack-one-local-variable):
        * files.el (file-name-sans-versions):
        * files.el (make-backup-file-name-1):
        * files.el (backup-file-name-p):
        * files.el (backup-extract-version):
        * files.el (file-relative-name):
        * files.el (rename-uniquely):
        * files.el (wildcard-to-regexp):
        * files.el (shell-quote-wildcard-pattern):
        * files.el (insert-directory):
        * files.el (file-name-non-special):
        * files.el (file-system-ignore-case-p):
        * fill.el:
        * fill.el (fill-context-prefix):
        * finder.el (finder-edit):
        * finder.el (finder-view):

2017-03-12  Aidan Kehoe  <kehoea@parhasard.net>

        Clean up auto-save.el, extend the functionality of

        * auto-save.el:
        * auto-save.el (efs-auto-save-remotely):
        Always provide a defvar for this, since this file is dumped efs.el
        will not be loaded before auto-save.el.
        * auto-save.el (auto-save-checked-directory):
        Fix some indentation; remove some long-commented code, avoiding
        * auto-save.el (auto-save-name-in-fixed-directory):
        We have DOC now, it's not expensive of RAM to have function
        docstrings, uncomment this one.
        * auto-save.el (auto-save-name-in-same-directory):
        * auto-save.el (auto-save-reserved-chars):
        Expand the docstring of this a little.
        * auto-save.el (auto-save-escape-name):
        Preserve those characters which wouldn't be preserved by
        file-name-coding-system in this function.
        * auto-save.el (auto-save-unescape-name):
        Do the inverse of the newly-added functionality of
        * auto-save.el (auto-save-cyclic-hash-14):
        Uncomment the docstring for this function.

2017-03-12  Aidan Kehoe  <kehoea@parhasard.net>

        * auto-save.el (auto-save-unescape-name):
        Fix a bug in this, limit the hex parsing correctly.

2017-03-09  Aidan Kehoe  <kehoea@parhasard.net>

        * disp-table.el (standard-display-g1):
        * disp-table.el (standard-display-graphic):
        * disp-table.el (standard-display-underline):
        * files.el (make-backup-file-name-1):
        * files.el (wildcard-to-regexp):
        * gtk-file-dialog.el (gtk-file-dialog-update-dropdown):
        * info.el (Info-all-case-regexp):
        * info.el (Info-scroll-next):
        * map-ynp.el (map-y-or-n-p):
        * menubar.el (menu-item-generate-accelerator-spec):
        * menubar.el (menu-max-items):
        * minibuf.el (get-user-response):
        * package-admin.el (package-admin-check-manifest):
        In contexts like (concat ... (char-to-string x) ...), (list x) is
        a more idiomatic and faster way to construct a sequence. Use it.

        * autoload.el (autoload-featurep-protect-autoloads):
        The fixnum-char mapping for values less than #x100 is stable, no
        need to construct the string "\x00-\xff" at runtime.

2017-03-04  Aidan Kehoe  <kehoea@parhasard.net>

        * startup.el (normal-top-level):
        Bind an uninterned #:buffer, rather than #:ntl-buffer, which is
        less distracting in backtraces.
        (Commit chiefly done to help get the xemacs-commit hook posting

2017-02-20  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-macs.el:
        * cl-macs.el (with-hash-table-iterator): New.
        Make this Common Lisp special form available, the relevant C
        runtime support has just been added.

2017-02-13  Aidan Kehoe  <kehoea@parhasard.net>

        * autoload.el (make-autoload):
        * cl-macs.el (get-setf-method):
        * files.el (abbreviate-file-name):
        * regexp-opt.el (regexp-opt-depth):
        * simple.el (delete-trailing-whitespace):
        Replace (save-match-data (string-match ...)), detected
        algorithmically, with (string-match-p ...). Similarly for the one
        instance of (save-match-data (looking-at ...)).

2017-02-09  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (safe-length): New. Moved here from data.c, there's no
        indication to have this in C.

2017-01-15  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (with-output-to-string):
        Sigh, despite that we did not document that standard-output would
        always be a Lisp buffer, a decent amount of code depends on that
        behaviour, and so we cannot implement this in terms of
        #'make-string-output-stream. Thanks for the bug report, Jerry James!

2017-01-14  Aidan Kehoe  <kehoea@parhasard.net>

        * minibuf.el (mouse-rfn-setup-vars): Move this to being a label.
        * minibuf.el (mouse-read-file-name-1):
        Define, use the label.

2017-01-14  Aidan Kehoe  <kehoea@parhasard.net>

        * cus-face.el:
        * cus-face.el (custom-face-attributes):
        Merge GNU's :height, equivalent to :size if a fixnum, providing a
        scale factor if a float, and transforming in some way if a
        * cus-face.el (custom-set-face-font-height): New.
        Implementation to set :height.
        * faces.el:
        * faces.el (make-face-family):
        * faces.el (make-face-size):
        Use #'apply-partially in these two functions, so the byte compiler
        can check the lambda bodies for sanity.
        * faces.el (make-face-height): New.
        Do the bulk of the work of implementing the :height keyword. Not
        done yet; code to make a proportional font size update on changing
        of the font size from the font menu.

2017-01-14  Aidan Kehoe  <kehoea@parhasard.net>

        * cus-face.el (custom-face-inherit):
        Whoops Ben in 7efd3a9bbcfb, (vector spec) does not check whether
        SPEC is a vector, do it properly.

2017-01-14  Aidan Kehoe  <kehoea@parhasard.net>

        * font-menu.el:
        * font-menu.el (font-menu-change-face): Renamed.
        * font-menu.el (font-menu-maybe-change-face): New name for
        Also give it a more comprehensive docstring, to avoid the sort of
        mistake of 30118fdc4f1f.
        No need for #'string-equal (there is on balance usually no need
        for #'string-equal, #'equal has a bytecode).

        * font-menu.el (font-menu-set-font):
        Revert part of 30118fdc4f1f of 20021112, which meant the font menu
        no longer worried about whether a given face was equivalent to the
        current default face when deciding whether to change it.
        Only message about changing a font if it is changed.

        * cl-macs.el (assert):
        Remove the artificial restriction that FORM must be a cons.
        This restriction is also present in Common Lisp, but keeping it
        adds no value for us.

2016-12-30  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-extra.el (cl-macroexpand-all):
        Shadow symbol macros when the corresponding symbols are
        encountered in lambda argument lists with the symbol macro body.
        Previously this was buggy in that the lambda argument lists were
        left alone and the expansion was applied to the body of the
        lambda, which no-one intended.
        Implement a new SHADOW option for individual symbol macros,
        specifying the Common Lisp behaviour.

        * cl-macs.el (symbol-macrolet):
        Document this shadowing in the docstring. Document the
        transformation of `let', `let*' to `letf', `letf*'.
        Document the new SHADOW option.

        * cl-macs.el (cl-defsubst-expand): 
        Use the new SHADOW option in our symbol macros, to avoid problems
        with argument substitution inside let bindings or lambda
        expressions where that would be inappropriate.
2016-12-29  Aidan Kehoe  <kehoea@parhasard.net>

        Remove duplicate (and silently overridden) buffers tab Lisp code,

        * buff-menu.el:
        * buff-menu.el (buffers-tab): Removed.
        * buff-menu.el (buffers-tab-max-size): Removed.
        * buff-menu.el (buffers-tab-switch-to-buffer-function): Removed.
        * buff-menu.el (buffers-tab-omit-function): Removed.
        * buff-menu.el (buffers-tab-selection-function): Removed.
        * buff-menu.el (buffers-tab-filter-functions): Removed.
        * buff-menu.el (buffers-tab-sort-function): Removed.
        * buff-menu.el (buffers-tab-face): Removed.
        * buff-menu.el (buffers-tab-grouping-regexp): Removed.
        * buff-menu.el (buffers-tab-format-buffer-line-function): Removed.
        * buff-menu.el (buffers-tab-default-buffer-line-length): Removed.
        * buff-menu.el (buffers-tab-max-buffer-line-length): Removed.
        * buff-menu.el (buffers-menu-omit-function): New.
        * buff-menu.el (buffers-tab-switch-to-buffer): Removed.
        * buff-menu.el (select-buffers-tab-buffers-by-mode): Removed.
        * buff-menu.el (format-buffers-tab-line): Removed.
        * buff-menu.el (buffers-tab-items): Removed.

        * files.el (switch-to-next-buffer):
        * files.el (switch-to-previous-buffer)
        Use the usually-equivalent buffers-menu-omit-function in
        #'switch-to-{next,previous}-buffer, since these functions are
        always dumped and the buffers tab omit-function may well not be.

        * files.el (switch-to-next-buffer-in-group): Removed.
        * files.el (switch-to-previous-buffer-in-group): Removed.
        Move #'switch-to-{next,previous}-buffer-in-group to
        gutter-items.el, given they rely on the buffer tab grouping being

        * gutter-items.el:
        * gutter-items.el (buffers-tab): New.
        * gutter-items.el (buffers-tab-omit-some-buffers): New.
        * gutter-items.el (select-buffers-tab-buffers-by-mode):
        * gutter-items.el (switch-to-next-buffer-in-group): New.
        * gutter-items.el (switch-to-previous-buffer-in-group): New.

        * keydefs.el:
        Only give #'switch-to-{next,previous}-buffer-in-group a keybinding
        if the gutter is available.

2016-12-27  Aidan Kehoe  <kehoea@parhasard.net>

        * about.el (about-xemacs):
        * auto-save.el (auto-save-unescape-name):
        * cl-extra.el:
        * cl-extra.el (upper-case-p):
        * descr-text.el (unidata-initialize-unihan-database):
        * files.el:
        * files.el (backup-extract-version):
        * font.el (font-parse-rgb-components):
        Use (parse-integer ... :radix 16) rather than (string-to-number
        (match-string ...) 16) where appropriate, creating less garbage

2016-11-28  Aidan Kehoe  <kehoea@parhasard.net>

        * minibuf.el (read-from-minibuffer):
        Bind `help-form' within this function rather than using

        * help.el (function-really-at-point):
        Rename this label from #'function-at-point, which should fix the
        build (the file byte-compiled and ran fine, which is usually
        enough). Thank you Mats Lidell and the buildbot.

2016-11-27  Aidan Kehoe  <kehoea@parhasard.net>

        * help.el (function-at-point): New.
        * help.el (function-at-event): New.
        * help.el (function-called-at-point): Reworked.
        * help.el (function-at-point): Reworked.
        * help.el (help-keymap-with-help-key): Removed, long obsolete.
        Add support for detecting the current Lisp function if we are in
        the context of a C file.

2016-11-23  Aidan Kehoe  <kehoea@parhasard.net>

        * dumped-lisp.el (preloaded-file-list):
        Restore mule/digit.el to the list of dumped files, dropped
        accidentally in the Unicode merge.

2016-11-21  Aidan Kehoe  <kehoea@parhasard.net>

        * obarray.el (obarray-map):
        Correct the spelling of #'maphash when marking this for

2016-11-20  Aidan Kehoe  <kehoea@parhasard.net>

        * abbrev.el:
        * abbrev.el (defining-abbrev-turns-on-abbrev-mode):
        * abbrev.el (make-abbrev-table):
        * abbrev.el (clear-abbrev-table):
        * abbrev.el (define-abbrev-table):
        * abbrev.el (define-abbrev):
        * abbrev.el (inverse-add-abbrev):
        * abbrev.el (expand-region-abbrevs):
        Implement abbrev tables as hash-table objects, not as vectors.

        * derived.el:
        * derived.el (derived):

        * obarray.el: New.
        * obarray.el (xemacs-intern-in-vector):
        * obarray.el (xemacs-intern-soft-in-vector):
        * obarray.el (xemacs-unintern-in-vector):
        * obarray.el (xemacs-mapatoms-in-vector):
        * obarray.el (xemacs-next-iteration-in-vector):
        For compatibility with all the emacs code out there that expects
        that #'intern and friends can take vector arguments, provide a
        non-dumped but autoloaded implementation of traditional emacs
        obarrays, with the buckets implemented as individual slots in a
        non-resizing vector and each entry in a bucket chained through a
        symbol's next pointer.

        * obarray.el (obarray-default-size): New.
        * obarray.el (obarray-make): New.
        * obarray.el (obarrayp): New.
        * obarray.el (obarray-get): New.
        * obarray.el (obarray-put): New.
        * obarray.el (obarray-remove): New.
        * obarray.el (obarray-map): New.
        Import these ill-conceived GNU functions, mark them compatible.

        * obsolete.el:
        Provide autoloads for the traditional-obarray compatibility

2016-11-19  Aidan Kehoe  <kehoea@parhasard.net>

        * fontconfig.el (fc-define-property):
        Supply the right number of arguments to #'format when creating the
        fc-pattern-del- functions, now we have diagnostics that complain
        when too many arguments are supplied.

2016-11-15  Aidan Kehoe  <kehoea@parhasard.net>

        * about.el (about-finish-buffer):
        Restore an omitted arglist here.
        * bytecomp.el (byte-compile-output-docform):
        No need for char= here, use #'eql which will compile to a byte code.
        * bytecomp.el (byte-compile-lambda):
        Check for a likely interactive spec when examining the arglist
        here, warn if encountered, the programmer probably omitted the
        arglist (see the above about.el change for context).

2016-11-07  Aidan Kehoe  <kehoea@parhasard.net>

        * subr.el (char-int-p): New.
        * subr.el (char-or-char-int-p): New.
        * subr.el (char-or-string-p): New.
        * subr.el (integer-or-marker-p): New.
        * subr.el (integer-or-char-p): New.
        * subr.el (integer-char-or-marker-p): New.
        * subr.el (number-or-marker-p): New.
        * subr.el (number-char-or-marker-p): New.
        Move these basic predicates to subr.el from data.c

2016-10-30  Aidan Kehoe  <kehoea@parhasard.net>

        * dumped-lisp.el (preloaded-file-list):
        Dump (preload) "font-menu" when the menubar is available,
        "x-font-menu" when X and the menubar is available.
        * font-menu.el (font-menu-family-constructor):
        * font-menu.el (font-menu-size-constructor):
        * font-menu.el (font-menu-weight-constructor):
        * gtk-font-menu.el (gtk-reset-device-font-menus):
        * gtk-font-menu.el (gtk-font-menu-font-data):
        * msw-font-menu.el (mswindows-reset-device-font-menus):
        * msw-font-menu.el (mswindows-font-menu-font-data):
        * x-font-menu.el (x-reset-device-font-menus-core):
        * x-font-menu.el (x-font-menu-font-data-xft):
        * x-font-menu.el (x-font-menu-font-data-core):
        Use #'assoc, which has a native implementation, instead of
        #'vassoc, which is implemented in non-dumped Lisp, for the font
        menu device cache.
        Dump the font menu implementation code when the relevant features
        are compiled in.
        Makes the font face menu a little faster, though the bottleneck is
        still loading the faces from the X server.

2016-09-11  Aidan Kehoe  <kehoea@parhasard.net>

        * abbrev.el (abbrev-symbol):
        Use a label rather than binding a lambda when examining the local
        and global tables.
        * about.el (about-finish-buffer):
        Use a label instead of binding a lambda.
        * gtk-password-dialog.el (gtk-password-dialog-new):
        * minibuf.el (minibuffer-complete-word):
        Use a label rather than binding a lambda here; don't needlessly
        bind something to the value of last-command-char.
        * minibuf.el (read-file-name-internal-1):
        Use #'file-name-absolute-p here, as an old comment suggested.
        * minibuf.el (read-directory-name-internal):
        Use a label rather than binding a lambda here.
        * minibuf.el (mouse-read-file-name-1):
        * mouse.el (default-mouse-track-cleanup-hook):
        * mouse.el (default-mouse-track-cleanup-extent):

2016-11-04  Aidan Kehoe  <kehoea@parhasard.net>

        * select.el:
        * select.el (select-convert-in):
        Pass through VALUE if it is non-nil and there is no handler, don't
        discard it.  Useful for TARGETS, timestamps.
        * select.el (select-convert-from-cf-unicodetext):
        Supply this with an implementation even when mswindows-unicode
        isn't available as a coding system.
        * select.el (selection-converter-out-alist):
        * select.el (selection-converter-in-alist):
        Only include CF_TEXT in these alists conditionally (at dump time),
        if the relevant coding system is available.

2016-09-11  Aidan Kehoe  <kehoea@parhasard.net>

        * gutter-items.el (buffers-tab-switch-to-buffer):
        Don't walk windows and cons up the windows-of-buffers list twice,
        needlessly, we only need one window and #'get-buffer-window does
        the same thing without consing.
        * gutter-items.el (select-buffers-tab-buffers-by-mode):
        Use the regexp engine a little less in this function.
        * gutter-items.el (format-buffers-tab-line):
        Don't use the regexp engine in this function. Don't repeatedly
        call #'buffer-name, save its result.
        * gutter-items.el (build-buffers-tab-internal): Move this to being
        a label within #'buffers-tab-items.
        * gutter-items.el (buffers-tab-items):
        Be more idiomatic in checking buffers-tab-filter-function, no need
        to traverse the list twice.
        Improve the algorithmic complexity of the code to implement the
        buffers-tab-max-size functionality.
        * menubar.el (check-menu-syntax):
        * menubar.el (menu-item-strip-accelerator-spec):
        Don't use the regexp engine in this function, we're called a good
        deal in long menus and it's easy to implement it with functions
        that have bytecodes.
        * menubar.el (menu-item-generate-accelerator-spec):
        Make this function's implementation faster in the common case
        where OMIT-CHARS-LIST is nil.

2016-08-19  Aidan Kehoe  <kehoea@parhasard.net>

        * mwheel.el:
        Sync functionality (though surprisingly little code) from
        GNU. Thank you GNU.
        Remove some unneeded compatibility code.
        * mwheel.el (mwheel-scroll-amount): Removed.
        * mwheel.el (mouse-wheel-scroll-amount): New.
        Use GNU's newer, more sensible name for this variable.
        * mwheel.el (mouse-wheel-click-event): New.
        Event to ignore for a brief period after using the mouse wheel.
        * mwheel.el (mouse-wheel-inhibit-click-time): New.
        Numbeer of seconds to inhibit `mouse-wheel-click-event' after
        using the mouse wheel.

        * mwheel.el (mouse-wheel-progressive-speed): New.
        Should the mouse wheel scroll more quickly if it is moved more
        * mwheel.el (mwheel-follow-mouse): Removed.
        * mwheel.el (mouse-wheel-follow-mouse): New.
        Rename the former to the latter.

        * mwheel.el (mouse-wheel-scroll-up-function): New variable, the
        command to call when scrolling up using the wheel, defaulting to
        * mwheel.el (mouse-wheel-scroll-down-function): New variable,
        defaulting to #'scroll-down-command.
        * mwheel.el (mwheel-install):
        * mwheel.el (mwheel-scroll): 
        * mwheel.el (mouse-wheel-scroll): Rename `mwheel-scroll' to
        `mouse-wheel-scroll', something GNU (oddly) haven't, but something
        that is clearer and more sensible.

        * mwheel.el (mouse-wheel-scroll, mwheel-install):
        Add autoload forms for these, since the auto-autoload code doesn't
        understand how to parse symbol-macrolet.

        * obsolete.el:
        * obsolete.el ('mwheel-scroll): Make this available as an obsolete
        alias for #'mouse-wheel-scroll.
        * obsolete.el ('mwheel-scroll-amount): New.
        Make this available as an obsolete variable alias for
        * obsolete.el ('mwheel-follow-mouse): New.
        Make this available as an obsolete variable alias for

        * behavior-defs.el:
        * behavior-defs.el (mwheel): Move the mwheel behavior here from
        mwheel.el, so users can disable it from their init file.
        * keydefs.el:
        Be a little clearer in the implementation of this, bind the mouse
        wheel events to #'mouse-wheel-scroll, which is autoloaded.

        Incorporates the following GNU changes:

    2002-12-02  Andreas Schwab  <schwab@suse.de>

        * mwheel.el (mouse-wheel-scroll-amount): Fix customize type.

    2002-11-29  Markus Rost  <rost@math.ohio-state.edu>

        * mwheel.el (mouse-wheel-inhibit-click-time): Fix custom type.

    2002-11-29  Kim F. Storm  <storm@cua.dk>

        * mwheel.el: Avoid accidental yanking of text while scrolling with
        the mouse wheel.  This adds a short period after each mouse wheel
        scroll event where a click on the mouse wheel button is ignored.
        (mouse-wheel-click-event, mouse-wheel-inhibit-click-time): New customs.
        (mouse-wheel-click-button, mwheel-inhibit-click-event-timer): New vars.
        (mwheel-inhibit-click-timeout, mwheel-filter-click-events): New defuns.
        (mwheel-scroll): Add mwheel-filter-click-events as pre-command-hook.
        Start mwheel-inhibit-click-event-timer with timeout handler

    2002-11-11  Markus Rost  <rost@math.ohio-state.edu>

        * mwheel.el (mouse-wheel-down-button, mouse-wheel-up-button):
        Declare with defvar, not with defcustom.

    2002-08-29  John Paul Wallington  <jpw@shootybangbang.com>

        * mwheel.el (mouse-wheel-up-button): Doc fix.

    2002-06-27  Stefan Monnier  <monnier@cs.yale.edu>

        * mwheel.el (mouse-wheel-change-button): Deactivate before changing.
        (mouse-wheel-up-button, mouse-wheel-down-button): Obsolete.
        (mouse-wheel-up-event, mouse-wheel-down-event): New vars.
        (mouse-wheel-follow-mouse): Change default to t.
        (mwheel-event-button): Return the basic event symbol.
        (mwheel-scroll): Work with non-mouse events.
        (mouse-wheel-mode): Use the new vars.
        (mwheel-install): Obey `uninstall'.

    2002-06-24  Stefan Monnier  <monnier@cs.yale.edu>

        * mwheel.el (mouse-wheel-scroll-amount, mwheel-scroll)
        (mouse-wheel-mode): Don't require the first element to be modifier-free.

    2002-02-19  Sam Steingold  <sds@gnu.org>

        * mwheel.el (mouse-wheel-scroll-amount): Can specify different
        scroll amounts for different modifiers now.
        (mwheel-scroll): Handle the new `mouse-wheel-scroll-amount'
        format properly.
        (mouse-wheel-mode): Ditto.

    2001-11-19  Stefan Monnier  <monnier@cs.yale.edu>

        * mwheel.el (mouse-wheel-scroll-amount): Allow float values.
        (mouse-wheel-progressive-speed): New var.
        (mwheel-scroll): Use it and handle float values.

    2004-11-11  Stefan Monnier  <monnier@iro.umontreal.ca>

        * mwheel.el (mouse-wheel-scroll-amount): Allow float values.
        (mouse-wheel-progressive-speed): New var.
        (mwheel-scroll): Use it and handle float values.

    2006-02-14  Juanma Barranquero  <lekktu@gmail.com>

        * help.el (where-is): Fix message for remapped commands.

        * mwheel.el (mouse-wheel-click-event, mouse-wheel-mode):
        Fix typos in docstrings.

    2006-02-11  Martin Rudalics  <rudalics@gmx.at>

        * mwheel.el (mouse-wheel-up-event): Doc fix.

    2008-06-12  Glenn Morris  <rgm@gnu.org>

        * mwheel.el (mouse-wheel-follow-mouse, mwheel-event-window):
        Evaluate definitions when compiling.  Reverse tests.

    2009-11-25  Juri Linkov  <juri@jurta.org>

        Mouse-wheel scrolling for DocView Continuous mode.  (Bug#4896)

        * mwheel.el (mwheel-scroll-up-function)
        (mwheel-scroll-down-function): New defvars.
        (mwheel-scroll): Funcall `mwheel-scroll-up-function' instead of
        `scroll-up', and `mwheel-scroll-down-function' instead of

    2000-11-06  Miles Bader  <miles@lsi.nec.co.jp>

        * mwheel.el (mouse-wheel-scroll-amount): Rename from
        (mouse-wheel-follow-mouse): Rename from `mwheel-follow-mouse'.
        (mouse-wheel-mode): Use (featurep 'xemacs) instead of
        string-matching against the version string.
2016-07-30  Aidan Kehoe  <kehoea@parhasard.net>

        * menubar-items.el (build-buffers-menu-internal): Move to being a
        label within #'buffers-menu-filter.
        * menubar-items.el (buffers-menu-filter):
        Implement #'build-buffers-menu-filter as an inlined label. Remove
        a compatibility hack in its implementation.
        Use backquotes to construct the individual menu items, making
        things a little clearer.
        Avoid uselessly calling #'length a few times, where #'nthcdr is
        appropriate to determine if a list's length is larger than a given
        Avoid uselessly calling #'nreverse twice if dealing with groups.
        * menubar-items.el (coding-system-menu-filter):
        Correct a docstring in passing.
        * menubar-items.el (buffers-menu-format-buffer-line-function):
        Update the documentation of this function to document that we've
        removed a compatibility hack.

2016-08-17  Aidan Kehoe  <kehoea@parhasard.net>

        * gnuserv.el (gnuserv-string): Removed.
        * gnuserv.el (gnuserv-request-stream): New.
        Replace gnuserv-string with gnuserv-request-stream, now we have
        native support for string output streams.
        * gnuserv.el (gnuserv-process-filter):
        Avoid using the regexp engine in this function. Avoid using the
        Lisp reader, use #'parse-integer, it's cheaper when parsing
        * gnuserv.el (gnuserv-start-1):
        Use #'clear-output here.
        * subr.el (with-output-to-string):
        Implement this using #'make-string-output-stream.

2016-07-06  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-extra.el (terpri): Move this here from print.c.
        * cl-macs.el: Document why there's no benefit to a compiler macro
        for #'terpri.
        * make-docfile.el:
        * make-docfile.el (message):
        * make-docfile.el (docfile-out-of-date):
        Don't use #'terpri at build time, it's no longer available,
        (write-char ?\n) instead.

2016-06-30  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-extra.el (concatenate): Implement #'concatenate in
        sequence.c, implement #'concat, #'vconcat, #'bvconcat in terms of
        it rather than the other way around.

        * find-paths.el (paths-no-lisp-directory-regexp):
        * find-paths.el (paths-construct-path):
        * find-paths.el (paths-construct-emacs-directory):
        * find-paths.el (construct-emacs-version-name):
        * find-paths.el (paths-directories-which-exist):
        * loadup.el (really-early-error-handler):
        * make-docfile.el (process-args):
        * packages.el (packages-add-suffix):
        * packages.el (packages-list-autoloads-path):
        * update-elc.el (preloaded-file-list):
        * update-elc.el (do-autoload-commands):
        Use #'concatenate rather than #'concat in these files run at build
        time, where #'concat's new implementation from subr.el is not
        * subr.el:
        * subr.el (concat): Moved here from fns.c.
        * subr.el (vconcat): Moved here from fns.c.
        * subr.el (bvconcat): Moved here from fns.c.
        Implement all three in terms of #'concatenate. Maintain the
        #'concat bytecode for the moment.

2016-01-04  Stephen J. Turnbull  <stephen@xemacs.org>

        * cl-seq.el (delete-if): Fix typo in docstring.

2015-09-26  Michael Sperber  <mike@xemacs.org>

        * info.el (Info-read-subfile): Follow change in Makeinfo 5.0 with
        arithmetic of node positions.

2015-06-22  Stephen J. Turnbull  <stephen@xemacs.org>

        * itimer-autosave.el (auto-save-timeout): Customize in group 'auto-save.

2015-06-11  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-macs.el (equalp):
        Fix a bug in this compiler macro when passed constants in a
        certain order.

2015-06-03  Aidan Kehoe  <kehoea@parhasard.net>

        * code-files.el (load):
        Revise this to respect load-ignore-out-of-date-elc-files, rather
        than leaving that to #'load-internal. Avoids a corner case where
        the source and the compiled file have different, incompatible
        Move the call to #'substitute-in-file-name here.
        No longer check for a zero-length filename, since #'load-internal
        no longer chokes on same and errors correctly.

2015-05-15  Aidan Kehoe  <kehoea@parhasard.net>

        * simple.el:
        * simple.el (line-number): Moved to buffer.c; we have an existing
        line number cache in C, it's a shame not to have it available.

2015-05-29  Aidan Kehoe  <kehoea@parhasard.net>

        * byte-optimize.el (side-effect-free-fns):
        Add #'integer-length, #'logcount here.
        * cl-extra.el:
        * cl-extra.el (integer-length):
        Update this to avoid allocating memory.
        * cl-extra.el (logcount): New. Return the number of one bits in
        INTEGER, if non-negative. Function from Common Lisp.

2015-04-11  Aidan Kehoe  <kehoea@parhasard.net>

        * mule/mule-cmds.el (set-locale-for-language-environment):
        Bind `position' as a local variable here, as was the original

2015-04-11  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-macs.el:
        * cl-macs.el (check-type):
        Correct the sense of the type test here when PLACE is not
        setf'able, something which gave confusing errors with literal
        fixnums or, e.g., (+ 30 40).

2015-04-04  Aidan Kehoe  <kehoea@parhasard.net>

        * gutter-items.el (append-progress-feedback):
        * gutter-items.el (abort-progress-feedback):
        Correct comments in both these functions, it's the progress stack
        being adjusted, not the message stack.
        * simple.el (message-stack):
        Describe my recent change in the structure of this.
        * simple.el (current-message):
        Adjust the implementation of this to always return the string

2015-04-03  Aidan Kehoe  <kehoea@parhasard.net>

        * gnuserv.el (gnuserv-edit-files):
        No need to memorise the device created for the sake of C-x #, if
        the client is not waiting for us.
        Fixes a bug in the following situation:
        -- Start gnuserv from an XEmacs within screen
        -- Call gnuclient with an X11 display available, connecting
           successfully to that XEmacs and creating an X11 frame
        -- Then call gnuclient file-name.txt, save the file, then type C-x
        #; this deletes all the frames on the device, which it shouldn't.

2015-04-01  Aidan Kehoe  <kehoea@parhasard.net>

        When calling #'string-match with a REGEXP without regular
        expression special characters, call #'search, #'mismatch, #'find,
        etc. instead, making our code less likely to side-effect other
        functions' match data and a little faster.

        * apropos.el (apropos-command):
        * apropos.el (apropos):
        Call (position ?\n ...) rather than (string-match "\n" ...) here.
        * buff-menu.el:
        * buff-menu.el (buffers-menu-omit-invisible-buffers):
        Don't fire up the regexp engine just to check if a string starts
        with a space.
        * buff-menu.el (select-buffers-tab-buffers-by-mode):
        Don't fire up the regexp engine just to compare mode basenames.
        * buff-menu.el (format-buffers-tab-line):
        * buff-menu.el (build-buffers-tab-internal): Moved to being a
        label within the following.
        * buff-menu.el (buffers-tab-items): Use the label.
        * bytecomp.el (byte-compile-log-1):
        Don't fire up the regexp engine just to look for a newline.
        * cus-edit.el (get):
        * cus-edit.el (custom-variable-value-create):
        Ditto, but for a colon.
        * descr-text.el (describe-text-sexp):
        * descr-text.el (describe-char-unicode-data):
        Use #'split-string-by-char given that we're just looking for a
        * descr-text.el (describe-char):
        Don't fire up the regexp engine just to look for a newline.
        * disass.el (disassemble-internal):
        * files.el (file-name-sans-extension):
        Implement this using #'position.
        * files.el (file-name-extension):
        Correct this function's docstring, implement it in terms of
        * files.el (insert-directory):
        Don't fire up the regexp engine to split a string by space; don't
        reverse the list of switches, this is actually a longstand bug as
        far as I can see.
        * gnuserv.el (gnuserv-process-filter):
        Use #'position here, instead of consing inside #'split-string
        * gtk-file-dialog.el (gtk-file-dialog-update-dropdown):
        Use #'split-string-by-char here, don't fire up #'split-string for
        * gtk-font-menu.el (hack-font-truename):
        Implement this more cheaply in terms of #'find,
        #'split-string-by-char, #'equal, rather than #'string-match,
        #'split-string, #'string-equal.
        * hyper-apropos.el (hyper-apropos-grok-functions):
        * hyper-apropos.el (hyper-apropos-grok-variables):
        Look for a newline using #'position rather than #'string-match in
        these functions.
        * info.el (Info-insert-dir):
        * info.el (Info-insert-file-contents):
        * info.el (Info-follow-reference):
        * info.el (Info-extract-menu-node-name):
        * info.el (Info-menu):
        Look for fixed strings using #'position or #'search as appropriate
        in this file.
        * ldap.el (ldap-decode-string):
        * ldap.el (ldap-encode-string):
        #'encode-coding-string, #'decode-coding-string are always
        available, don't check if they're fboundp.
        * ldap.el (ldap-decode-address):
        * ldap.el (ldap-encode-address):
        Use #'split-string-by-char in these functions.
        * lisp-mnt.el (lm-creation-date):
        * lisp-mnt.el (lm-last-modified-date):
        Don't fire up the regexp engine just to look for spaces in this file.
        * menubar-items.el (default-menubar):
        Use (not (mismatch ...)) rather than #'string-match here, for
        simple regexp.
        Use (search "beta" ...) rather than (string-match "beta" ...)
        * menubar-items.el (sort-buffers-menu-alphabetically):
        * menubar-items.el (sort-buffers-menu-by-mode-then-alphabetically):
        * menubar-items.el (group-buffers-menu-by-mode-then-alphabetically):
        Don't fire up the regexp engine to check if a string starts with
        a space or an asterisk.
        Use the more fine-grained results of #'compare-strings; compare
        case-insensitively for the buffer menu.
        * menubar-items.el (list-all-buffers):
        * menubar-items.el (tutorials-menu-filter):
        Use #'equal rather than #'string-equal, which, in this context,
        has the drawback of not having a bytecode, and no redeeming
        * minibuf.el:
        * minibuf.el (un-substitute-in-file-name):
        Use #'count, rather than counting the occurences of $ using the
        regexp engine.
        * minibuf.el (read-file-name-internal-1):
        Don't fire up the regexp engine to search for ?=.
        * mouse.el (mouse-eval-sexp):
        Check for newline with #'find.
        * msw-font-menu.el (mswindows-reset-device-font-menus):
        Split a string by newline with #'split-string-by-char.
        * mule/japanese.el:
        * mule/japanese.el ("Japanese"):
        Use #'search rather than #'string-match; canoncase before
        comparing; fix a bug I had introduced where I had been making case
        insensitive comparisons where the case mattered.
        * mule/korea-util.el (default-korean-keyboard):
        Look for ?3 using #'find, not #'string-march.
        * mule/korea-util.el (quail-hangul-switch-hanja):
        Search for a fixed string using #'search.
        * mule/mule-cmds.el (set-locale-for-language-environment):
        #'position, #'substitute rather than #'string-match,
        * newcomment.el (comment-make-extra-lines):
        Use #'search rather than #'string-match for a simple string.
        * package-get.el (package-get-remote-filename):
        Use #'position when looking for ?@
        * process.el (setenv):
        * process.el (read-envvar-name):
        Use #'position when looking for ?=.
        * replace.el (map-query-replace-regexp):
        Use #'split-string-by-char instead of using an inline
        implementation of it.
        * select.el (select-convert-from-cf-text):
        * select.el (select-convert-from-cf-unicodetext):
        Use #'position rather than #'string-match in these functions.
        * setup-paths.el (paths-emacs-data-root-p):
        Use #'search when looking for simple string.
        * sound.el (load-sound-file):
        Use #'split-string-by-char rather than an inline reimplementation
        of same.
        * startup.el (splash-screen-window-body):
        * startup.el (splash-screen-tty-body):
        Search for simple strings using #'search.
        * version.el (emacs-version):
        * x-font-menu.el (hack-font-truename):
        Implement this more cheaply in terms of #'find,
        #'split-string-by-char, #'equal, rather than #'string-match,
        #'split-string, #'string-equal.
        * x-font-menu.el (x-reset-device-font-menus-core):
        Use #'split-string-by-char here.
        * x-init.el (x-initialize-keyboard):
        Search for a simple string using #'search.

2015-03-16  Aidan Kehoe  <kehoea@parhasard.net>

        * tty-init.el (make-frame-after-init-entry-point):
        Some parentheses were placed badly here with the last change,
        thank you Mats for pointing it out; in passing, change to a
        version of the code that doesn't create a string for garbage, not
        that it matters.

2015-03-16  Aidan Kehoe  <kehoea@parhasard.net>

        * obsolete.el (max-char):
        Make this available for compatiblity with GNU, implement it in
        terms of char-code-limit.

2015-03-15  Aidan Kehoe  <kehoea@parhasard.net>

        * tty-init.el (make-frame-after-init-entry-point):
        Behave better when TERM was not set; use
        #'console-tty-terminal-type instead of (getenv "TERM") so we get
        the value that reflects the current console. Thank you Uwe Brauer!

        * mule/mule-tty-init.el (mule-tty-win-initted): Removed.
        * mule/mule-tty-init.el (init-mule-tty-win): Removed.
        * mule/mule-tty-init.el: Remove this file in its entirety.
        * mule/mule-x-init.el (x-use-halfwidth-roman-font): Removed.
        * mule/mule-x-init.el: Remove this file in its entirety.
        * dumped-lisp.el (preloaded-file-list): Remove them from the
        dumped file list. The functions within haven't been used since
        they were imported from Mule in 1999, and the functionality of
        init-mule-tty-win was already in tty-init.el. If someone wants to
        automatically use a halfwidth roman font, they can go hunting for
        the code, but there are no users on http://searchco.de/ as of
        20150315. Leaving them around is confusing and distracting.

2015-03-14  Aidan Kehoe  <kehoea@parhasard.net>

        * simple.el (quoted-insert):
        Update the docstring here, syncing GNU's, especially mentioning
        * cmdloop.el:
        * cmdloop.el (read-quoted-char-radix): Move this up here, outside
        the functions.
        * cmdloop.el (read-function-key-map): New label, reading and
        replacing characters from function-key-map if appropriate.
        * cmdloop.el (read-quoted-char): Multiple changes:
        -- Take advantage of help-event-list, but be careful not to have
        any keystrokes with character equivalents in it, so the user can
        type C-q C-h and have the expected result.
        -- Use function-key-map, as does #'read-char and
        #'read-exclusive-char, helpful for character composition under
        -- Pop up the help window ourselves if, e.g. F1 arrives on a TTY
        via function-key-map, event-stream won't have done it.
        -- Error if no keystroke that can be converted into a character is
        specified, don't just insert ?\x00 as we used to and as does GNU
        -- Use #'digit-char-p instead of reimplementing it.
        -- Fix a bug of mine where I wasn't consistent about treating
        character codes as Unicode.

2015-03-14  Aidan Kehoe  <kehoea@parhasard.net>

        * cmdloop.el (no-character-typed):
        New error, for those cases when a keystroke is to be treated as a
        character but has no character equivalent.
        * cmdloop.el (read-char-1): Use it.
        * keymap.el (synthesize-keysym): Use it.

2015-03-14  Aidan Kehoe  <kehoea@parhasard.net>

        * cus-start.el (all): Describe help-event-list for Custom.
        * keydefs.el (help-event-list): Initialise it.

2015-03-12  Aidan Kehoe  <kehoea@parhasard.net>

        * simple.el (append-message): Be more careful about saving a
        non-nil value for START in message-stack.

2015-03-11  Aidan Kehoe  <kehoea@parhasard.net>

        * isearch-mode.el:
        * isearch-mode.el (isearch-fix-case):
        Use the new #'no-case-regexp-p function if treating ISEARCH-STRING
        as a regular expression; otherwise, use the [[:upper:]] character
        * isearch-mode.el (isearch-no-upper-case-p): Removed. 
        * isearch-mode.el (with-caps-disable-folding): Removed.
        These two haven't been used since 1998.
        * occur.el (occur-1):
        Use #'no-case-regexp-p here.
        * replace.el (perform-replace):
        Don't use #'no-upper-case-p, use #'no-case-regexp-p or
        (string-match "[[:upper:]]" ...) as appropriate.
        * simple.el:
        * simple.el (no-upper-case-p): Removed. This did two different
        things, and its secondary function (examining regular expressions)
        just became much more complicated; move the regular expression
        functionality to its own function, use character classes when
        examining non-regular-expressions instead.
        The code to look for character classes, and the design decision
        that this should be done, are from GNU, thank you Stefan Monnier.
        * simple.el (no-case-regexp-p): New.
        Given a REGEXP, return non-nil if it has nothing to suggest an
        interactive user wants a case-sensitive search.
        * simple.el (with-search-caps-disable-folding):
        * simple.el (with-interactive-search-caps-disable-folding):
        Update both these macros to use #'no-case-regexp-p.

2015-03-11  Aidan Kehoe  <kehoea@parhasard.net>

        Correct #'clear-message and friends so the START and END supplied
        to #'append-message are reflected when restoring messages from the
        message stack.
        * simple.el (remove-message-hook):
        Update this to reflect the START and END keyword arguments.
        * simple.el (log-message):
        Update this to take START and END keyword arguments.
        * simple.el (clear-message):
        Update this to reflect a changed `message-stack' alist structure.
        * simple.el (remove-message):
        Update this to reflect a changed `message-stack' alist structure;
        don't do `with-trapping-errors' and resignal use
        #'call-with-condition-handler directly instead, for better
        backtraces and easier debugging.
        * simple.el (append-message):
        Update this to reflect a changed message-stack structure.

2015-03-08  Aidan Kehoe  <kehoea@parhasard.net>
        * mule/digit.el: New file, specifying integer weights for those
        decimal digits specified by Unicode, and for the Latin characters
        in ASCII.
        * dumped-lisp.el (preloaded-file-list):
        Dump this file, so those weights are available at runtime.
2015-02-25  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-extra.el (digit-char-p): Moved to data.c.
        * cl-extra.el (digit-char): Moved to data.c.
2014-12-31  Michael Sperber  <mike@xemacs.org>

        * simple.el (line-move): Add `noerror' optional argument, as in
        GNU Emacs.

2014-11-10  Michael Sperber  <mike@xemacs.org>

        * custom.el (custom-add-package-version): The car of a
        :package-version is a symbol, not a string.

2014-10-11  Stephen J. Turnbull  <stephen@xemacs.org>

        * mule/korea-util.el (korean-key-bindings): 
        * mule/ethio-util.el (setup-ethiopic-environment-internal):
        Change invalid GNU-style key definitions to XEmacs format.

2014-10-07  Jerry James  <james@xemacs.org>

        * code-process.el (network-stream-get-response):
        (network-stream-open-shell): New functions.
        (open-network-stream): Accept Emacs-compatible arguments.

2014-09-27  Michael Sperber  <mike@xemacs.org>

        * custom.el (defcustom): 
        (custom-handle-keyword): Handle :package-version without bailing out.

2014-09-25  Jerry James  <james@xemacs.org>

        * bytecomp.el (byte-compile-insert-header): do not insert
        timestamps in .elc comments to get reproducible builds.

2014-08-05  Aidan Kehoe  <kehoea@parhasard.net>

        * keymap.el:
        * keymap.el (event-apply-modifiers):
        When a character keysym has case information, apply the shift
        modifier to it by upcasing it.
        * keymap.el (synthesize-keysym):
        Document this a little.
        * keymap.el (synthesize-unicode-codepoint): New.
        Like #'synthesize-keysym, but synthesizing a Unicode codepoint.
        * keymap.el (function-key-map-parent): Bind control shift u to
        synthesize a Unicode character input, as does GTK+ and as
        specified by ISO 14755. 

2014-08-06  Aidan Kehoe  <kehoea@parhasard.net>

        * fontconfig.el (fc-name-parse-harder):
        Improve style here, don't re-implement #'split-string-by-char with
        its ESCAPE-CHAR argument, look for a string prefix in a list of
        candidates in a more CL-idiomatic way, use the language's features
        for boolean or.

2014-07-14  Aidan Kehoe  <kehoea@parhasard.net>

        * simple.el (raw-append-message):
        Use #'write-sequence in this, take its START and END keyword
        arguments, so our callers don't have to cons as much.
        * simple.el (append-message):
        Pass through START and END here.

2014-07-02  Aidan Kehoe  <kehoea@parhasard.net>

        * byte-optimize.el (side-effect-free-fns):
        #'keymapp is not side-effect-free, it can autoload.

2014-07-02  Aidan Kehoe  <kehoea@parhasard.net>

        * cmdloop.el:
        * cmdloop.el (read-char-1): New.
        * cmdloop.el (read-char, read-char-exclusive):
        Use #'read-char-1 in these function; sync their API with that of
        GNU, respect `function-key-map' where we didn't before, add
        initial support for Quail input methods.
        * keymap.el (next-key-event):
        Accept EVENT and PROMPT arguments, as does #'next-command-event.
        * keymap.el (event-apply-modifiers):
        Use #'functionp here, no need to exclude lambdas from
        * keymap.el (synthesize-keysym):
        Correct this function's docstring.

2014-04-19  Mats Lidell  <matsl@xemacs.org>

        * help.el: Sync from GNU - Link to customize if applicable and
        display version info. Other changes: Remove use of button-2.
        return and button-1 use activate-function. Move between
        activate-function-extents with tab.

2014-01-27  Michael Sperber  <mike@xemacs.org>

        * font-lock.el (font-lock-regexp-grouping-backslash,
        font-lock-regexp-grouping-construct): Add these, as in GNU Emacs.

2014-01-27  Michael Sperber  <mike@xemacs.org>

        * lisp.el (check-parens): Add, from GNU Emacs.
2014-01-27  Michael Sperber  <mike@xemacs.org>

        * custom.el (custom-declare-variable, defcustom): Add :risky and
        :safe options

2013-12-30  Byrel Mitchell <byrel.mitchell@gmail.com>

        * menubar.el (add-menu-item-1, delete-menu-item): Do not assume
        every top-level menu is on current-menubar.

2013-12-22  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-macs.el:
        * cl-macs.el (princ): New compiler macro.
        Transform #'princ to #'write-sequence if we can determine at
        compile time that it is being passed a string. Initialising the
        printer is expensive enough, but much of our code took this
        approach because #'write-sequence wasn't available.

2013-12-17  Aidan Kehoe  <kehoea@parhasard.net>

        * simple.el (blink-matching-open):
        When showing the opening parenthesis in the minibiffer, use the
        isearch face for it, in case there are multiple parentheses in the
        text shown.
        When writing moderately involved macros, it's often not enough
        just to show the backquote context before the parenthesis
        (e.g. @,.`). Skip over that when searching for useful context in
        the same way we skip over space and tab.
        * simple.el (message):
        * simple.el (lmessage):
        If there are no ARGS, don't call #'format. This allows extent
        information to be passed through to the minibuffer.
        It's probably better still to update #'format to preserve extent

2013-12-17  Aidan Kehoe  <kehoea@parhasard.net>

        * cl-extra.el:
        * cl-extra.el (write-string): New.
        * cl-extra.el (write-line): New.
        Add these here, implemented in terms of #'write-sequence in print.c.

2013-09-15  Mats Lidell  <matsl@cxemacs.org>

        * files.el (mode-require-final-newline): Variable synced from
        GNU. Thank you GNU. Allows modes to control final newlines.
        (require-final-newline): Add action on visiting and visiting or
        saving in sync with GNU.
        * text-mode.el (text-mode): Use mode-require-final-newline.

2013-09-10  Stephen J. Turnbull  <stephen@xemacs.org>

        * fontconfig.el (fc-name-parse-known-problem-attributes): New.
        (fc-name-parse-harder): New.

        * font.el (xft-font-create-object): Use fc-name-parse-harder.

2013-08-21  Aidan Kehoe  <kehoea@parhasard.net>

        * startup.el (normal-top-level):
        Use #'call-with-condition-handler here when calling
        #'command-line, giving better backtraces on error.
        Be careful about the current buffer in HANDLER.

2013-08-21  Aidan Kehoe  <kehoea@parhasard.net>

        * bytecomp.el:
        * bytecomp.el (gensym):
        * bytecomp.el (byte-compile-gensym): New.
        Warn that gensym called in a for-effect context is unlikely to be
        Warn about non-string non-integer ARGs, this is incorrect.
        Am not changing the function to error with same, most code that
        makes the mistake has no problems, which is why it has survived
        so long.
        * window-xemacs.el (save-window-excursion/mapping):
        * window.el (save-window-excursion):
        Call #'gensym with a string, not a symbol.

2013-08-05  Aidan Kehoe  <kehoea@parhasard.net>

        * isearch-mode.el (isearch-pre-command-hook):
        If this function is called and (this-command-keys) contains
        misc-user events, #'key-binding throws an error.
        Eddie Corns and Alex Belits describe this happening in tracker
        issue 336, and we can avoid this by catching the error and
        handling the misc-user event in the same way that #'dispatch-event
        I haven't reproduced the actual error they describe, and welcome
        testing to make sure it's gone.
        Thank you Eddie, thank you Alex!

2013-08-05  Aidan Kehoe  <kehoea@parhasard.net>

        * behavior.el:
        Correct some spelling and formatting here, thank you Steven
        Mitchell in tracker issue 826.

2013-08-05  Aidan Kehoe  <kehoea@parhasard.net>

        * mule/latin.el:
        Add a Latin-script Azeri language environment, with UTF-8 as the
        encoding and case information for schwa.

ChangeLog Entries from lwlib/ChangeLog

goto announcement, summary, changes

2023-05-13  Aidan Kehoe  <kehoea@parhasard.net>

        * XEmacs 21.5.35 "kohlrabi" is released.

2022-07-02  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * lwlib-fonts.h:
        Add <X11/X.h> before the include of <X11/Xft/Xft.h> for old versions of
        Xft where including the plain Xft.h doesn't include for the X defines.

2022-03-14  Aidan Kehoe  <kehoea@parhasard.net>

        * xlwgauge.c (GaugeExpose):
        * xlwgauge.c (GaugeQueryGeometry):
        Use our REGISTER #define, avoid warnings with g++ 11.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

        * lwlib-Xaw.c: Don't check for STDC_HEADERS, unconditionally
        #include <stdlib.h>

2017-11-23  Stephen J. Turnbull  <stephen@xemacs.org>

        * lwlib-colors.c (xft_convert_color): Remove unused variable.

2017-11-12  Aidan Kehoe  <kehoea@parhasard.net>

        * lwlib-internal.h:
        Make min(), max() available as macros to lwlib as well as to the
        core code. Thank you Mats Lidell and the buildbot.

2016-12-30  Aidan Kehoe  <kehoea@parhasard.net>

        * lwlib-Xlw.c (xlw_update_one_widget):
        Remove a set-but-not used variable here.

2015-06-22  Michael Sperber  <mike@xemacs.org>

        * lwlib-colors.h: 
        * lwlib-colors.c (xft_convert_color_1): Introduce, and make
        `xft_convert_color' use it.

2015-01-07  Jerry James  <james@xemacs.org>
        * lwlib-Xaw.c (xaw_scrollbar_scroll): Add typecast to fix g++ build,
        problem reported by Marcus Harnisch.

2015-01-08  Stephen J. Turnbull  <stephen@xemacs.org>

        Fix progress bar crashes.
        Thanks to Ralf Soergel for diagnosis and a patch.

        * xt-wrappers.h (HAVE_ATHENA_I18N):
        Define XAW_INTERNATIONALIZATION when needed.

ChangeLog Entries from man/ChangeLog

goto announcement, summary, changes

2023-05-13  Aidan Kehoe  <kehoea@parhasard.net>

        * XEmacs 21.5.35 "kohlrabi" is released.

2022-12-24  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/eval.texi (Special Operators):
        * lispref/eval.texi (Autoloading):
        * lispref/files.texi (File Name Completion):
        * lispref/intro.texi (A Sample Variable Description):
        * lispref/objects.texi (Primitive Function Type):
        * lispref/os.texi (Terminal-Specific):
        * lispref/searching.texi (Syntax of Regexps):
        * lispref/strings.texi (String Basics):
        * lispref/tooltalk.texi (Elisp Interface for Sending Messages):
        * lispref/tooltalk.texi (Elisp Interface for Receiving Messages):
        * new-users-guide/xmenu.texi (Options Menu):
        * termcap.texi (Preparation):
        * termcap.texi (Find):
        * termcap.texi (Interrogate):
        * termcap.texi (Initialize):
        * termcap.texi (Output Padding):
        * termcap.texi (Encode Parameters):
        * termcap.texi (tparam):
        * termcap.texi (tgoto):
        * termcap.texi (Capability Format):
        * termcap.texi (Naming):
        * termcap.texi (Scrolling):
        * termcap.texi (Insdel Line):
        * termcap.texi (Keypad):
        * termcap.texi (Meta Key):
        * xemacs/abbrevs.texi (Defining Abbrevs):
        * xemacs/abbrevs.texi (Expanding Abbrevs):
        * xemacs/abbrevs.texi (Saving Abbrevs):
        * xemacs/abbrevs.texi (Dynamic Abbrevs):
        * xemacs/basic.texi (Moving Point):
        * xemacs/buffers.texi (Select Buffer):
        * xemacs/buffers.texi (List Buffers):
        * xemacs/buffers.texi (Misc Buffer):
        * xemacs/buffers.texi (Kill Buffer):
        * xemacs/building.texi (Compilation):
        * xemacs/building.texi (Lisp Eval):
        * xemacs/building.texi (Lisp Debug):
        * xemacs/calendar.texi (Special Diary Entries):
        * xemacs/calendar.texi (Calendar Customizing):
        * xemacs/calendar.texi (Holiday Customizing):
        * xemacs/calendar.texi (Diary Customizing):
        * xemacs/calendar.texi (Fancy Diary Display):
        * xemacs/custom.texi (Minor Modes):
        * xemacs/custom.texi (Locals):
        * xemacs/custom.texi (File Variables):
        * xemacs/custom.texi (Kbd Macro Query):
        * xemacs/custom.texi (Keymaps):
        * xemacs/custom.texi (Interactive Rebinding):
        * xemacs/custom.texi (Init Syntax):
        * xemacs/custom.texi (Terminal Init):
        * xemacs/custom.texi (Audible Bell):
        * xemacs/display.texi (Scrolling):
        * xemacs/display.texi (Selective Display):
        * xemacs/files.texi (Backup Copying):
        * xemacs/files.texi (Interlocking):
        * xemacs/files.texi (Recover):
        * xemacs/files.texi (Dired Edit):
        * xemacs/files.texi (Dired Deletion):
        * xemacs/files.texi (Dired Immed):
        * xemacs/files.texi (Misc File Ops):
        * xemacs/fixit.texi (Kill Errors):
        * xemacs/fixit.texi (Transpose):
        * xemacs/fixit.texi (Fixing Case):
        * xemacs/fixit.texi (Spelling):
        * xemacs/frame.texi (Frame):
        * xemacs/frame.texi (Mode Line):
        * xemacs/glossary.texi (Glossary):
        * xemacs/indent.texi (Indentation Commands):
        * xemacs/keystrokes.texi (Intro to Keystrokes):
        * xemacs/keystrokes.texi (Key Sequences):
        * xemacs/keystrokes.texi (Meta Key):
        * xemacs/keystrokes.texi (Super and Hyper Keys):
        * xemacs/keystrokes.texi (Commands):
        * xemacs/killing.texi (Killing):
        * xemacs/killing.texi (Appending Kills):
        * xemacs/killing.texi (Earlier Kills):
        * xemacs/menus.texi (File Menu):
        * xemacs/menus.texi (Edit Menu):
        * xemacs/menus.texi (Options Menu):
        * xemacs/misc.texi (Sorting):
        * xemacs/misc.texi (Single Shell):
        * xemacs/misc.texi (Interactive Shell):
        * xemacs/picture.texi (Basic Picture):
        * xemacs/picture.texi (Tabs in Picture):
        * xemacs/picture.texi (Rectangles in Picture):
        * xemacs/programs.texi (Lists):
        * xemacs/programs.texi (Tag Syntax):
        * xemacs/programs.texi (Tags Search):
        * xemacs/programs.texi (Fortran Abbrev):
        * xemacs/search.texi (Incremental Search):
        * xemacs/search.texi (Regexps):
        * xemacs/search.texi (Search Case):
        * xemacs/search.texi (Regexp Replace):
        * xemacs/search.texi (Query Replace):
        * xemacs/sending.texi (Sending Mail):
        * xemacs/sending.texi (Mail Headers):
        * xemacs/sending.texi (Mail Mode):
        * xemacs/text.texi (TeX Mode):
        * xemacs/text.texi (TeX Editing):
        * xemacs/text.texi (TeX Print):
        * xemacs/text.texi (Outline Motion):
        * xemacs/text.texi (Outline Visibility):
        * xemacs/text.texi (Words):
        * xemacs/text.texi (Sentences):
        * xemacs/text.texi (Paragraphs):
        * xemacs/text.texi (Fill Commands):
        * xemacs/text.texi (Fill Prefix):
        * xemacs/text.texi (Case):
        * xemacs/trouble.texi (Bugs):
        * xemacs/windows.texi (Split Window):
        * widget.texi (Setting Up the Buffer):
        * widget.texi (Utilities):
        Remove @refill from all these files at the instigation of recent
        versions of makeinfo(1), using Ben's gr script.

2022-11-27  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (Intro to Window and Frame Geometry):
        Double @-signs in the ASCII-art diagram in this section, thank you

2022-08-28  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/strings.texi (Text Comparison):
        Deprecate #'string-equal in the Lispref.

2022-08-17  Henry S. Thompson  <ht@home.hst.name>

        * internals/internals.texi: Fixes to Old Future Work to avoid
        build error and navigation problems: Add missing index entry,
        replace one @subsection with @section, re-run auto-generation of

2022-08-04  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * xemacs/cmdargs.texi (Command Switches):
        Document the -no-configured-paths command line flag.

2022-07-11  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (Old Future Work -- Display Tables):
        Move this section here from Future Work, now it has been

2022-07-09  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/strings.texi (Formatting Strings):
        Document the ?z integer length modifier.

2022-05-18  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

        * internals/internals.texi (OpenSSL bignum driver):
        Documentation for the OpenSSL bignum driver.

2022-02-19  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/searching.texi (Regexp Search):
        * lispref/searching.texi (POSIX Regexps):
        Clarify that implementing versions of #'looking-at-p,
        #'string-match-p that follow POSIX rules doesn't add anything.

2021-11-03  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (garbage_collect_1):
        * internals/internals.texi (lrecords):
        Adjust the documentation of the garbage collector slightly to
        better reflect that KKCC is the default. Still needs a bit more work.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (Dumping Justification):
        Update the documentation of the dumping process.

2021-10-23  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (Top):
        * internals/internals.texi (Debugging and Testing):
        * internals/internals.texi (lrecords):
        Remove documentation of details of the implementation of the
        incremental garbage collector. Document experience with it and its
        removal in October 2021.

2021-10-19  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (Q210341 says this in addition): Removed.
        * internals/internals.texi (SUMMARY): Removed.
        * internals/internals.texi (MORE INFORMATION): Removed.
        * internals/internals.texi (wide character functions as
        implemented on Windows 95): Removed.
        * internals/internals.texi (REFERENCES): Removed.
        * internals/internals.texi (Microsoft Knowledge Base): Removed.
        * internals/internals.texi (Knowledge Base): Removed.
        * internals/internals.texi (see the following book): Removed.
        * internals/internals.texi (Background white paper): Removed.
        * internals/internals.texi (Random other Windows I18N docs):
        * internals/internals.texi (NOTE): Removed.
        * internals/internals.texi (Unicode support under Windows):
        Revise this file in detail now we have removed support for Windows
        95/98/Me systems.

2021-05-27  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (garbage_collect_1):
        Remove documentation of special treatment of profiling info by GC,
        something no longer done.
        * internals/internals.texi (Profiling):
        Document that we now use a Lisp hash table for the profiling
        ticks, being careful to have sufficient space within it so that it
        is never resized within a signal handler.

2021-05-26  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (Stream Pairs):
        * internals/internals.texi (Converting Events):
        Update the documentation of the unique stream identifiers to
        reflect that these are now Lisp objects.

2021-03-25  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (Critical Redisplay Sections):
        Document that the start_end_of_last_line() code is no longer
        called if in redisplay.

2021-03-03  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/searching.texi (Simple Match Data):
        Document the new search-error-on-bad-match-data variable, which
        tells the search code to error rather than (more compatibly)
        warning when it encounters inconsistent match data.

2021-02-14  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/searching.texi (Match Data):
        Document that the underlying match data implementation is now in
        terms of extents, explain some performance and correctness
        considerations linked to this.
        * lispref/searching.texi (Simple Match Data):
        Flesh out some information on #'match-string and debugging
        info provided by XEmacs. Clarify algorithmic considerations with
        #'match-beginning, #'match-end.
        * lispref/searching.texi (Replacing Match):
        Update documentation of #'replace-match.
        * lispref/searching.texi (Entire Match Data):
        Advise preferential use of `save-match-data' in the opening of
        this node.
        Deprecate use of the INTEGERS argument to #'match-data.
        Document #'match-data-canonical.
        * lispref/searching.texi (Saving Match Data):
        Clarify that XEmacs does not treat the match data specially when
        running process filters and process sentinels and that it usually
        has no need to.

2021-02-14  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/extents.texi (Extent Endpoints):
        #'extent-start-position, #'extent-end-position now have new
        MARKERP arguments, document this, and document the insertion types
        of the returned markers.

2021-01-11  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/loading.texi (Named Features):
        Document a couple of workarounds to avoid the compile-time
        evaluation of (require ...) forms, should that be needed.

2020-11-20  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/keymaps.texi (Key Sequences): End the open @defun for

2020-11-17  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/keymaps.texi:
        * lispref/keymaps.texi (Key Sequences):
        Prefer the character rather than the symbol keysym in this
        documentation, since that is its canonical form.

2020-10-03  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/searching.texi (Syntax of Regexps):
        Document the limitations on M and N for interval qualifiers;
        clarify that the limits are #xFFFF for both, which limits were
        just added.

2020-03-28  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/searching.texi (Syntax of Regexps):
        Document the named non-shy groups, or explicitly numbered groups,
        just added.

2020-03-18  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi:
        Document the encoding of this file in its header, now texinfo
        worries about that.
        * lispref/mule.texi:
        Re-encode this file as UTF-8, now texinfo restricts the encodings
        it can use. Document this encoding in its header.
        * xemacs-faq.texi:
        Ditto. Revise the XEmacs coding cookie.

2018-10-01  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/compile.texi (Different Behavior):
        Mention the unfortunate algorithmic complexity of
        #'marker-position when cautioning about the behaviour of (+ MARKER

2018-09-02  Aidan Kehoe  <kehoea@parhasard.net>

        * cl.texi (Time of Evaluation): Use the new-style
        :compile-toplevel, :load-toplevel and :execute CL keywords in the
        documentation of the WHEN argument to #'eval-when.

2018-08-15  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/markers.texi (Information from Markers):
        Document an important algorithmic consideration with

2017-11-23  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi (A Summary of the Various XEmacs Modules):
        * internals/internals.texi (Low-Level Modules):
        * internals/internals.texi (Modules for Allocation):
        * internals/internals.texi (Low-level allocation):
        Remove mention of malloc.c (long gone) and gmalloc.c (gone today).

2017-11-14  Stephen J. Turnbull  <stephen@xemacs.org>

        * lispref/faces.texi (Face Properties): Add items to itemize.

2017-04-19  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/buffers.texi (Buffer Names):
        Update documentation on #'generate-new-buffer-name to reflect
        changes made to it today.

2017-03-09  Aidan Kehoe  <kehoea@parhasard.net>

        * widget.texi (Introduction):
        Remove duplicated info on widget.el, wid-edit.el, as documented in
        tracker issue 847. Thank you FKtPp and Steven Mitchell!

2017-02-11  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/keymaps.texi (Key Sequences):
        Document that we now support e.g. (shift a), transforming that
        internally to (A).
        Document that (A) is still preferred given older XEmacs code.

2017-01-15  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/searching.texi (Regexp Search):
        * lispref/searching.texi (POSIX Regexps):
        Document `string-match-p', `looking-at-p'.

2016-12-30  Aidan Kehoe  <kehoea@parhasard.net>

        * cl.texi (Macro Bindings):
        Document the new shadowing of arguments to lambda lists within
        `symbol-macrolet' forms.
        Document the new SHADOW element in a `symbol-macrolet' element, to
        specify Common Lisp behaviour for expansion.

2016-10-15  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/strings.texi (Formatting Strings):
        Document %u here.
        Correct the spelling of zeroes.
        Add documentation of the new &, !, and ~ flags.
        Add documentation of the length modifiers, specifying truncation
        to a bit width, newly implemented though long accepted.
        Document the new u modifier, used to specify that integer
        converters should treat their arguments as unsigned. (It is new to
        XEmacs that the non-base-10 converters treat their arguments as

2016-11-07  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/strings.texi (Formatting Strings):
        Be a little clearer in documentation of the STREAM argument to

2016-10-26  Aidan Kehoe  <kehoea@parhasard.net>

        * internals/internals.texi :
        * internals/internals.texi (Old Future Work -- Everything should
        obey duplicable extents):
        Move this section to Old Future Work from Future Work, now it is

2016-10-19  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/strings.texi (Formatting Strings):
        Document that #'format-into now accepts any stream argument as
        accepted by #'print.

2016-09-18  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/strings.texi (Formatting Strings):
        Describe #'format a little more clearly, don't mislead readers
        about the algorithm.
        Describe the newly-added #'format-into, something that makes more
        sense now the resizing-buffer time is visible from Lisp.

2016-09-05  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/strings.texi (Formatting Strings):
        Document the new support for extents in control string and in
        arguments to #'format.

2016-06-16  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/searching.texi (Syntax of Regexps):
        Clarify that backreferences can use numbers greater than ten.

2014-11-24  Stephen J. Turnbull  <stephen@xemacs.org>

        * lispref/strings.texi (String Properties):
        Note that string properties are separate from extent properties.

2015-05-08  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/numbers.texi (Numbers):
        Describe the newly-supported arbitrary-base syntax for rationals
        (integers and ratios). Describe that ratios can take the same base
        specification as integers, something also new.

2015-03-15  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/strings.texi (Character Codes):
        Document `char-code-limit' here too.

2015-03-14  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/help.texi (Help Functions):
        Document help-event-list, just added.

2015-02-23  Mike Kupfer  <mike.kupfer@xemacs.org>

        * internals/internals.texi (The Redisplay Mechanism):
        Add notes about pixel_to_glyph_translation and related code.
        (pixel_to_glyph_translation): New section.      

2015-03-08  Aidan Kehoe  <kehoea@parhasard.net>

        * lispref/strings.texi (Predicates for Characters):
        Document `digit-char-p', `digit-char' here.
        * lispref/strings.texi (String Conversion):
        Document `parse-integer' here.

2014-03-28  Jerry James  <james@xemacs.org>

        * Makefile.in: Do not build texinfo files.
        * texinfo/fdl.texi:
        * texinfo/texinfo.texi:
        * texinfo/version.texi:
        Remove files belonging to an external project.

2014-03-28  Jerry James  <james@xemacs.org>

        * lispref/loading.texi:
        * lispref/macros.texi:
        Fix broken next/prev pointers caught by texinfo 4.x, but not by
        texinfo 5.x.  Thanks to Thomas Mittelstaedt for reporting.

2014-02-11  Jerry James  <james@xemacs.org>

        * lispref/consoles-devices.texi:
        * lispref/control.texi:
        * lispref/customize.texi:
        * lispref/databases.texi:
        * lispref/debugging.texi:
        * lispref/dialog.texi:
        * lispref/display.texi:
        * lispref/eval.texi:
        * lispref/extents.texi:
        * lispref/faces.texi:
        * lispref/files.texi:
        * lispref/frames.texi:
        * lispref/functions.texi:
        * lispref/glyphs.texi:
        * lispref/gutter.texi:
        * lispref/hash-tables.texi:
        * lispref/help.texi:
        * lispref/internationalization.texi:
        * lispref/intro.texi:
        * lispref/keymaps.texi:
        * lispref/ldap.texi:
        * lispref/lispref.texi:
        * lispref/lists.texi:
        * lispref/loading.texi:
        * lispref/macros.texi:
        * lispref/markers.texi:
        * lispref/menus.texi:
        * lispref/minibuf.texi:
        * lispref/modes.texi:
        * lispref/mule.texi:
        * lispref/numbers.texi:
        * lispref/objects.texi:
        * lispref/os.texi:
        * lispref/positions.texi:
        * lispref/postgresql.texi:
        * lispref/processes.texi:
        * lispref/range-tables.texi:
        * lispref/scrollbars.texi:
        * lispref/searching.texi:
        * lispref/sequences.texi:
        * lispref/specifiers.texi:
        * lispref/streams.texi:
        * lispref/strings.texi:
        * lispref/symbols.texi:
        * lispref/syntax.texi:
        * lispref/text.texi:
        * lispref/tips.texi:
        * lispref/toolbar.texi:
        * lispref/tooltalk.texi:
        * lispref/variables.texi:
        * lispref/windows.texi:
        * lispref/x-windows.texi:
        * xemacs/custom.texi:
        * xemacs/menus.texi:
        * xemacs/programs.texi:
        Add next, prev, and up pointers to each node for texinfo 5.2.

        * texinfo/fdl.texi:
        * texinfo/texinfo.texi:
        * texinfo/version.texi:
        Sync with texinfo 5.2.

2013-09-15  Mats Lidell  <matsl@xemacs.org>

        * xemacs/files.texi (Saving): New variable
        mode-require-final-newline. Update info for require-final-newline.

2013-06-25  Jerry James  <james@xemacs.org>

        * Makefile.in: New file, so we can replace @MAKEINFO@.
        * Makefile: Removed.
        * lispref/packaging.texi: Update required version of makeinfo.
        * xemacs/packages.texi: Ditto.

ChangeLog Entries from modules/ChangeLog

goto announcement, summary, changes

2022-07-09  Aidan Kehoe  <kehoea@parhasard.net>

        * ldap/eldap.c (print_ldap):
        Use %p in the format string when printing a pointer, rather than
        casting to a long and using 0x%lx.

2021-11-03  Aidan Kehoe  <kehoea@parhasard.net>

        * postgresql/postgresql.c:
        * postgresql/postgresql.c (print_pgconn):
        * postgresql/postgresql.c (RESULT_TUPLES_FMT):
        * ldap/eldap.c:
        * ldap/eldap.c (print_ldap):
        Remove the mark methods from modules, now KKCC is the only mark
        algorithm used.

2015-05-04  Stephen J. Turnbull  <stephen@xemacs.org>

        * postgresql/configure.ac (PostgreSQL): Allow specification of subdir.
        Add most recent versioned directories for multiversion
        installations (eg, MacPorts.
        * postgresql/configure: Regenerate.

2014-08-11  Jerry James  <james@xemacs.org>

        * common/Makefile.common (CPPFLAGS): New variable.

ChangeLog Entries from nt/ChangeLog

goto announcement, summary, changes

2023-05-13  Aidan Kehoe  <kehoea@parhasard.net>

        * XEmacs 21.5.35 "kohlrabi" is released.

2023-04-16  Aidan Kehoe  <kehoea@parhasard.net>

        Make some initial changes to ease building with recent Visual

        * config.inc.samp:
        * config.inc.samp (USE_PORTABLE_DUMPER): Removed.
        * config.inc.samp (USE_KKCC): Removed.
        * config.inc.samp (NEW_GC): Removed.
        * xemacs.mak:
        * xemacs.mak (USE_KKCC): Removed.
        * xemacs.mak (NEW_GC): Removed.
        * xemacs.mak (DEPEND):
        * xemacs.mak (LIBC_LIB):
        Visual Studio 2015 and later require ucrt.lib and vcruntime.lib,
        include them.

        * xemacs.mak (USE_PORTABLE_DUMPER): Removed.
        * xemacs.mak (USE_SYSTEM_MALLOC):
        * xemacs.mak (CONFIG_ERROR): Removed.
        * xemacs.mak (EMACS_CONFIGURATION): Recognise AMD 64 here.
        * xemacs.mak (OPT_OBJS): Removed.
        * xemacs.mak (OPT_DEFINES): Removed.
        * xemacs.mak (LIB_SRC_TOOLS):
        * xemacs.mak (  NOTE):
        * xemacs.mak ($(DUMP_TARGET)):
        * xemacs.mak (distclean): Correct the path to CONFIG_VALUES, which
        already includes BLDLIB_SRC.

2021-10-20  Aidan Kehoe  <kehoea@parhasard.net>

        * xemacs.mak (TEMACS_COMMON_OBJS):
        * xemacs.mak (unicode-encapsulate):
        Remove references to intl-auto-encap-win32.{c,obj} from this file,
        no longer used or present.

2021-10-19  Aidan Kehoe  <kehoea@parhasard.net>

        * xemacs.mak (TEMACS_COMMON_OBJS):
        Remove hash.obj from this, no longer needed.

2014-11-10  Vin Shelton  <acs@xemacs.org>

        * xemacs.mak (TEXINFO_SRCS): XEmacs sources no longer include

2014-11-10  Vin Shelton  <acs@xemacs.org>

        * README: Updated contributor information.

ChangeLog Entries from src/ChangeLog

goto announcement, summary, changes

2013-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.34 "kale" is released.

2013-06-17  Jerry James  <james@xemacs.org>

	* Makefile.in.in: Support bignums with MPIR.
	* config.h.in (WITH_MPIR): New macro.
	* number.c: Add MPIR support.
	* number.h: Ditto.
	* number-gmp.h: Ditto.
	(ratio_set_long_ulong): Canonicalize the ratio.
	(ratio_set_ulong_ulong): Ditto.
	* number-gmp.c (init_number_gmp): Add void param to silence GCC.
	* number-mp.c (init_number_mp): Ditto.

2013-06-17  Jerry James  <james@xemacs.org>

	* alloc.c (make_bignum_un): New function.
	(make_bignum_ll): New function.
	(make_bignum_ull): New function.
	* config.h.in (HAVE_MP_SET_MEMORY_FUNCTIONS): Add.
	* data.c (Fplus): avoid unnecessary consing.
	(Ftimes): ditto.
	* glyphs.c (check_valid_xbm_inline): Since this function is called
	prior to dumping, when bignums are forbidden, do all arithmetic
	with C integers.
	* lisp.h (MOST_POSITIVE_FIXNUM_UNSIGNED): New constant.
	(MOST_POSITIVE_FIXNUM): Redefine in terms of the above.
	* number-gmp.c (bignum_to_llong): New function.
	(bignum_to_ullong): New function.
	(bignum_set_llong): New function.
	(bigfloat_to_string): Adjust whitespace.
	(gmp_realloc): Ditto.
	(gmp_free): Ditto.
	* number-gmp.h (bignum_fits_llong): New macro.
	(bignum_fits_ullong): New macro.
	(bignum_set_ullong): New macro.
	* number-mp.c (bignum_long_sign_bit): Remove, didn't work.
	(bignum_min_llong): New variable.
	(bignum_max_llong): New variable.
	(bignum_max_ullong): New variable.
	(bignum_to_llong): New function.
	(bignum_to_ullong): New function.
	(bignum_set_long): Reimplement using MP_XTOM.
	(bignum_set_ulong): Ditto.
	(bignum_set_llong): New function.
	(bignum_set_ullong): New function.
	(bignum_clrbit): Fix a comment.
	(bignum_random_seed): Move to number-mp.h, since it is a no-op.
	(bignum_random): Implement.
	(mp_realloc): New function.
	(mp_free): New function.
	(init_number_mp): Use them.  Fix a comment.  Eliminate
	initialization of bignum_long_sign_bit.  Initialize
	bignum_min_llong, bignum_max_llong, and bignum_set_ullong.
	* number-mp.h (MP_XTOM): New macro.
	(bignum_fits_llong_p): New macro.
	(bignum_fits_ullong_p): New macro.
	(bignum_random_seed): New macro.
	* number.h: Implement bignums as long long integers.
	(make_bignum_ll): New macro.
	(make_integer): Accept a long long value.
	(make_unsigned_integer): New macro.
	(NATNUMP): Adjust whitespace.
	(non_fixnum_number_p): Ditto.

	* alloc.c (Fmake_list): Use make_unsigned_integer or make_fixnum
	instead of make_integer where it is appropriate to do so.
	* chartab.c (char_table_default_for_type): Ditto.
	* dired.c (Ffile_attributes): Ditto.
	* elhash.c (hash_table_size_validate): Ditto.
	* eval.c (Fmacroexpand): Ditto.
	* event-stream.c (Faccept_process_output): Ditto.
	(Frecent_keys): Ditto.
	* events.c (Fmake_event): Ditto.
	(Fevent_timestamp_lessp): Ditto.
	* font-mgr.c (Ffc_pattern_get): Ditto.
	* indent.c (Fmove_to_column): Ditto.
	* process.c (Fset_process_window_size): Ditto.
	* profile.c (Fstart_profiling): Ditto.
	* unicode.c (Fset_unicode_conversion): Ditto.
	(Funicode_to_char): Ditto.

2013-04-23  Vin Shelton  <acs@xemacs.org>

	* sysdep.c (qxe_getgrgid): Hack in WIN32_NATIVE group support.
	* dired.c (file_attributes): Add a hack for group name in native
	Windows builds.

2013-04-19  Mats Lidell  <matsl@xemacs.org>

	* sysdep.c (qxe_getgrgid): Encapsulation of getgrgid.
	* syspwd.h: Ditto.

	* dired.c (Ffile_attributes): Added optional ID-FORMAT for
	compatibility with GNU.
2013-03-28  Jerry James  <james@xemacs.org>

	* config.h.in: AC_FUNC_FSEEKO is the name of the autoconf macro.
	HAVE_FSEEKO is the name of the C preprocessor symbol.  Do not
	confuse the two.

2013-03-11  Vin Shelton  <acs@xemacs.org>

	* config.h.in: Move large file support outside WIN32_NO_CONFIGURE block.

2013-03-07  Jerry James  <james@xemacs.org>

	* array.c (stack_like_malloc): Define only if WIN32_ANY.
	(stack_like_free): Ditto.
	* array.h: Ditto.

2013-03-04  Jerry James  <james@xemacs.org>

	* config.h.in: Add placeholders and definitions needed for large
	file support.
	* dired.c (Ffile_attributes): Some elements of the stat structure
	can overflow a fixnum.  Allow them to be bignums, if possible.
	* dumper.c (pdump_align_stream): Use OFF_T, FTELL, and FSEEK macros
	to get large file support.
	(pdump): Ditto.

2013-03-02  Jerry James  <james@xemacs.org>

	* Makefile.in.in: If modules are built into the executable, assume
	that module source files are available in the current directory,
	since configure now creates soft links for them.

2013-02-22  Michael Sperber  <mike@xemacs.org>

	* event-stream.c (post_command_hook): Don't complain about throws
	out of `post-command-hook'.  This is quite common, for example to
	exit the minibuffer.

2013-02-04  Vin Shelton  <acs@xemacs.org>

	* syswindows.h: Fix the cygwin build by supporting win32api 3.14
	through appropriate guard macros.  Thanks to Mats Lidell.

2013-01-22  Jerry James  <james@xemacs.org>

	* general-slots.h: Add Q_visible.
	* gui.c (gui_item_add_keyval_pair): Add :visible as an alias to
	* menubar.c (vars_of_menubar): Document that :visible is an alias
	to :included.
	* menubar-gtk.c (menu_convert): Ditto.
	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Ditto.

2013-01-16  Jerry James  <james@xemacs.org>

	* menubar-x.c (set_frame_menubar): when a menubar specification has an
	error, don't fail an assert() and bring XEmacs down.  Instead, return
	0 to skip the faulty menu and show any errors in *Warnings*.

ChangeLog Entries from tests/ChangeLog

goto announcement, summary, changes

2013-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.34 "kale" is released.

2013-06-17  Aidan Kehoe  <kehoea@parhasard.net>

	* automated/lisp-tests.el:
	Test #'apply-partially more extensively, given changes in

2013-06-17  Jerry James  <james@xemacs.org>

	* automated/lisp-tests.el: Adjust expected failure message due to
	changes in check_valid_xbm_inline().

2013-04-20  Mats Lidell  <matsl@xemacs.org>

	* automated/dired-tests.el: New. Tests for file-attributes.

goto announcement, summary, changes


Not conform with <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Automatically validated by PSGML