|
|||||||||||||||||
Searching XEmacs
Quick Links
About XEmacs
|
XEmacs 21.5.30 "garlic" is releasedgoto announcement, summary, changes To: xemacs-beta@xemacs.org From: "Stephen J. Turnbull, XEmacs 21.5 Beta Engineer" <stephen@xemacs.org> Subject: XEmacs 21.5.30 "garlic" is released. Organization: The XEmacs Project * XEmacs 21.5.30 "garlic" is released. "garlic" is the thirty-first in the VEGETABLE series. The successor to XEmacs 21.5.29 "garbanzo", "garlic" adds many changes to what will be the last release of XEmacs 21.5 licensed under the GNU General Public License, version 2. Future releases will be licensed under the GNU General Public License, version 3 or later, at your option. As part of the effort to prepare for relicensing, many files with unclear authorship which were believed to be unused in practice have been removed, including support for many "obsolete" platforms. If this causes problems for you, don't hesistate to report it as a bug! This effort was led by Mats Lidell and Jerry James, with contributions from Stephen Turnbull, Aidan Kehoe, Ben Wing, and Mike Sperber (and possibly others; if I missed you, you have my apologies!) As always, there is a raft of changes from Ben Wing, Mule-izing files and improving debugging facilities, as well as a lot of refactoring. Now that XEmacs always has a UTF-8 decoder, some files have been transcoded from Latin-1 or ISO-2022-JP to UTF-8. NOTE: Non-Mule XEmacsen can only handle the Latin-1 subset of Unicode internally. In particular, it is not possible to decode other subsets from Unicode. It is still possible to read in files in legacy 8-bit coding systems (the ISO Latin series, KOI8, etc.) and display using an appropriate font on X, but it is strongly recommended that you use Mule-enabled XEmacs in any environment using an coding system other than ASCII or Latin-1. Aidan Kehoe has put a lot of effort into improving the Lisp language. Many functions have been optimized. He has also greatly improved Common Lisp compatibility, specifically by implementing true multiple values at the C level, and by fixing many incompatibilities observed by running Paul Dietz's test suite under XEmacs. He has also optimized a large number of other functions. The multiple value support is incompatible with the old cl.el implementation by returning lists. Aidan has worked hard to hide this with appropriate macros, including in the XEmacs package distribution, but some incompatibilities may remain if you try to share compiled libraries between XEmacs 21.4 and XEmacs 21.5. Didier Verna has implemented a background-placement face property, with a contribution from Ben. A half-dozen crashes have been fixed, thanks to Aidan Kehoe, Stephen Turnbull, Adrian Aichner, and Ben Wing. There are many other improvements and fixes, but these old fingers are too tired to type them. See the (not so) Brief List of Changes for a complete list, and the ChangeLogs for full details. 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, http://www.xemacs.org/ * XEmacs 21.5.30 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 safe your work often and follow a regular backup regime. * Availability Anonymous ftp: ftp://ftp.xemacs.org/pub/xemacs/xemacs-21.5 See http://www.xemacs.org/Install/ for more information about building from source. If you already have a 21.5.29 source tree, a patchkit is available in xemacs-21.5.29-21.5.30.patch.gz. This does not update .elcs or .infos. They will be rebuilt when you make XEmacs. If you have an earlier version, you can repeatedly apply patchkits. Also, if you don't have the packages yet, see http://www.xemacs.org/Documentation/packageGuide.html. Anonymous ftp: ftp://ftp.xemacs.org/pub/xemacs/xemacs-21.5 See http://www.xemacs.org/Install/ for more information about building from source. If you already have a 21.5.29 source tree, a patchkit is available in xemacs-21.5.29-21.5.30.patch.gz. This does not update .elcs or .infos. They will be rebuilt when you make XEmacs. If you have an earlier version, you can repeatedly apply patchkits. Also, if you don't have the packages yet, see http://www.xemacs.org/Documentation/packageGuide.html. Changes in XEmacs 21.5.30 "garlic"goto announcement, summary, changes Major Features and Backward Incompatible Changes
-- new: Functions may return multiple values as in Common Lisp (incompatible with cl.el implementation in some cases).User-Visible Bug Fixes and Minor Improvements
Build Infrastructure and Source Tree
Documentation
Lisp API
-- improve: read-buffer gets new optional argument EXCLUDE.
Internal API and Implementation
Testing and Debugging
ChangeLogs for XEmacs 21.5.30 "garlic"goto announcement, summary, changes
ChangeLog Entries from ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2011-03-24 Jerry James <james@xemacs.org> * INSTALL: "youself" -> "yourself". * aclocal.m4: "dependancy" -> "dependency". * configure.ac: "priveleges" -> "privileges". * configure: Regenerate. 2010-11-02 Mats Lidell <matsl@xemacs.org> * netinstall: removed 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * aclocal.m4: Add standard permission boilerplate. 2010-06-02 Aidan Kehoe <kehoea@parhasard.net> * version.sh.in: * configure.ac (XE_COMPLEX_ARG, XE_EXPAND_VARIABLE): Remove conditionals and information for InfoDock. 2010-04-09 Ben Wing <ben@xemacs.org> * CHANGES-beta: Update with my changes to the trunk since the release of 21.5.29 in 2009 up through April 9, 2010. 2010-04-02 Aidan Kehoe <kehoea@parhasard.net> * CHANGES-beta: Update with my changes to the trunk since 2009-09-20. 2010-03-18 Ben Wing <ben@xemacs.org> * CHANGES-beta: Partially updated with last couple of months worth of changes. 2010-03-18 Mike Sperber <mike@xemacs.org> * INSTALL: Reflect change from `lib' to `share'; also, document how to invoke configure to get the old setting. * configure.ac: Set LATE_PACKAGE_DIRECTORIES_USER_DEFINED if `datadir' was changed; set `with_late_packages' to something sensible for this case. 2010-02-20 Ben Wing <ben@xemacs.org> * configure.ac (XE_COMPLEX_ARG): Correct doc of --quick-build: It also doesn't check for Lisp shadows. 2010-02-08 Ben Wing <ben@xemacs.org> * configure: * configure.ac (TAB): Various warnings that used to be present had mistakenly gotten turned off. Turn them back on. 2010-02-06 Ben Wing <ben@xemacs.org> * configure: * configure.ac (AC_LANG): * configure.ac (TAB): Add AC_LANG(C++) defs in a way very similar to AC_LANG(C), inserting our own flags, compiler, etc. When using g++, if we found ndbm, check whether we can compile a file using g++ and ndbm.h, calling some DBM routines. Currently, this fails because the prototypes in ndbm.h are incomplete, omitting the arguments, which doesn't work with g++. When ndbm.h is bad, we don't include it and instead provide our own prototypes; otherwise, we define TRUST_NDBM_H_PROTOTYPES, which signals to use the ones in ndbm.h. 2010-01-31 Ben Wing <ben@xemacs.org> * configure.ac (TAB): Say "This Xft feature" rather than just "This feature" to make it possible to more safely filter out the warning in my `runcc' script without the possibility of filtering out genuinely important warnings. * configure: Regenerate. 2010-01-23 Ben Wing <ben@xemacs.org> * configure: * configure.ac (XE_COMPLEX_ARG): Expand the help for --with-debug to describe more specifically what exactly gets turned on. Expand the help for --with-error-checking to describe all the possible arguments, including `all', `none', `noFOO', multiple arguments, etc. Change so that `--with-error-checking' is the same as `--with-error-checking=all'. Currently, `--with-error-checking' has no effect at all! It just means "leave all error-checking for specific classes to their default values", which are "maybe", and get converted to "yes" or "no" depending on whether we are running a beta XEmacs. 2010-01-24 Ben Wing <ben@xemacs.org> * configure: Rebuild. 2010-01-24 Ben Wing <ben@xemacs.org> * aclocal.m4 (XE_SHLIB_STUFF): Use -export-all-symbols instead of -export-dynamic on PE targets (Cygwin and MinGW). * configure.ac (XE_EXPAND_VARIABLE): * configure.ac (TAB): Create variable XEMACS_CC_GPP to check whether we're running g++. Don't just check for an executable called `g++' -- it might be called g++-4 or whatever. Instead, check for either named `g++*' or claiming to be g++ when called with --version. Rewrite code do use the variable. Add -fno-strict-aliasing to optimization flags when GCC and optimized, and in all cases with g++, since under these circumstances strict aliasing is otherwise assumed, and XEmacs can't easily be made to respect its restrictions. * configure: Regenerate. 2010-02-01 Ben Wing <ben@xemacs.org> * configure: * configure.ac (TAB): USE_XFT* -> HAVE_XFT*. 2010-01-14 Ben Wing <ben@xemacs.org> * PROBLEMS: Add description of crash on recent Cygwin 1.7 when using C++, NEWGC and optimization. 2010-01-16 Aidan Kehoe <kehoea@parhasard.net> * configure: Regenerate, now we no longer look for rint(). 2010-01-20 Ben Wing <ben@xemacs.org> * Makefile.in.in: * Makefile.in.in (GENERATED_HEADERS): * Makefile.in.in (.PHONY): * Makefile.in.in (src/.gdbinit): * configure: * configure.ac (TAB): etc/gdbinit.in has been moved to src/.gdbinit.in.in. Reflect this -- generate src/.gdbinit.in from src/.gdbinit.in.in, and use the normal mechanism for doing so instead of copying it specially. Add target for `config-changed' and pass down to `src'. Move some PHONY declarations to just before the actual targets. 2010-01-16 Aidan Kehoe <kehoea@parhasard.net> * configure: Regenerate, now we no longer look for rint(). 2010-01-13 Jerry James <james@xemacs.org> * configure.ac: Update comment about Cygwin and pdump. 2010-01-13 Ben Wing <ben@xemacs.org> * Makefile.in.in (fix-perms): Add target for fix-perms. Run it to correct permissions. * INSTALL: * PROBLEMS: * configure: * configure.ac (XE_COMPLEX_ARG): * configure.ac (XE_EXPAND_VARIABLE): * configure.ac (TAB): Rename all instances of enable-FOO to with-FOO. enable-FOO has long been aliased to with-FOO and we still preserve this, but formerly we randomly used enable-FOO but with-BAR. 2010-01-11 Ben Wing <ben@xemacs.org> * configure: * configure.ac (TAB): Add check for cygwin_conv_path(). 2010-01-11 Ben Wing <ben@xemacs.org> * configure: * configure.ac (TAB): Define USE_GPLUSPLUS when compiling with g++. 2010-01-06 Jerry James <james@xemacs.org> * configure.ac: Add --with-valgrind option. * configure: Regenerate. 2009-12-21 Jerry James <james@xemacs.org> * INSTALL: Remove references to OffiX. * configure.ac: Remove support for OffiX drag-and-drop. * configure: Regenerate. 2009-12-21 Jerry James <james@xemacs.org> * INSTALL: Replace reference to yow. 2009-12-18 Jerry James <james@xemacs.org> * INSTALL: Remove reference to rcs-checkin. 2009-12-18 Jerry James <james@xemacs.org> * build-msw-release.sh: Add copyright and GPL v2 or later header with permission of Andy Piper. 2009-12-09 Jerry James <james@xemacs.org> * INSTALL: Remove description of --without-xmu option. * configure.ac: Remove --with[out]-xmu option. Issue informative error message if libXmu cannot be found. Change all Xmu-related tests to assume Xmu is present. * configure: Regenerate. 2009-12-01 Mike Alexander <mta@umich.edu> * configure.ac: Make --with-database={dbm|gdbm} work again, it's testing $ndbm_h_found which is never set. * configure: ditto 2009-11-10 Jerry James <james@xemacs.org> * Makefile.in.in: Remove dynodump support. Delete out-of-date comment about Xenix. * aclocal.m4: Remove support for old operating systems. * configure.ac: Remove support for old machines and operating systems. Remove support for dynodump. (COFF_ENCAPSULATE) Remove, unused. * configure: Regenerate. * dynodump: Remove. 2009-11-18 Stephen J. Turnbull <stephen@xemacs.org> * PROBLEMS: Describe duplicate symbol warnings on Mac OS X. 2009-11-11 Stephen Turnbull <stephen@xemacs.org> * configure.ac (SYSTEM_MALLOC): Use system malloc on darwin. (USE_PARAM_H): #include <sys/param.h> to do needed #defines. 2009-11-09 Jerry James <james@xemacs.org> * configure.ac: Don't define GNU_MALLOC, as there is no longer an "old" GNU malloc. 2009-10-05 Jerry James <james@xemacs.org> * configure.ac: Check for external giflib instead of using builtin gif support. Remove "(builtin)" from relevant strings. 2009-07-31 Stephen Turnbull <stephen@xemacs.org> * configure.ac (HAVE_DBM): Use gdbm/ndbm.h if needed. Thanks to Karl Kleinpaste for the report. 2009-07-28 Mike Sperber <mike@xemacs.org> * Makefile.in.in: Don't install silly symlinks when $(prefix) != $(exec_prefix). 2009-07-28 Mike Sperber <mike@xemacs.org> * configure.ac: Expand @PREFIX@ in paths.h. 2009-07-28 Mike Sperber <mike@xemacs.org> * configure.ac: More accurate tests if paths have been set explicitly on the configure command line. 2009-07-26 Stephen J. Turnbull <stephen@xemacs.org> * configure.ac (XE_MERGED_ARG): Use correct separator when registering options to _AC_USER_OPTS. ChangeLog Entries from etc/ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2010-06-13 Stephen J. Turnbull <stephen@xemacs.org> * unicode/other/lao.txt: * tests/external-widget/Makefile: * tests/external-widget/test-ew-motif: * tests/external-widget/test-ew-xlib: * custom/example-themes/example-theme.el: * custom/example-themes/europe-theme.el: Correct FSF address in permission notice. 2010-02-22 Ben Wing <ben@xemacs.org> * dbxrc.in: Rename objects.c -> fontcolor.c. 2010-02-22 Ben Wing <ben@xemacs.org> * dbxrc.in: test-harness.el is in lisp directory now. 2010-01-28 Jerry James <james@xemacs.org> * tests/external-widget/Makefile: Add copyright and license boilerplate text based on Ben's recollection. * tests/external-widget/test-ew-motif.c: Ditto. * tests/external-widget/test-ew-xlib.c: Ditto. * unicode/other/lao.txt: Ditto. 2010-01-26 Aidan Kehoe <kehoea@parhasard.net> * HELLO: Encode the Arabic in arabic-iso8859-6 once more; delete the old, experimentally-encoded Thai. 2010-01-04 Jerry James <james@xemacs.org> * Emacs.ad: Change /usr/lib/X11 to /usr/share/X11. * xemacs.1: Ditto. 2009-12-18 Jerry James <james@xemacs.org> * idd/drop: Remove. * idd/dropmsk: Remove. 2009-12-10 Jerry James <james@xemacs.org> * sparcworks/SW.Editor.xpm: Remove obsolete file. * sparcworks/sunpro-mailcap: Ditto. * sparcworks: Remove empty directory. 2009-12-03 Jerry James <james@xemacs.org> * custom/example-themes/europe-theme.el: * custom/example-themes/example-theme.el: Add copyright and GPL notices as authorized by Jan Vroonhof. 2009-06-14 Aidan Kehoe <kehoea@parhasard.net> * gdbinit.in: Supply variables for the Lisp_Type_Record, Lisp_Type_Char type information, for the sake of various versions of GDB that can't take them from the enum vals in the executable. Use those variables instead of the enums. ChangeLog Entries from lib-src/ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2011-01-15 Mike Sperber <mike@xemacs.org> * fakemail.c: #include <osreldate.h> on FreeBSD, since we no longer have freebsd.h. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * gnuserv.c: * gnuserv.h: * gnuslib.c: Add standard permission boilerplate. * ad2c: Add copyright notices based on internal evidence. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * cvtmail.c: * fakemail.c: * make-path.c: * profile.c: * tcp.c: Fix typo (doubled phrase) in permission notice. 2010-06-13 Stephen J. Turnbull <stephen@xemacs.org> * ad2c: Correct FSF address in permission notice. 2010-06-02 Aidan Kehoe <kehoea@parhasard.net> * gnuclient.c (main): If gnuclient was built with GTK support, and is asking a gnuserv without GTK support to open a frame, fall back to X11, don't throw an error on the server side, invisible to the client. 2010-04-17 Aidan Kehoe <kehoea@parhasard.net> * make-docfile.c (scan_lisp_file): Even if a function doesn't have a doc string, store its file name in DOC. 2010-03-02 Ben Wing <ben@xemacs.org> * digest-doc.c: * make-path.c: `emacs' isn't defined, but HAVE_CONFIG_H is, so use it to get config.h. * getopt.h: Conditionalize on HAVE_CONFIG_H to get real prototypes. 2010-02-25 Ben Wing <ben@xemacs.org> * make-docfile.c: * make-docfile.c (write_c_args): Convert newlines to spaces so that argument lists are always on one line, because that's what function-documentation-1 expects. 2010-02-11 Vin Shelton <acs@xemacs.org> * winclient.c: Bump connection retries to 20 because some people have long startup files. (openConversation): If CreateProcess cannot find xemacs.exe, try again with the name of the version-specific executable. This is useful because the cygwin version of XEmacs doesn't install an xemacs.exe executable. (parseCommandLine): Fix tracker issue 675 - add current directory to filenames under cygwin. 2010-01-26 Ben Wing <ben@xemacs.org> * make-msgfile.lex: Vague hacking on this file, insert a comment about what should be done if we ever want this to work. 2010-01-24 Ben Wing <ben@xemacs.org> * fakemail.c (args_size): * fakemail.c (parse_header): * ootags.c (C_entries): Fix warnings about possible use of uninitialized vars. 2010-02-01 Vin Shelton <acs@xemacs.org> * make-mswin-unicode.pl: Add description of override. 2010-01-30 Ben Wing <ben@xemacs.org> * make-mswin-unicode.pl: Make it possible to specify an overridden prototype in cases where either Cygwin or Visual Studio has errors in their headers that can be corrected by falling back to a less qualified type (typically without const). 2010-01-28 Jerry James <james@xemacs.org> * Makefile.in.in: Remove make-msgfile and make-po rules. * make-msgfile.c: Removed, obsolete code. * make-po.c: Removed, obsolete code. 2010-01-15 Ben Wing <ben@xemacs.org> * make-mswin-unicode.pl: Process the command `review'. Cause an error to happen if we try to use the command, indicating that the command needs review to determine how to handle it. 2010-01-15 Ben Wing <ben@xemacs.org> * make-mswin-unicode.pl: Various fixes to get this to work when using the Cygwin header files in /usr/include/w32api instead of the VC++ ones: -- Use /usr/include/w32api as default; don't assume that a passed-in directory always ends in .../include. -- Add `const' to list of known type modifiers. -- If function already seen, warn but don't generate twice. -- Eliminate `extern' from return type modifiers. -- Cosmetic: When eliminating APIENTRY, also eliminate following whitespace. 2010-01-13 Ben Wing <ben@xemacs.org> * fix-perms.sh: New file. 2009-12-21 Jerry James <james@xemacs.org> * Makefile.in.in: Remove rules for building yow. * yow.c: Removed. 2009-12-18 Jerry James <james@xemacs.org> * Makefile.in.in: Don't install rcs-checkin. * rcs-checkin: Remove obsolete file. 2009-12-18 Jerry James <james@xemacs.org> * installexe.sh: Add copyright and GPL v2 or later header with permission of Andy Piper. 2009-12-15 Jerry James <james@xemacs.org> * ad2c: Add GPL v2 or later notice with permission of George Ferguson. See the xemacs-beta thread beginning with message <870180fe0912090940mac19378ydab5b5a04bf06cf8@mail.gmail.com>. 2009-12-15 Jerry James <james@xemacs.org> * Makefile.in.in: Remove build dependency and rule for wakeup. Thanks to Mats Lidell for the patch. 2009-12-10 Jerry James <james@xemacs.org> * gnudepend.pl: Remove obsolete file. * leditcfns.c: Ditto. * wakeup.c: Ditto. 2009-12-08 Sjoerd Mullender <sjoerd@acm.org> * etags.c (absolute_filename): Use memmove instead of strcpy to move characters within a string. 2009-11-10 Jerry James <james@xemacs.org> * fakemail.c (MAIL_PROGRAM_NAME): No s&m files define this now, so make it unconditional. (main): Make mail_program_name const, since it is never read, and drop a bogus cast as a result. * gnuclient.c (main): Remove reference to hp9000s300. * gnuserv.h: BSD4_1 is not defined on any supported system. 2009-10-26 Jerry James <james@xemacs.org> * insert-data-in-exec.c: Add BSD header, with permission of Olivier Galibert. See xemacs-beta message with ID <20091013224104.GA2573@dspnet.fr.eu.org>. 2009-08-15 It's me FKtPp ;) <m_pupil@yahoo.com.cn> * gnuclient.c (main): Do not set start point position if user didn't requested to do so 2009-07-28 Stephen Turnbull <stephen@xemacs.org> * make-docfile.c (write_c_args): Parse UNUSED and USED_IF right. ChangeLog Entries from lisp/ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2011-04-24 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (symbol-macrolet): * cl-macs.el (lexical-let): * cl.el: * cl.el (cl-macroexpand): Distinct symbol macros with identical string names should nonetheless expand to different things; implement this, storing the symbol's eq-hash in the macro environment, rather than its string name. 2011-04-23 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (define-char-comparisons): Add type-checking when the various character-specific comparison predicates are used; don't check types if byte-compile-delete-errors is non-nil at compile-time, instead use the corresponding built-in numeric byte codes. 2011-04-23 Aidan Kehoe <kehoea@parhasard.net> * font.el: * font.el (font-warn): Removed. * font.el (font-hex-string-to-number): Removed. * font.el (internal-facep): * font.el (font-lookup-rgb-components): * font.el (font-parse-rgb-components): Use #'string-to-number with the BASE argument instead of #'font-hex-string-to-number, #'display-warning instead of #'font-warn. This entire file smells bitrotted, with lots of functions of very little relevance to XEmacs, but addressing that is more work than I can do today. 2011-04-17 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el: * cl-extra.el ('char<): New. * cl-extra.el ('char>=): New. * cl-extra.el ('char>): New. * cl-extra.el ('char<=): New. * cl-extra.el (alpha-char-p): New. * cl-extra.el (graphic-char-p): New. * cl-extra.el (standard-char-p): New. * cl-extra.el (char-name): New. * cl-extra.el (name-char): New. * cl-extra.el (upper-case-p): New. * cl-extra.el (lower-case-p): New. * cl-extra.el (both-case-p): New. * cl-extra.el (char-upcase): New. * cl-extra.el (char-downcase): New. * cl-extra.el (integer-length): New. Add various functions dealing (mainly) with characters, making some Common Lisp code easier to port. * descr-text.el (describe-char-unicode-data): Add an autoload for this function, used by #'char-name. 2011-04-12 Aidan Kehoe <kehoea@parhasard.net> * mule/mule-win32-init.el (windows-874): No longer create this coding system, now it's provided by thai.el; thanks for the report of the associated Win32 build problem, Mats! 2011-04-08 Aidan Kehoe <kehoea@parhasard.net> * unicode.el (load-unicode-tables): No longer include thai-xtis in the default Unicode precedence list. * mule/thai.el: * mule/thai.el (tis-620): * mule/thai.el (windows-874): * mule/thai.el ("Thai"): Move the Thai language environment and the TIS-620 coding system to this file; add support for Microsoft's code page 874. * mule/thai-util.el: * mule/thai-xtis.el: Remove these two files; XTIS was always non-standard and was never widely implemented, and we've never supported the character composition necessary for thai-util.el. * dumped-lisp.el (preloaded-file-list): Drop thai-xtis, dump thai.el instead. 2011-04-02 Aidan Kehoe <kehoea@parhasard.net> * cl.el (cadr, caddr, cadddr): Document some equivalences for these functions. 2011-04-02 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-output-preface): New. * bytecomp.el (byte-compile-output-file-form): * bytecomp.el (byte-compile-output-docform): * bytecomp.el (byte-compile-file-form): * bytecomp.el (byte-compile-file-form-defmumble): * bytecomp.el (symbol-value): * bytecomp.el (byte-compile-symbol-value): New. * cl-macs.el (load-time-value): No longer implement load-time-value by very hackishly redefining #'byte-compile-file-form-defmumble, instead make the appropriate changes in #'byte-compile-file-form-defmumble and #'byte-compile-file-form instead. We also add a specific byte-compile method for #'symbol-value, using the add-properties-to-a-gensym approach that worked for #'block and #'return-from. 2011-03-29 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (cl-finite-do, cl-float-limits): Don't make these available as functions in the dumped image, since they're only called at dump time. * obsolete.el (cl-float-limits): Make this an alias to #'identity (since it's called at dump time), mark it as obsolete in 21.5. 2011-03-29 Aidan Kehoe <kehoea@parhasard.net> * cl.el: * cl.el (least-positive-float): * cl.el (least-positive-normalized-float): * cl.el (least-negative-normalized-float): * cl.el (float-epsilon): * cl.el (float-negative-epsilon): Document some previously-undocumented float constants here. * cl.el (oddp): * cl.el (evenp): Change numeric comparison to use #'eql instead of #'eq in passing. 2011-03-24 Jerry James <james@xemacs.org> * cl-macs.el (loop): "arbitary" -> "arbitrary". * coding.el (force-coding-system-equivalency): "compatiblity" -> "compatibility". * cus-edit.el (custom-variable-pre-reset-standard): "explictly" -> "explicitly" and fix grammar. (custom-face-pre-reset-standard): "explictly" -> "explicitly". * etags.el (pop-tag-mark): "seperate" -> "separate". * files.el (make-temp-file): "analagous" -> "analogous". * font-menu.el (font-menu-ignore-scaled-fonts): "noticably" -> "noticeably". * fontconfig.el (fc-pattern-get-or-compute-size): "unsucessful" -> "unsuccessful". * gnome-widgets.el: "writen" -> "written", "choosed" -> "chosen", "existance" -> "existence". * gtk-ffi.el (gtk-ffi-debug): "wiht" -> "with". * gtk-widgets.el: "wil" -> "will", "occure" -> "occur", "efficent" -> "efficient", "mannor" -> "manner", "negitive" -> "negative", "particulary" -> "particularly". * info.el (Info-suffixed-file): "independantly" -> "independently". * minibuf.el (minibuffer): "Controling" -> "Controlling". * mule/ccl.el (define-ccl-program): "correponding" -> "corresponding". * mule/indian.el: "apperance" -> "appearance" and correct grammar. * mule/kinsoku.el (kinsoku-process-extend): "permissable" -> "permissible", "deliberatly" -> "deliberately", and correct grammar. (kinsoku-process-shrink): "permissable" -> "permissible". * mule/lao-util.el (lao-vowel-reordering-rule): "follwoing" -> "following", "alwasy" -> "always". (lao-transcribe-single-roman-syllable-to-lao): "beggining" -> "beginning". * mule/latin.el: "idiosyncracy" -> "idiosyncrasy". * mule/thai-util.el: "repetion" -> "repetition". * package-get.el (package-get-require-base): "explictly" -> "explicitly". * packages.el (packages-find-package-data-path): "hierachies" -> "hierarchies". * paragraphs.el (use-hard-newlines): "preceeding" -> "preceding". * startup.el (command-line): "intial" -> "initial". * toolbar-itmes.el (toolbar-news): "Unkown" -> "Unknown". 2011-03-24 Aidan Kehoe <kehoea@parhasard.net> * custom.el (custom-add-to-group): Warn if adding an option to the nil group; this is usually an error on the part of the programmer. * cmdloop.el (suggest-key-bindings): Specify a group for this variable, it didn't previously have one. 2011-03-21 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (revappend, nreconc): Add compiler macros for these two functions. (They used to be inline, but that involves needless binding of the arguments.) 2011-03-21 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (cl-non-fixnum-number-p): This should return t under 64-bit builds for fixnums that would be bignums on a 32-bit machine; make it so. 2011-03-19 Stephen J. Turnbull <stephen@xemacs.org> * faces.el (face-spec-set-match-display): Protect against `display-color-cells' returning nil. Delete unreferenced let-binding of `min-colors'. 2011-03-17 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-catch): * bytecomp.el (byte-compile-throw): Correct some minor problems in my last change. Happy St. Patrick's day, everyone! 2011-03-17 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-catch): * bytecomp.el (byte-compile-throw): * cl-macs.el (return-from): With `block' and `return-from', a nil NAME is perfectly legitimate, and the corresponding `catch' statements need be removed by the byte-compiler. 5dd1ba5e0113 , my change of 2011-02-12, didn't do this; correct that now. 2011-03-15 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el: Don't generate the old-eq, old-memq, old-equal bytecodes any more, but keep the information about them around for the sake of the disassembler. 2011-03-14 Jeff Sparkes <jsparkes@gmail.com> * custom.el (defface): Document `min-colors' specifier. * faces.el (face-spec-set-match-display): Add `min-colors' specifer for defface. 2011-03-12 Aidan Kehoe <kehoea@parhasard.net> * isearch-mode.el (isearch-mode-map): Document why we bind the ASCII characters to isearch-printing-char in more detail. * isearch-mode.el (isearch-maybe-frob-keyboard-macros): If `this-command' is nil and the keys typed would normally be bound to `self-insert-command' in the global map, force `isearch-printing-char' to be called with an appropriate value for last-command-event. Addresses an issue where searching for characters generated from x-compose.el and XIM threw errors for me in dired. 2011-03-10 Aidan Kehoe <kehoea@parhasard.net> * etags.el (buffer-tag-table-list): * files.el (find-file-read-only): * files.el (find-file-read-only-other-window): * info.el (Info-dir-outdated-p): * info.el (Info-dump-dir-entries): * info.el (Info-rebuild-dir): * menubar-items.el (default-menubar): * mouse.el (drag-window-divider): * mouse.el (vertical-divider-map): * test-harness.el (emacs-lisp-file-regexp): Eliminate byte-compile warnings, again aside from those linked to Stephen's various non-defined fontconfig functions. 2011-03-10 Aidan Kehoe <kehoea@parhasard.net> * cmdloop.el (yes-or-no-p): * cmdloop.el (y-or-n-p): * descr-text.el (describe-char): * diagnose.el (show-memory-usage): * diagnose.el (show-object-memory-usage-stats): * diagnose.el (show-mc-alloc-memory-usage): * diagnose.el (show-gc-stats): * faces.el (face-font-instance): * gtk-font-menu.el (gtk-reset-device-font-menus): * help.el (help-symbol-function-context-menu): * help.el (help-symbol-variable-context-menu): * help.el (help-symbol-function-and-variable-context-menu): * help.el (help-find-source-or-scroll-up): * help.el (help-mouse-find-source-or-track): * help.el (temp-buffer-resize-mode): * minibuf.el (mouse-read-file-name-1): * obsolete.el (find-non-ascii-charset-string): * obsolete.el (find-non-ascii-charset-region): * occur.el (occur-engine): * paragraphs.el (forward-paragraph): * paragraphs.el (forward-sentence): * select.el (activate-region-as-selection): * select.el (select-make-extent-for-selection): * simple.el (zmacs-make-extent-for-region): Use quote, not function, for quoting symbols that may not be fboundp at the point they are read (again, a style issue, since Common Lisp throws an error on this, but we don't, and have no plans to.) 2011-03-08 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el: * cl-macs.el (loop): * cl-macs.el (cl-expand-do-loop): * cl-macs.el (shiftf): * cl-macs.el (rotatef): * cl-macs.el (assert): * cl-macs.el (cl-defsubst-expand): * etags.el (buffer-tag-table-list): * frame.el: * frame.el (frame-notice-user-settings): * frame.el (minibuffer-frame-list): * frame.el (get-frame-for-buffer-noselect): Use Common Lisp-derived builtins in a few more places, none of them performance-critical, but the style is better. 2011-03-08 Aidan Kehoe <kehoea@parhasard.net> * buff-menu.el (list-buffers-noselect): * byte-optimize.el (byte-optimize-identity): * byte-optimize.el (byte-optimize-if): * byte-optimize.el (byte-optimize-nth): * byte-optimize.el (byte-optimize-nthcdr): * bytecomp.el (byte-compile-warn-wrong-args): * bytecomp.el (byte-compile-two-args-19->20): * bytecomp.el (byte-compile-list): * bytecomp.el (byte-compile-beginning-of-line): * bytecomp.el (byte-compile-set): * bytecomp.el (byte-compile-set-default): * bytecomp.el (byte-compile-values): * bytecomp.el (byte-compile-values-list): * bytecomp.el (byte-compile-integerp): * bytecomp.el (byte-compile-multiple-value-list-internal): * bytecomp.el (byte-compile-throw): * cl-macs.el (cl-do-arglist): * cl-macs.el (cl-parse-loop-clause): * cl-macs.el (multiple-value-bind): * cl-macs.el (multiple-value-setq): * cl-macs.el (get-setf-method): * cmdloop.el (command-error): * cmdloop.el (y-or-n-p-minibuf): * cmdloop.el (yes-or-no-p-minibuf): * coding.el (unencodable-char-position): * cus-edit.el (custom-face-prompt): * cus-edit.el (custom-buffer-create-internal): * cus-edit.el (widget-face-action): * cus-edit.el (custom-group-value-create): * descr-text.el (describe-char-unicode-data): * dialog-gtk.el (popup-builtin-question-dialog): * dragdrop.el (experimental-dragdrop-drop-log-function): * dragdrop.el (experimental-dragdrop-drop-mime-default): * easymenu.el (easy-menu-add): * easymenu.el (easy-menu-remove): * faces.el (read-face-name): * faces.el (set-face-stipple): * files.el (file-name-non-special): * font.el (font-combine-fonts): * font.el (font-set-face-font): * font.el (font-parse-rgb-components): * font.el (font-rgb-color-p): * font.el (font-color-rgb-components): * gnuserv.el (gnuserv-edit-files): * help.el (key-or-menu-binding): * help.el (function-documentation-1): * help.el (function-documentation): * info.el (info): * isearch-mode.el (isearch-exit): * isearch-mode.el (isearch-edit-string): * isearch-mode.el (isearch-*-char): * isearch-mode.el (isearch-complete1): * ldap.el (ldap-encode-country-string): * ldap.el (ldap-decode-string): * minibuf.el (read-file-name-internal-1): * minibuf.el (read-non-nil-coding-system): * minibuf.el (get-user-response): * mouse.el (drag-window-divider): * mule/ccl.el: * mule/ccl.el (ccl-compile-if): * mule/ccl.el (ccl-compile-break): * mule/ccl.el (ccl-compile-repeat): * mule/ccl.el (ccl-compile-write-repeat): * mule/ccl.el (ccl-compile-call): * mule/ccl.el (ccl-compile-end): * mule/ccl.el (ccl-compile-read-multibyte-character): * mule/ccl.el (ccl-compile-write-multibyte-character): * mule/ccl.el (ccl-compile-translate-character): * mule/ccl.el (ccl-compile-mule-to-unicode): * mule/ccl.el (ccl-compile-unicode-to-mule): * mule/ccl.el (ccl-compile-lookup-integer): * mule/ccl.el (ccl-compile-lookup-character): * mule/ccl.el (ccl-compile-map-multiple): * mule/ccl.el (ccl-compile-map-single): * mule/devan-util.el (devanagari-compose-to-one-glyph): * mule/devan-util.el (devanagari-composition-component): * mule/mule-cmds.el (finish-set-language-environment): * mule/viet-util.el: * mule/viet-util.el (viet-encode-viscii-char): * multicast.el (open-multicast-group): * newcomment.el (comment-quote-nested): * newcomment.el (comment-region): * newcomment.el (comment-dwim): * regexp-opt.el (regexp-opt-group): * replace.el (map-query-replace-regexp): * specifier.el (derive-device-type-from-tag-set): * subr.el (skip-chars-quote): * test-harness.el (test-harness-from-buffer): * test-harness.el (batch-test-emacs): * wid-edit.el (widget-choice-action): * wid-edit.el (widget-symbol-prompt-internal): * wid-edit.el (widget-color-action): * window-xemacs.el (push-window-configuration): * window-xemacs.el (pop-window-configuration): * window.el (quit-window): * x-compose.el (electric-diacritic): It's better style, and cheaper (often one assembler instruction vs. a C funcall in the byte code), to use `eql' instead of `=' when it's clear what numerical type a given result will be. Change much of our code to do this, with the help of a byte-compiler change (not comitted) that looked for calls to #'length (which always returns an integer) in its args. 2011-03-08 Aidan Kehoe <kehoea@parhasard.net> * format.el (format-delq-cons): Removed. * format.el (format-make-relatively-unique): Removed. * format.el (format-common-tail): Removed. * format.el (format-reorder): Removed. * format.el (format-annotate-region): * format.el (format-annotate-single-property-change): * format.el (format-annotate-atomic-property-change): Remove various functions from this file that re-implemented Common Lisp functions that we have built-in. 2011-03-08 Aidan Kehoe <kehoea@parhasard.net> * select.el (selection-preferred-types): * select.el (cut-copy-clear-internal): * select.el (create-image-functions): * select.el (select-convert-from-image/gif): * select.el (select-convert-from-image/jpeg): * select.el (select-convert-from-image/png): * select.el (select-convert-from-image/tiff): * select.el (select-convert-from-image/xpm): * select.el (select-convert-from-image/xbm): * select.el (selection-converter-in-alist): Make my Lisp a little more sophisticated in this file. 2011-03-08 Aidan Kehoe <kehoea@parhasard.net> * package-ui.el (pui-add-required-packages): * packages.el (packages-handle-package-dumped-lisps): * bytecomp-runtime.el (byte-compile-with-fboundp): * bytecomp-runtime.el (globally-declare-fboundp): * bytecomp-runtime.el (byte-compile-with-byte-compiler-warnings-suppressed): * mule/devan-util.el (devanagari-reorder-glyphs-for-composition): * mule/devan-util.el (devanagari-compose-to-one-glyph): * mule/japanese.el: * mule/japanese.el ("Japanese"): * mule/make-coding-system.el (fixed-width-generate-helper): * mule/mule-category.el (defined-category-list): * mule/mule-category.el (undefined-category-designator): Style change: remove redundant lambdas, things like (mapcar #'(lambda (pkg) (symbol-name pkg)) ...) => (mapcar #'symbol-name ...). 2011-02-16 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-normal-call): Check that the car of FORM is a symbol before examining its properties; it can be a lambda form if byte-optimize.el hasn't worked its magic and transformed such a lambda call into inline code. 2011-02-12 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el: * bytecomp.el (byte-compile-initial-macro-environment): * bytecomp.el (unwind-protect): * bytecomp.el (byte-compile-active-blocks): * bytecomp.el (byte-compile-catch): * bytecomp.el ('return-from-1): Removed. * bytecomp.el ('block-1): Removed. * bytecomp.el (byte-compile-block-1): Removed. * bytecomp.el (byte-compile-return-from-1): Removed. * bytecomp.el (byte-compile-throw): * cl-macs.el (block): * cl-macs.el (return-from): In my last change, the elimination of `block's that were never `return-from'd didn't work if `cl-macroexpand-all' was called explicitly, something much code in cl-macs.el does. Change the implementation to something that doesn't require shadowing of the macros in `byte-compile-initial-macro-environment', putting a `cl-block-name' property on the gensym'd symbol argument to `catch' instead. 2011-02-09 Aidan Kehoe <kehoea@parhasard.net> * cl.el (acons): Removed, make the implementation in alloc.c visible to Lisp instead. 2011-02-07 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el: * bytecomp.el (byte-compile-initial-macro-environment): Shadow `block', `return-from' here, we implement them differently when byte-compiling. * bytecomp.el (byte-compile-active-blocks): New. * bytecomp.el (byte-compile-block-1): New. * bytecomp.el (byte-compile-return-from-1): New. * bytecomp.el (return-from-1): New. * bytecomp.el (block-1): New. These are two aliases that exist to have their own associated byte-compile functions, which functions implement `block' and `return-from'. * cl-extra.el (cl-macroexpand-all): Fix a bug here when macros in the environment have been compiled. * cl-macs.el (block): * cl-macs.el (return): * cl-macs.el (return-from): Be more careful about lexical scope in these macros. * cl.el: * cl.el ('cl-block-wrapper): Removed. * cl.el ('cl-block-throw): Removed. These aren't needed in code generated by this XEmacs. They shouldn't be needed in code generated by XEmacs 21.4, but if it turns out the packages do need them, we can put them back. 2011-01-30 Mike Sperber <mike@xemacs.org> * font-lock.el (font-lock-fontify-pending-extents): Don't fail if `font-lock-mode' is unset, which can happen in the middle of `revert-buffer'. 2011-01-23 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (delete): * cl-macs.el (delq): * cl-macs.el (remove): * cl-macs.el (remq): Don't use the compiler macro if these functions were given the wrong number of arguments, as happens in lisp-tests.el. * cl-seq.el (remove, remq): Removed. I added these to subr.el, and forgot to remove them from here. 2011-01-22 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-setq, byte-compile-set): Remove kludge allowing keywords' values to be set, all the code that does that is gone. * cl-compat.el (elt-satisfies-test-p): * faces.el (set-face-parent): * faces.el (face-doc-string): * gtk-font-menu.el: * gtk-font-menu.el (gtk-reset-device-font-menus): * msw-font-menu.el: * msw-font-menu.el (mswindows-reset-device-font-menus): * package-get.el (package-get-installedp): * select.el (select-convert-from-image-data): * sound.el: * sound.el (load-sound-file): * x-font-menu.el (x-reset-device-font-menus-core): Don't quote keywords, they're self-quoting, and the win from backward-compatibility is sufficiently small now that the style problem overrides it. 2011-01-22 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (block, return-from): Require that NAME be a symbol in these macros, as always documented in the #'block docstring and as required by Common Lisp. * descr-text.el (unidata-initialize-unihan-database): Correct the use of non-symbols in #'block and #'return-from in this function. 2011-01-15 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (concatenate): Accept more complicated TYPEs in this function, handing the sequences over to #'coerce if we don't understand them here. * cl-macs.el (inline): Don't proclaim #'concatenate as inline, its compiler macro is more useful than doing that. 2011-01-11 Aidan Kehoe <kehoea@parhasard.net> * subr.el (delete, delq, remove, remq): Move #'remove, #'remq here, they don't belong in cl-seq.el; move #'delete, #'delq here from fns.c, implement them in terms of #'delete*, allowing support for sequences generally. * update-elc.el (do-autoload-commands): Use #'delete*, not #'delq here, now the latter's no longer dumped. * cl-macs.el (delete, delq): Add compiler macros transforming #'delete and #'delq to #'delete* calls. 2011-01-10 Aidan Kehoe <kehoea@parhasard.net> * dialog.el (make-dialog-box): Correct a misplaced parenthesis here, thank you Mats Lidell in 87zkr9gqrh.fsf@mail.contactor.se ! 2011-01-02 Aidan Kehoe <kehoea@parhasard.net> * dialog.el (make-dialog-box): * list-mode.el (display-completion-list): These functions used to use cl-parsing-keywords; change them to use defun* instead, fixing the build. (Not sure what led to me not including this change in d1b17a33450b!) 2011-01-02 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (define-star-compiler-macros): Make sure the form has ITEM and LIST specified before attempting to change to calls with explicit tests; necessary for some tests in lisp-tests.el to compile correctly. (stable-union, stable-intersection): Add compiler macros for these functions, in the same way we do for most of the other functions in cl-seq.el. 2011-01-01 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (dolist, dotimes, do-symbols, macrolet) (symbol-macrolet): Define these macros with defmacro* instead of parsing the argument list by hand, for the sake of style and readability; use backquote where appropriate, instead of calling #'list and and friends, for the same reason. 2010-12-30 Aidan Kehoe <kehoea@parhasard.net> * x-misc.el (device-x-display): Provide this function, documented in the Lispref for years, but not existing previously. Thank you Julian Bradfield, thank you Jeff Mincy. 2010-12-30 Aidan Kehoe <kehoea@parhasard.net> * cl-seq.el: Move the heavy lifting from this file to C. Dump the cl-parsing-keywords macro, but don't use defun* for the functions we define that do take keywords, dynamic scope lossage makes that not practical. * subr.el (sort, fillarray): Move these aliases here. (map-plist): #'nsublis is now built-in, but at this point #'eql isn't necessarily available as a test; use #'eq. * obsolete.el (cl-delete-duplicates): Make this available for old compiler macros and old code. (memql): Document that this is equivalent to #'member*, and worse. * cl.el (adjoin, subst): Removed. These are in C. 2010-12-30 Aidan Kehoe <kehoea@parhasard.net> * simple.el (assoc-ignore-case): Remove a duplicate definition of this function (it's already in subr.el). * iso8859-1.el (char-width): On non-Mule, make this function equivalent to that produced by (constantly 1), but preserve its docstring. * subr.el (subst-char-in-string): Define this in terms of #'substitute, #'nsubstitute. (string-width): Define this using #'reduce and #'char-width. (char-width): Give this a simpler definition, it makes far more sense to check for mule at load time and redefine, as we do in iso8859-1.el. (store-substring): Implement this in terms of #'replace, now #'replace is cheap. 2010-12-30 Aidan Kehoe <kehoea@parhasard.net> * update-elc.el (lisp-files-needed-for-byte-compilation) (lisp-files-needing-early-byte-compilation): cl-macs belongs in the former, not the latter, it is as fundamental as bytecomp.el. 2010-12-30 Aidan Kehoe <kehoea@parhasard.net> * cl.el: Provde the Common Lisp program-error, type-error as error symbols. This doesn't nearly go far enough for anyone using the Common Lisp errors. 2010-12-29 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (delete-duplicates): If the form has an incorrect number of arguments, don't attempt a compiler macroexpansion. 2010-12-29 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (cl-safe-expr-p): Forms that start with the symbol lambda are also safe. 2010-12-29 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (= < > <= >=): For these functions' compiler macros, the optimisation is safe even if the first and the last arguments have side effects, since they're only used the once. 2010-12-29 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (inline-side-effect-free-compiler-macros): Unroll a loop here at macro-expansion time, so these compiler macros are compiled. Use #'eql instead of #'eq in a couple of places for better style. 2010-12-29 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (notany, notevery): Avoid some dynamic scope stupidity with local variable names in these functions, when they weren't prefixed with cl-; go into some more detail in the doc strings. 2010-12-29 Aidan Kehoe <kehoea@parhasard.net> * byte-optimize.el (side-effect-free-fns): #'remove, #'remq are free of side-effects. (side-effect-and-error-free-fns): Drop dot, dot-marker from the list. 2010-11-17 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (coerce): In the argument list, name the first argument OBJECT, not X; the former name was always used in the doc string and is clearer. Handle vector type specifications which include the length of the target sequence, error if there's a mismatch. * cl-macs.el (cl-make-type-test): Handle type specifications starting with the symbol 'eql. 2010-11-14 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (eql): Don't remove the byte-compile property of this symbol. That was necessary to override a bug in bytecomp.el where #'eql was confused with #'eq, which bug we no longer have. If neither expression is constant, don't attempt to handle the expression in this compiler macro, leave it to byte-compile-eql, which produces better code anyway. * bytecomp.el (eq): #'eql is not the function associated with the byte-eq byte code. (byte-compile-eql): Add an explicit compile method for this function, for cases where the cl-macs compiler macro hasn't reduced it to #'eq or #'equal. 2010-10-25 Aidan Kehoe <kehoea@parhasard.net> Add compiler macros and compilation sanity-checking for various functions that take keywords. * byte-optimize.el (side-effect-free-fns): #'symbol-value is side-effect free and not error free. * bytecomp.el (byte-compile-normal-call): Check keyword argument lists for sanity; store information about the positions where keyword arguments start using the new byte-compile-keyword-start property. * cl-macs.el (cl-const-expr-val): Take a new optional argument, cl-not-constant, defaulting to nil, in this function; return it if the expression is not constant. (cl-non-fixnum-number-p): Make this into a separate function, we want to pass it to #'every. (eql): Use it. (define-star-compiler-macros): Use the same code to generate the member*, assoc* and rassoc* compiler macros; special-case some code in #'add-to-list in subr.el. (remove, remq): Add compiler macros for these two functions, in preparation for #'remove being in C. (define-foo-if-compiler-macros): Transform (remove-if-not ...) calls to (remove ... :if-not) at compile time, which will be a real win once the latter is in C. (define-substitute-if-compiler-macros) (define-subst-if-compiler-macros): Similarly for these functions. (delete-duplicates): Change this compiler macro to use #'plists-equal; if we don't have information about the type of SEQUENCE at compile time, don't bother attempting to inline the call, the function will be in C soon enough. (equalp): Remove an old commented-out compiler macro for this, if we want to see it it's in version control. (subst-char-in-string): Transform this to a call to nsubstitute or nsubstitute, if that is appropriate. * cl.el (ldiff): Don't call setf here, this makes for a load-time dependency problem in cl-macs.el 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * term/vt100.el: Refer to XEmacs, not GNU Emacs, in permissions. * term/bg-mouse.el: * term/sup-mouse.el: Put copyright notice in canonical "Copyright DATE AUTHOR" form. Refer to XEmacs, not GNU Emacs, in permissions. * site-load.el: Add permission boilerplate. * mule/canna-leim.el: * alist.el: Refer to XEmacs, not APEL/this program, in permissions. * mule/canna-leim.el: Remove my copyright, I've assigned it to the FSF. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * gtk.el: * gtk-widget-accessors.el: * gtk-package.el: * gtk-marshal.el: * gtk-compose.el: * gnome.el: Add copyright notice based on internal evidence. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * easymenu.el: Add reference to COPYING to permission notice. * gutter.el: * gutter-items.el: * menubar-items.el: Fix typo "Xmacs" in permissions notice. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * auto-save.el: * font.el: * fontconfig.el: * mule/kinsoku.el: Add "part of XEmacs" text to permission notice. 2010-10-14 Aidan Kehoe <kehoea@parhasard.net> * byte-optimize.el (side-effect-free-fns): * cl-macs.el (remf, getf): * cl-extra.el (tailp, cl-set-getf, cl-do-remf): * cl.el (ldiff, endp): Tighten up Common Lisp compatibility for #'ldiff, #'endp, #'tailp; add circularity checking for the first two. #'cl-set-getf and #'cl-do-remf were Lisp implementations of #'plist-put and #'plist-remprop; change the names to aliases, changes the macros that use them to using #'plist-put and #'plist-remprop directly. 2010-10-12 Aidan Kehoe <kehoea@parhasard.net> * abbrev.el (fundamental-mode-abbrev-table, global-abbrev-table): Create both these abbrev tables using the usual #'define-abbrev-table calls, rather than attempting to special-case them. * cl-extra.el: Force cl-macs to be loaded here, if cl-extra.el is being loaded interpreted. Previously other, later files would redundantly call (load "cl-macs") when interpreted, it's more reasonable to do it here, once. * cmdloop.el (read-quoted-char-radix): Use defcustom here, we don't have any dump-order dependencies that would prevent that. * custom.el (eval-when-compile): Don't load cl-macs when interpreted or when byte-compiling, rely on cl-extra.el in the former case and the appropriate entry in bytecomp-load-hook in the latter. Get rid of custom-declare-variable-list, we have no dump-time dependencies that would require it. * faces.el (eval-when-compile): Don't load cl-macs when interpreted or when byte-compiling. * packages.el: Remove some inaccurate comments. * post-gc.el (cleanup-simple-finalizers): Use #'delete-if-not here, now the order of preloaded-file-list has been changed to make it available. * subr.el (custom-declare-variable-list): Remove. No need for it. Also remove a stub define-abbrev-table from this file, given the current order of preloaded-file-list there's no need for it. 2010-10-10 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-constp) Forms quoted with FUNCTION are also constant. (byte-compile-initial-macro-environment): In #'the, if FORM is constant and does not match TYPE, warn at byte-compile time. 2010-10-10 Aidan Kehoe <kehoea@parhasard.net> * backquote.el (bq-vector-contents, bq-list*): Remove; the former is equivalent to (append VECTOR nil), the latter to (list* ...). (bq-process-2): Use (append VECTOR nil) instead of using #'bq-vector-contents to convert to a list. (bq-process-1): Now we use list* instead of bq-list * subr.el (list*): Moved from cl.el, since it is now required to be available the first time a backquoted form is encountered. * cl.el (list*): Move to subr.el. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * test-harness.el (Check-Message): Add an omitted comma here, thank you the buildbot. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * hash-table.el (hash-table-key-list, hash-table-value-list) (hash-table-key-value-alist, hash-table-key-value-plist): Remove some useless #'nreverse calls in these files; our hash tables have no order, it's not helpful to pretend they do. * behavior.el (read-behavior): Do the same in this file, in some code evidently copied from hash-table.el. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * info.el (Info-insert-dir): * format.el (format-deannotate-region): * files.el (cd, save-buffers-kill-emacs): Use #'some, #'every and related functions for applying boolean operations to lists, instead of rolling our own ones that cons and don't short-circuit. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-initial-macro-environment): * cl-macs.el (the): Rephrase the docstring, make its implementation when compiling files a little nicer. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * descr-text.el (unidata-initialize-unicodedata-database) (unidata-initialize-unihan-database, describe-char-unicode-data) (describe-char-unicode-data): Wrap calls to the database functions with (with-fboundp ...), avoiding byte compile warnings on builds without support for the database functions. (describe-char): (reduce #'max ...), not (apply #'max ...), no need to cons needlessly. (describe-char): Remove a redundant lambda wrapping #'extent-properties. (describe-char-unicode-data): Call #'nsubst when replacing "" with nil in the result of #'split-string, instead of consing inside mapcar. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * x-faces.el (x-available-font-sizes): * specifier.el (let-specifier): * package-ui.el (pui-add-required-packages): * msw-faces.el (mswindows-available-font-sizes): * modeline.el (modeline-minor-mode-menu): * minibuf.el (minibuf-directory-files): Replace the O2N (delq nil (mapcar (lambda (W) (and X Y)) Z)) with the ON (mapcan (lambda (W) (and X (list Y))) Z) in these files. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (= < > <= >=): When these functions are handed more than two arguments, and those arguments have no side effects, transform to a series of two argument calls, avoiding funcall in the byte-compiled code. * mule/mule-cmds.el (finish-set-language-environment): Take advantage of this change in a function called 256 times at startup. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-function-form, byte-compile-quote) (byte-compile-quote-form): Warn at compile time, and error at runtime, if a (quote ...) or a (function ...) form attempts to quote more than one object. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * byte-optimize.el (byte-optimize-apply): Transform (apply 'nconc (mapcar ...)) to (mapcan ...); warn about use of the first idiom. * update-elc.el (do-autoload-commands): * packages.el (packages-find-package-library-path): * frame.el (frame-list): * extents.el (extent-descendants): * etags.el (buffer-tag-table-files): * dumped-lisp.el (preloaded-file-list): * device.el (device-list): * bytecomp-runtime.el (proclaim-inline, proclaim-notinline) Use #'mapcan, not (apply #'nconc (mapcar ...) in all these files. * bytecomp-runtime.el (eval-when-compile, eval-and-compile): In passing, mention that these macros also evaluate the body when interpreted. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (the): Add a docstring and an implementation for this macro. * bytecomp.el (byte-compile-initial-macro-environment): Add #'the to this, checking byte-compile-delete-errors to decide whether to make the type assertion. Change the initvalue to use backquote and preceding commas for the lambda expressions, to allow the latter to be compiled. 2010-09-06 Aidan Kehoe <kehoea@parhasard.net> * cl-seq.el (replace): Move this function, with added bounds-checking per ANSI Common Lisp, to fns.c. 2010-09-05 Aidan Kehoe <kehoea@parhasard.net> * x-compose.el (define-compose-map, compose-map) (decide-on-bindings): Support the precomposed characters with stroke here too, necessary for Polish and Danish, among others. * x-init.el (x-initialize-compose): Add the appropriate map autoloads and bindings here. 2010-09-03 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (coerce): Add fixnum as an accepted destination type. 2010-09-02 Aidan Kehoe <kehoea@parhasard.net> * obsolete.el (process-get): Make #'process-get, #'process-put, #'process-plist, #'set-process-plist available as aliases to the more general functions #'get, #'put, #'object-plist, #'object-setplist, for GNU compatibility. 2010-08-20 Mike Sperber <mike@xemacs.org> * files.el (save-some-buffers-action-alist): Add. (save-some-buffers-1): Use (synching with (GPLv2) FSF Emacs. 2010-08-18 Mike Sperber <mike@xemacs.org> * files.el (diff-files-for-recover): Abstract this out out `recover-file'. (diff-buffer-with-file): Add from (GPLv2) FSF Emacs. (recover-file): Use `diff-files-for-recover'. 2010-08-15 Aidan Kehoe <kehoea@parhasard.net> * specifier.el (canonicalize-inst-pair, canonicalize-spec): If a specifier tag set is correct, but an instantiator is not in an accepted format, don't error with the message "Invalid specifier tag set". Also, when we error, use error-symbols, for better structured error handling and more ease when testing. 2010-07-24 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (concatenate): * cl-seq.el (remove*, cl-delete-duplicates): Bit vectors are also sequences; enforce this in these functions. * cl-macs.el (concatenate): If TYPE is constant, don't inline #'concatenate, replace it by a call to the appropriate C functions. 2010-06-13 Stephen J. Turnbull <stephen@xemacs.org> * gnome.el: * gtk-compose.el: * gtk-marshal.el: * gtk-package.el: * gtk-widget-accessors.el: * gtk.el: * hyper-apropos.el: * multicast.el: * view-less.el: Correct FSF address in permission notice. 2010-06-08 Aidan Kehoe <kehoea@parhasard.net> * diagnose.el (show-gc-stats): Fix a misspelling in a heading in this function. 2010-06-08 Aidan Kehoe <kehoea@parhasard.net> * paragraphs.el (sentence-end): * gtk-faces.el: * custom.el (custom-declare-variable): Remove all core code calls to #'purecopy. * obsolete.el (purecopy): Make the function itself an obsolete alias to #'identity. 2010-06-06 Aidan Kehoe <kehoea@parhasard.net> * cl-seq.el (reduce): Move this to fns.c. 2010-06-02 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (complement): * cl-extra.el (complement): Add an implementation and a compiler macro for #'complement, as specified by CL. For discussion; the compiler macro may be a little too aggressive about taking the compile time argument lists of the functions it is inverting. 2010-06-02 Aidan Kehoe <kehoea@parhasard.net> * version.el: (emacs-version): * startup.el (command-line): * simple.el (display-warning, emacs-name): * packages.el (packages-package-hierarchy-directory-names): * loadup.el (Dumping): * dumped-lisp.el (preloaded-file-list): Remove all InfoDock-specific code. 2010-05-31 Aidan Kehoe <kehoea@parhasard.net> * specifier.el (current-display-table): Use keywords in the structure syntax here, now we've moved to that by default in C. 2010-05-30 Aidan Kehoe <kehoea@parhasard.net> * cl.el: Remove extraneous empty lines. Remove the commented-out Lisp implementation of #'last, #'copy-list. Remove #'cl-maclisp-member. (acons, pairlis): Have the argument list reflect the docstring for these functions. * cl-macs.el (defun*): Have the argument list reflect the docstring. Document the syntax of keywords in ARGLIST. (defmacro*): Have the argument list reflect the docstring. Document &body, &whole and &environment. (function*): Have the argument list reflect the docstring. (loop): Have the argument list reflect the docstring. (eval-when, dolist, dotimes, do-symbols, flet, labels, macrolet, symbol-macrolet): Specify the argument list using the arguments: (...) syntax. (define-setf-method, rotatef, defsubst*): Have the argument list reflect the docstring. (letf, letf*): Specify the argument list using the arguments: (...) syntax. (svref, acons, pairlis): Add compiler macros for these functions. * cl-extra.el: Remove the commented-out Lisp implementation of #'equalp. If we want to look at it, it's in version control. (cl-expt): Remove this. The subr #'expt is always available. Call #'cl-float-limits at dump time. Remove the commented-out Lisp implementation of #'subseq. (concatenate): Use (error 'invalid-argument ...) here, if TYPE is not understood. (list-length): Don't manually get the length of a list, call #'length and return nil if the list is circular. * byte-optimize.el (equalp): This needs byte-optimize-binary-predicate as its optimizer, as do the other equality predicates. 2010-05-30 Aidan Kehoe <kehoea@parhasard.net> * subr.el (float-time): Add this function, available in editfns.c in GNU. 2010-05-16 Aidan Kehoe <kehoea@parhasard.net> * files.el (default-file-system-ignore-case): Move this to fileio.c, where it's a constant boolean variable initialised at dump time. 2010-04-29 Aidan Kehoe <kehoea@parhasard.net> * cmdloop.el (suggest-key-bindings): Make this available, documenting that it's for GNU Emacs compatibility. Implement it in terms of teach-extended-commands-p and teach-extended-commands-timeout, using Ben's set-symbol-value-handler functionality. 2010-04-17 Aidan Kehoe <kehoea@parhasard.net> * loadup.el (load-history): Be a bit more discriminate in the entries we remove from load-history, only removing those where the information is entirely available from DOC. Fixes problems finding the files that dumped undocumented variables were loaded from, reported by Didier Verna. * loadhist.el (symbol-file): Correct a regexp here, I had forgotten to double a backslash. 2010-04-15 Aidan Kehoe <kehoea@parhasard.net> * files.el (hack-local-variables-prop-line) (hack-one-local-variable): Only attempt to call MODENAME-mode on encountering a -*-MODENAME-*- line if the corresponding symbol has a function binding, avoiding an error if, for example, opening a log file with XLFDs and wild cards. Thanks for the bug report, Henrique Martins! 2010-04-09 Didier Verna <didier@xemacs.org> * hyper-apropos.el (hyper-apropos-get-doc): Use [not available] when a function's arglist is unknown (this happens for autoloaded functions). 2010-04-07 Didier Verna <didier@xemacs.org> * font-lock.el (lisp-font-lock-keywords-2): Add missing CL style lambda list constructs (&key etc.). * lisp-mode.el (lisp-function-and-type-regexp): Recognize defun* as well as defun. 2010-04-02 Aidan Kehoe <kehoea@parhasard.net> * descr-text.el (describe-char-unicode-data): Don't give up if describe-char-use-cache is t and the database isn't readable, warn and insert the entire UnicodeData.txt file instead. 2010-04-01 Aidan Kehoe <kehoea@parhasard.net> * cl-seq.el (fill, sort*, merge): Move these functions to fns.c. (stable-sort): Make this docstring reflect the argument names used in the #'sort* docstring. * cl-macs.el (stable-sort): Make #'stable-sort exactly equivalent to #'sort* in compiled code. * bytecomp.el (byte-compile-maybe-add-*): New macro, for functions like #'sort and #'mapcar that, to be strictly compatible, should only take two args, but in our implementation can take more, because they're aliases of #'sort* and #'mapcar*. (byte-compile-mapcar, byte-compile-sort, byte-compile-fillarray): Use this new macro. (map-into): Add a byte-compile method for #'map-into in passing. * apropos.el (apropos-print): Use #'sort* with a :key argument, now it's in C. * compat.el (extent-at): Ditto. * register.el (list-registers): Ditto. * package-ui.el (pui-list-packages): Ditto. * help.el (sorted-key-descriptions): Ditto. 2010-02-22 Ben Wing <ben@xemacs.org> * dumped-lisp.el (preloaded-file-list): * font.el (font-tty-find-closest-color): * fontcolor.el: * fontcolor.el (ws-object-property-1): Removed. * fontcolor.el (fontcolor-property-1): New. * fontcolor.el (font-name): * fontcolor.el (font-ascent): * fontcolor.el (font-descent): * fontcolor.el (font-width): * fontcolor.el (font-height): * fontcolor.el (font-proportional-p): * fontcolor.el (font-properties): * fontcolor.el (font-truename): * fontcolor.el (color-name): * fontcolor.el (color-rgb-components): * x-faces.el: Rename objects.el -> fontcolor.el. 2010-02-22 Ben Wing <ben@xemacs.org> * obsolete.el: * obsolete.el ('show-buffer): New. * obsolete.el ('buffer-flush-undo): New. * obsolete.el (buffer-local-value): New. * obsolete.el (Info-default-directory-list): Removed. * obsolete.el (x-color-values): New. * obsolete.el (mswindows-color-list): * obsolete.el (init-file-user): Removed. * obsolete.el ('pui-add-install-directory): Removed. * obsolete.el (line-beginning-position): * obsolete.el ('line-beginning-position): New. * obsolete.el ('line-end-position): New. * obsolete.el (obsolete-throw): New. * obsolete.el ('cl-mapc): New. * obsolete.el ('byte-code-function-p): New. * obsolete.el ('interactive-form): New. * obsolete.el ('assq-delete-all): New. * obsolete.el (makehash): New. * obsolete.el ('user-original-login-name): Removed. * obsolete.el ('isearch-yank-x-selection): Removed. * obsolete.el ('isearch-yank-x-clipboard): Removed. * obsolete.el ('display-column-mode): New. Rearrange; create some new categories out of "misc" stuff, put categories in alphabetical order, move remaning "misc" stuff to bottom. 2010-03-29 Aidan Kehoe <kehoea@parhasard.net> * hyper-apropos.el (hyper-apropos-get-doc): Use help.el's #'function-arglist, #'function-documentation, #'symbol-file in this function, instead of rolling our own. 2010-03-25 Ben Wing <ben@xemacs.org> * diagnose.el (show-memory-usage): * diagnose.el (show-object-memory-usage-stats): Further changes to correspond with changes in the C code; add an additional column in show-object-memory-usage-stats showing the ancillary Lisp overhead used with each type; shrink columns for windows in show-memory-usage to get it to fit in 79 chars. 2010-03-26 Aidan Kehoe <kehoea@parhasard.net> * descr-text.el (describe-char-display): Behave better on builds without database support, and for characters where no font is available. Especially relevant on Win32. 2010-03-23 Aidan Kehoe <kehoea@parhasard.net> * x-win-xfree86.el (x-win-init-xfree86): If iso-left-tab (something ISO-specified and portable in theory; in practice only seen with XFree86 and derived non-US layouts) exists on the keyboard layout, make it equivalent to shift-tab, addressing the issue FKtPp sees in http://mid.xemacs.org/1269358206.4873.1.camel@fktpp-laptop . 2010-03-21 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (cl-prettyprint): Handle (function ...) specially here, as we do (quote ...). 2010-03-20 Ben Wing <ben@xemacs.org> * diagnose.el (show-memory-usage): * diagnose.el (show-object-memory-usage-stats): Further changes to correspond with changes in the C code; add an additional column showing the overhead used with each type, and add it into the grand total memory usage. 2010-03-19 Ben Wing <ben@xemacs.org> * diagnose.el (show-object-memory-usage-stats): Rewrite to take into account non-lisp-storage statistics returned by garbage-collect-1 and friends. 2010-03-18 Ben Wing <ben@xemacs.org> * diagnose.el (show-memory-usage): Rewrite to take into account API changes in memory-usage functions. 2010-03-20 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (notany, notevery): Correct these compiler macros. 2010-03-15 Ben Wing <ben@xemacs.org> * mule/mule-cmds.el: * mule/mule-cmds.el (finish-set-language-environment): Fix bug in generating display-table entries for error octet characters. 2010-03-12 Ben Wing <ben@xemacs.org> * test-harness.el (test-harness-from-buffer): Undo change of e.g. (Assert (equalp ...)) to (Assert-equalp ...). Get rid of `Assert-equalp' and friends, `Assert-test', and `Assert-test-not'. Instead, make `Assert' smart enough to do the equivalent functionality when an expression like (Assert (equalp ...)) is seen. 2010-03-11 Aidan Kehoe <kehoea@parhasard.net> * setup-paths.el (paths-find-emacs-roots) (paths-construct-info-path): Pass :from-end t to the delete-duplicates calls in these functions, now the compiler macro no longer defaults it to t. 2010-03-07 Ben Wing <ben@xemacs.org> * disp-table.el: * disp-table.el (standard-display-g1): * disp-table.el (standard-display-graphic): Fix up docs; add comments about authorship. 2010-03-06 Ben Wing <ben@xemacs.org> * test-harness.el: * test-harness.el (test-harness-backtrace): New. * test-harness.el (test-harness-assertion-failure-do-debug): * test-harness.el (test-harness-unexpected-error-do-debug): Use the print settings from edebug.el to make backtraces not be so huge. 2010-03-06 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-compiled-obj-to-list): Remove this function, printing a compiled object to a string and then reading back a substring is senseless, just use the compiled-function slot accessor functions. 2010-03-05 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (delete-duplicates): Correct the logic of this compiler macro when :from-end is nil, avoiding a hang in query-coding-tests.el. Thanks for the reports, Vin and Mats! 2010-03-04 Aidan Kehoe <kehoea@parhasard.net> * make-docfile.el (process-args): Use #'subseq here, not #'substring, fixing the native Windows build. Thank you for the error report, Vin! 2010-03-03 Aidan Kehoe <kehoea@parhasard.net> Move byte code #o117 to #'subseq, not #'substring. Make #'substring available as an alias for #'subseq in Lisp. * bytecomp.el (79, subseq, substring): * bytecomp.el (byte-compile-subseq): New. * update-elc.el (update-elc-chop-extension): Use #'subseq, not #'substring, the latter is not yet available. * subr.el (substring): New alias, to #'subseq. 2010-03-02 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (delete-dups): New compiler macro for this function, expanding to inline byte codes. (delete-duplicates): Handle the :from-end argument correctly in this compiler macro. 2010-03-01 Aidan Kehoe <kehoea@parhasard.net> * cl-seq.el (cl-parsing-keywords): * cl-macs.el (cl-do-arglist): Use the new invalid-keyword-argument error here. 2010-02-26 Aidan Kehoe <kehoea@parhasard.net> Back out Ben's revision c673987f5f3d. * coding.el: Add a compiler macro for #'make-coding-system on non-Mule builds too, to fix the problem he addressed with that changeset. * mule/make-coding-system.el (fixed-width-private-use-start): Don't call (decode-char ... 'ucs) here, it can make bootstrapping harder. 2010-02-26 Ben Wing <ben@xemacs.org> * autoload.el (autoload-featurep-protect-autoloads): Always insert a coding-system cookie, either raw-text-unix or escape-quoted. As before, insert an error statement when an escape-quoted auto-autoload is loaded in a non-Mule XEmacs. This fixes problems when the default coding system is UTF-8, as in Cygwin. Under some circumstances, the file can get written out as raw text and read in as UTF-8, where invididual high-bytes are usually invalid UTF-8 sequences and lead to error octets in the buffer; when written out again, these force escape-quoted. Result: auto-autoloads.el for the source-tree lisp/ directory would end up as escape-quoted. 2010-02-25 Didier Verna <didier@xemacs.org> The background-placement face property. * cl-macs.el (face-background-placement): New defsetf. * cus-face.el (custom-face-attributes): * faces.el (face-interactive): * faces.el (set-face-property): * faces.el (face-equal): * faces.el (init-other-random-faces): Update. * faces.el (face-background-placement): * faces.el (set-face-background-placement): * faces.el (face-background-placement-instance): * faces.el (face-background-placement-instance-p): * frame.el (set-frame-background-placement): * frame.el (frame-background-placement): * frame.el (frame-background-placement-instance): * objects.el (make-face-background-placement-specifier): New. 2010-02-25 Ben Wing <ben@xemacs.org> * autoload.el (make-autoload): Call cl-function-arglist with one arg. * cl-macs.el (cl-function-arglist): * cl-macs.el (cl-transform-lambda): Make cl-function-arglist take only one arg, the arglist; no function name passed. Also make sure to print () instead of nil when empty arglist, or function-documentation-1 won't recognize the arguments: line. * help.el (function-arglist): If empty arg, don't display extra space after function name. 2010-02-24 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (constantly): Normally return a compiled function from #'constantly if we are handed a single argument. Shouldn't actually matter, the overhead for returning a single constant in a lambda form vs. in a compiled function is minuscule, but using compiled functions as much as possible is good style in XEmacs, our interpreter is not stellar (nor indeed should it need to be). 2010-02-23 Ben Wing <ben@xemacs.org> * help.el: fux typo in comment. (oops) 2010-02-23 Ben Wing <ben@xemacs.org> * autoload.el: * autoload.el (make-autoload): * cl-macs.el (cl-function-arglist): * cl-macs.el (cl-transform-lambda): Don't add argument list with the tag "Common Lisp lambda list:"; instead add in "standard" form using "arguments:" and omitting the function name. Add an arg to `cl-function-arglist' to omit the name and use it in autoload.el instead of just hacking it off. * help.el: * help.el (function-arglist): * help.el (function-documentation-1): New. Extract out common code to recognize and/or strip the arglist from documentation into `function-documentation-1'. Use in `function-arglist' and `function-documentation'. Modify `function-arglist' so it looks for the `arguments: ' stuff in all doc strings, not just subrs/autoloads, so that CL functions get recognized properly. Change the regexp used to match "arguments: " specs to allow nested parens inside the arg list (happens when you have a default value specified in a CL arglist). 2010-02-22 Ben Wing <ben@xemacs.org> * test-harness.el: * test-harness.el (test-harness-from-buffer): * test-harness.el (batch-test-emacs): Move file from tests/automated into lisp/ so it gets byte-compiled. This significantly reduces the amount of extra crap in outputted backtraces. Delete hack in batch-test-emacs to look for test-harness.el in the test directory since it's not there any more. Also, in `Check-Message', incorporate call to `Skip-Test-Unless' in the macro output rather than its body, to avoid problems byte- compiling the file -- `Skip-Test-Unless' isn't available in the environment during byte-compilation so we can't call it then. 2010-02-22 Ben Wing <ben@xemacs.org> * cl-seq.el: * cl-seq.el (stable-union): New. * cl-seq.el (stable-intersection): New. New functions to do stable set operations, i.e. preserve the order of the elements in the argument lists, and prefer LIST1 over LIST2 when ordering the combined result. The result looks as much like LIST1 as possible, followed (in the case of `stable-union') by any necessary elements from LIST2, in order. This is contrary to `union' and `intersection', which are not required to be order- preserving and are not -- they prefer LIST2 and output results in backwards order. 2010-02-22 Ben Wing <ben@xemacs.org> * cl-seq.el: * cl-seq.el (reduce): * cl-seq.el (fill): * cl-seq.el (replace): * cl-seq.el (remove*): * cl-seq.el (remove-if): * cl-seq.el (remove-if-not): * cl-seq.el (delete*): * cl-seq.el (delete-if): * cl-seq.el (delete-if-not): * cl-seq.el (remove-duplicates): * cl-seq.el (delete-duplicates): * cl-seq.el (substitute): * cl-seq.el (substitute-if): * cl-seq.el (substitute-if-not): * cl-seq.el (nsubstitute): * cl-seq.el (nsubstitute-if): * cl-seq.el (nsubstitute-if-not): * cl-seq.el (find): * cl-seq.el (find-if): * cl-seq.el (find-if-not): * cl-seq.el (position): * cl-seq.el (position-if): * cl-seq.el (position-if-not): * cl-seq.el (count): * cl-seq.el (count-if): * cl-seq.el (count-if-not): * cl-seq.el (mismatch): * cl-seq.el (search): * cl-seq.el (sort*): * cl-seq.el (stable-sort): * cl-seq.el (merge): * cl-seq.el (member*): * cl-seq.el (member-if): * cl-seq.el (member-if-not): * cl-seq.el (assoc*): * cl-seq.el (assoc-if): * cl-seq.el (assoc-if-not): * cl-seq.el (rassoc*): * cl-seq.el (rassoc-if): * cl-seq.el (rassoc-if-not): * cl-seq.el (union): * cl-seq.el (nunion): * cl-seq.el (intersection): * cl-seq.el (nintersection): * cl-seq.el (set-difference): * cl-seq.el (nset-difference): * cl-seq.el (set-exclusive-or): * cl-seq.el (nset-exclusive-or): * cl-seq.el (subsetp): * cl-seq.el (subst-if): * cl-seq.el (subst-if-not): * cl-seq.el (nsubst): * cl-seq.el (nsubst-if): * cl-seq.el (nsubst-if-not): * cl-seq.el (sublis): * cl-seq.el (nsublis): * cl-seq.el (tree-equal): * cl-seq.el (cl-tree-equal-rec): * cl.el: * cl.el (pushnew): * cl.el (adjoin): * cl.el (subst): Document the keywords to the various sequence/list functions. 2010-02-21 Ben Wing <ben@xemacs.org> * diagnose.el: * diagnose.el (show-object-memory-usage-stats): Fix errors preventing this from working properly, account for words like "entry" pluralized to "entries". 2010-02-22 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (constantly): Add this function, from ANSI Common Lisp, using the SBCL extension that extra arguments to it are passed back as multiple values in the constructed function. * cl-macs.el (constantly): In the compiler macro for #'constantly, construct a compiled-function object almost every time, at compile time when all arguments are constant, and at runtime when they vary. 2010-02-08 Ben Wing <ben@xemacs.org> * help.el (describe-function-1): Don't use compiled-function-annotation to retrieve the file name for a function since it doesn't provide this info and load-history already does provide it. 2010-02-07 Aidan Kehoe <kehoea@parhasard.net> * make-docfile.el (format-decode): Remove this temporary function definition, now we check the symbol is bound in fileio.c * version.el (format-decode): Ditto. * format.el (car-less-than-car, cdr-less-than-cdr): Move these here from fileio.c, now they are only called once format.el is available. 2010-02-07 Aidan Kehoe <kehoea@parhasard.net> * setup-paths.el (paths-find-emacs-roots) (paths-construct-info-path): * packages.el (packages-find-installation-package-directories): #'union doesn't guarantee that it will preserve the relative order of elements in its arguments; use #'delete-duplicates instead. Thank you for the bug reports, Robert Pluim, Stephen Turnbull. 2010-02-06 Ben Wing <ben@xemacs.org> * unicode.el: * unicode.el (for): Convert file to utf-8. 2010-02-03 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (some, every): Move these functions to C. * cl-macs.el (notany, notevery): Add compiler macros for these functions, no longer proclaim them inline (which would involve specbinding that's not necessary with the compiler macros). 2010-02-06 Ben Wing <ben@xemacs.org> * code-init.el: * code-init.el (set-eol-detection): * code-init.el (coding-system-current-system-configuration): * code-init.el (coding-system-default-configuration-table): New. * code-init.el (no-mule-no-eol-detection): * code-init.el (define-coding-system-default-configuration): New. * code-init.el (coding-system-variable-default-value-table): Removed. * code-init.el (no-mule-eol-detection): * code-init.el (coding-system-default-configuration-list): Removed. * code-init.el (coding-system-default-variable-list): * code-init.el (get-coding-system-variable): * code-init.el (set-coding-system-variable): * code-init.el (coding-system-variable-default-value): * code-init.el (reset-coding-categories-to-default): Significant clean-up, add Cygwin-UTF-8 support. 1. Shorten the names of the coding system variables to follow what used to be considered the "abbreviations": default-process-coding-system-read -> process-read default-process-coding-system-write -> process-write buffer-file-coding-system-for-read -> bfcs-for-read default-buffer-file-coding-system -> default-bfcs no-conversion-coding-system-mapping -> no-conv-cs 2. Instead of listing all the defaults in a big, strangely organized table, use a new function `define-coding-system-default-configuration' to define a particular configuration. This uses a hash table stored in `coding-system-default-configuration-table'. Rewrite `coding-system-variable-default-value' appropriately. 3. Rename configurations to eliminate `unix' from the name: unix-no-mule-no-eol-detection -> no-mule-no-eol-detection unix-no-mule-eol-detection -> no-mule-eol-detection unix-mule -> mule This is because these are really for all systems but Windows, not just Unix. 4. Add configuration `cygwin-utf-8', enabled when (featurep 'cygwin-use-utf-8). Uses `utf-8' for all defaults except for `bfcs-for-read', which is `undecided'. 2010-01-28 Ben Wing <ben@xemacs.org> * lisp-mode.el: Finish documenting `lisp-indent-specform', on Mike Sperber's request. 2010-01-17 Ben Wing <ben@xemacs.org> * bytecomp-runtime.el: * bytecomp-runtime.el (error-unless-tests-match): New. * bytecomp-runtime.el (byte-compile-file-being-compiled): New. * bytecomp-runtime.el (compiled-if): New. * bytecomp-runtime.el (compiled-when): New. Add functions for dealing with conditional compilation of different code depending on the presence or absence of features. Necessary for some Mule code where code is run during compilation (macros or eval-when-compile) but, depending on how the code is written, the code itself will crash either with or without Unicode-internal. compiled-if and compiled-when are the basic functions for conditional compilation. They automatically trigger an error message upon file loading if, at that time, the test expression that selected which code to compile does not have the same value as at compile time. 2010-01-25 Ben Wing <ben@xemacs.org> * mule/cyrillic.el (koi8-c): Fix bug in #83 mapping. * mule/vietnamese.el (viscii): Fix bug in #A6 mapping. 2010-01-24 Ben Wing <ben@xemacs.org> * simple.el (capitalize-string-as-title): Use `with-string-as-buffer-contents' instead of emulating it. 2010-01-24 Ben Wing <ben@xemacs.org> * syntax.el: * syntax.el (make-syntax-table): Expand doc string. 2010-01-22 Ben Wing <ben@xemacs.org> * lisp-mode.el: * lisp-mode.el (lisp-indent-function): If the function begins with `with-', assume it is a macro or special form whose last argument is a body. Call `lisp-indent-specform' with a flag indicating that it should indent all arguments as a body instead of with normal (full) indent. * lisp-mode.el (lisp-indent-specform): Add an optional flag argument indicating that all non-distinguished arguments, not just the first, should be indented as a body. This is useful when the number of distinguished (i.e. pre-body) arguments isn't known, and is used for this purpose by `lisp-indent-function'. 2010-01-20 Aidan Kehoe <kehoea@parhasard.net> * simple.el (handle-pre-motion-command-current-command-is-motion): This function is called a *lot*, make it faster, making keysyms-equal inline, calling #'characterp (which doesn't have a bytecode) much more rarely, and not throwing and catching. This won't make much difference in practice, but does eliminate losts of noise from profiling, e.g. at startup. 2010-01-13 Ben Wing <ben@xemacs.org> * loadup.el: * loadup.el (featurep): * loadup.el (member): When featurep `debug-xemacs' (configure --with-debug), set debug-on-error, so that we get an exit-to-debugger/assertion failure upon Lisp error during loadup. Unset before dumping. 2010-01-10 Ben Wing <ben@xemacs.org> * mule/mule-cmds.el (get-native-coding-system-from-language-environment): Under Cygwin, force utf-8 if we are using Cygwin 1.7 or later (making use of the magic feature 'cygwin-use-utf-8). 2010-01-11 Ben Wing <ben@xemacs.org> * unicode.el: * unicode.el (utf-8): Don't define `utf-8' coding system here, because it's too late. We need it during early startup code at dump time so we create it in C in unicode.c. 2010-01-10 Didier Verna <didier@xemacs.org> * x-faces.el (x-init-face-from-resources) (x-init-device-faces) (x-init-frame-faces): Cosmetic changes (comments formatting). 2010-01-09 Didier Verna <didier@xemacs.org> * x-faces.el (x-init-global-faces): Deactivate obsolete code. * x-faces.el (x-init-device-faces): Ditto. * x-faces.el (x-init-frame-faces): Ditto. 2010-01-09 Didier Verna <didier@xemacs.org> * glyphs.el (init-glyphs): Recognize bitmaps/ directory as containing bitmap files. 2010-01-09 Aidan Kehoe <kehoea@parhasard.net> * subr.el (with-trapping-errors): Fix a bug here, where I used a normal quote instead of a backquote. Thank you the byte-compiler. 2010-01-08 Aidan Kehoe <kehoea@parhasard.net> * indent.el (indent-region): Make COLUMN optional as in GNU, merging Andreas Roehler's change of http://mid.xemacs.org/4B46F5FC.2070506@online.de ; thank you Andreas! 2010-01-07 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (map): Add a compiler macro for this function, for cases where CL-TYPE is constant and understood. 2010-01-07 Aidan Kehoe <kehoea@parhasard.net> * unicode.el (load-unicode-tables): * mule/mule-msw-init-late.el: * mule/mule-category.el (predefined-category-list): * mule/arabic.el: Move arabic-iso8859-6 back to C, it needs to be there, otherwise X11 character input lookup fails. 2010-01-06 Didier Verna <didier@xemacs.org> * cl-extra.el (get-properties): New. 2009-12-31 Aidan Kehoe <kehoea@parhasard.net> * list-mode.el (next-list-mode-item, switch-to-completions): Use next-single-char-property-change, previous-single-char-property-change now next-single-property-change no longer pays attention to extents not created using the text property functions. Fix for issue 546, bug dates from changeset 8c96bdabcaf9. 2009-12-21 Jerry James <james@xemacs.org> * dragdrop.el (offix-start-drag): Remove. (offix-start-drag-region): Remove. * mouse.el (mouse-begin-drag-n-drop): Remove OffiX support. 2009-12-21 Adrian Aichner <adrian@xemacs.org> * package-get.el (package-get-download-sites): Remove dk.xemacs.org from list of package download sites. * package-get.el (package-get-pre-release-download-sites): Ditto. 2009-12-21 Aidan Kehoe <kehoea@parhasard.net> * mule/arabic.el (arabic-iso8859-6): Move the creation of this character set to this (dumped) file, since it's needed for input on X11. * mule/iso-with-esc.el: Remove arabic-iso8859-6 and its Unicode map from this file. * unicode.el (load-unicode-tables): Load arabic-iso8859-6 on startup again. 2009-12-19 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (cl-do-arglist): * cl-compat.el (keyword-of): Remove support in our generated code for emacs versions where keywords are not self-quoting. 2010-02-03 Aidan Kehoe <kehoea@parhasard.net> Delete a couple of XEmacs-specific functions that duplicate CL functions. * find-paths.el (paths-filter, paths-uniq-append): Remove #'paths-filter, a reimplementation of #'remove-if-not, and #'paths-uniq-append, a reimplementation of #'union with test #'equal. (paths-decode-directory-path): Don't use #'path-filter here. * packages.el (packages-package-hierarchy-directory-names): Don't use #'path-filter here. (packages-find-installation-package-directories): Use #'union, not #'paths-uniq-append here. * setup-paths.el (paths-find-invocation-roots) (paths-find-emacs-roots, paths-construct-info-path) (paths-construct-info-path): Replace #'paths-filter with #'remove-if-not, #'paths-uniq-append with #'union. 2010-02-01 Aidan Kehoe <kehoea@parhasard.net> * loadhist.el (symbol-file): If #'built-in-symbol-file returns a Lisp file name, and source-lisp is readable, construct a full pathname to include that. Otherwise use lisp-directory, as we used to. * loadup.el: Delete load-history entries for those files in preloaded-file-list; unloading the associated features makes very little sense, and the symbol file information can be had from DOC. 2010-02-01 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (equalp): Remove special treatment for an #'equalp with a single character constant argument, it was incorrect (it used #'downcase instead of #'canoncase). 2010-02-01 Ben Wing <ben@xemacs.org> * cl-extra.el: * cl-extra.el (cl-string-vector-equalp): Removed. * cl-extra.el (cl-bit-vector-vector-equalp): Removed. * cl-extra.el (cl-vector-array-equalp): Removed. * cl-extra.el (cl-hash-table-contents-equalp): Removed. * cl-extra.el (equalp): Removed. * cl-extra.el (cl-mapcar-many): Comment out the whole `equalp' implementation for the moment; remove once we're sure the C implementation works. * cl-macs.el: * cl-macs.el (equalp): Simplify the compiler-macro for `equalp' -- once it's in C, we don't need to try so hard to expand it. 2010-01-31 Aidan Kehoe <kehoea@parhasard.net> * obsolete.el: * loadhist.el (symbol-file): * help.el (describe-function-1): * bytecomp.el: (byte-compile-save-current-buffer): * byte-optimize.el (byte-optimize-form-code-walker): * subr.el (subr-arity): Change "special form" to "special operator" in these files, it's the more logical term. * subr.el (special-form-p): Provide this alias for #'special-operator-p. 2010-01-30 Aidan Kehoe <kehoea@parhasard.net> * loadup.el: If any filename in load-history starts with the value of source-lisp, delete that part of the string, so that #'find-function works better with dumped functions in an installed XEmacs (it will look in lisp-directory instead, where it will probably succeed). 2010-01-29 Ben Wing <ben@xemacs.org> * mule/cyrillic.el (for): Upper and lowercase mappings were reversed for some old-Cyrillic chars. 2010-01-31 Aidan Kehoe <kehoea@parhasard.net> * cl.el (mapcar*): Delete; this is now in fns.c. Use #'mapc, not #'mapc-internal in a couple of places. * cl-macs.el (mapc, mapcar*, map): Delete these compiler macros now the corresponding functions are in fns.c; there's no run-time advantage to the macros. * cl-extra.el (coerce): Extend the possible conversions here a little; it's not remotely comprehensive yet, though it does allow running slightly more Common Lisp code than previously. (cl-mapcar-many): Delete. (map, maplist, mapc, mapl, mapcan, mapcon): Move these to fns.c. * bytecomp.el (byte-compile-maybe-mapc): Use #'mapc itself, not #'mapc-internal, now the former is in C. (mapcar*): Use #'byte-compile-maybe-mapc as this function's byte-compile method, now a #'mapc that can take more than one sequence is in C. * obsolete.el (cl-mapc): Move this compatibility alias to this file. * update-elc.el (do-autoload-commands): Use #'mapc, not #'mapc-internal here. 2010-01-26 Aidan Kehoe <kehoea@parhasard.net> * mule/vietnamese.el (viscii): Correct the mapping here, #xA6 is actually *SMALL* LETTER A WITH CIRCUMFLEX AND HOOK ABOVE. * mule/cyrillic.el (koi8-c): Correct the mapping here, #x8C is actually ?\u04D9. Add a case mapping for it. 2010-01-24 Aidan Kehoe <kehoea@parhasard.net> Correct the semantics of #'member*, #'eql, #'assoc* in the presence of bignums; change the integerp byte code to fixnump semantics. * bytecomp.el (fixnump, integerp, byte-compile-integerp): Change the integerp byte code to fixnump; add a byte-compile method to integerp using fixnump and numberp and avoiding a funcall most of the time, since in the non-core contexts where integerp is used, it's mostly distinguishing between fixnums and things that are not numbers at all. * byte-optimize.el (side-effect-free-fns, byte-after-unbind-ops) (byte-compile-side-effect-and-error-free-ops): Replace the integerp bytecode with fixnump; add fixnump to the side-effect-free-fns. Add the other extended number type predicates to the list in passing. * obsolete.el (floatp-safe): Mark this as obsolete. * cl.el (eql): Go into more detail in the docstring here. Don't bother checking whether both arguments are numbers; one is enough, #'equal will fail correctly if they have distinct types. (subst): Replace a call to #'integerp (deciding whether to use #'memq or not) with one to #'fixnump. Delete most-positive-fixnum, most-negative-fixnum from this file; they're now always in C, so they can't be modified from Lisp. * cl-seq.el (member*, assoc*, rassoc*): Correct these functions in the presence of bignums. * cl-macs.el (cl-make-type-test): The type test for a fixnum is now fixnump. Ditch floatp-safe, use floatp instead. (eql): Correct this compiler macro in the presence of bignums. (assoc*): Correct this compiler macro in the presence of bignums. * simple.el (undo): Change #'integerp to #'fixnump here, since we use #'delq with the same value as ELT a few lines down. 2010-01-20 Aidan Kehoe <kehoea@parhasard.net> * simple.el (handle-pre-motion-command-current-command-is-motion): This function is called a *lot*, make it faster, making keysyms-equal inline, calling #'characterp (which doesn't have a bytecode) much more rarely, and not throwing and catching. This won't make much difference in practice, but does eliminate losts of noise from profiling, e.g. at startup. 2010-01-13 Ben Wing <ben@xemacs.org> * loadup.el: * loadup.el (featurep): * loadup.el (member): When featurep `debug-xemacs' (configure --with-debug), set debug-on-error, so that we get an exit-to-debugger/assertion failure upon Lisp error during loadup. Unset before dumping. 2010-01-10 Ben Wing <ben@xemacs.org> * mule/mule-cmds.el (get-native-coding-system-from-language-environment): Under Cygwin, force utf-8 if we are using Cygwin 1.7 or later (making use of the magic feature 'cygwin-use-utf-8). 2010-01-11 Ben Wing <ben@xemacs.org> * unicode.el: * unicode.el (utf-8): Don't define `utf-8' coding system here, because it's too late. We need it during early startup code at dump time so we create it in C in unicode.c. 2010-01-10 Didier Verna <didier@xemacs.org> * x-faces.el (x-init-face-from-resources) (x-init-device-faces) (x-init-frame-faces): Cosmetic changes (comments formatting). 2010-01-09 Didier Verna <didier@xemacs.org> * x-faces.el (x-init-global-faces): Deactivate obsolete code. * x-faces.el (x-init-device-faces): Ditto. * x-faces.el (x-init-frame-faces): Ditto. 2010-01-09 Didier Verna <didier@xemacs.org> * glyphs.el (init-glyphs): Recognize bitmaps/ directory as containing bitmap files. 2010-01-09 Aidan Kehoe <kehoea@parhasard.net> * subr.el (with-trapping-errors): Fix a bug here, where I used a normal quote instead of a backquote. Thank you the byte-compiler. 2010-01-08 Aidan Kehoe <kehoea@parhasard.net> * indent.el (indent-region): Make COLUMN optional as in GNU, merging Andreas Roehler's change of http://mid.xemacs.org/4B46F5FC.2070506@online.de ; thank you Andreas! 2010-01-07 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (map): Add a compiler macro for this function, for cases where CL-TYPE is constant and understood. 2010-01-07 Aidan Kehoe <kehoea@parhasard.net> * unicode.el (load-unicode-tables): * mule/mule-msw-init-late.el: * mule/mule-category.el (predefined-category-list): * mule/arabic.el: Move arabic-iso8859-6 back to C, it needs to be there, otherwise X11 character input lookup fails. 2010-01-06 Didier Verna <didier@xemacs.org> * cl-extra.el (get-properties): New. 2009-12-31 Aidan Kehoe <kehoea@parhasard.net> * list-mode.el (next-list-mode-item, switch-to-completions): Use next-single-char-property-change, previous-single-char-property-change now next-single-property-change no longer pays attention to extents not created using the text property functions. Fix for issue 546, bug dates from changeset 8c96bdabcaf9. 2009-12-21 Jerry James <james@xemacs.org> * dragdrop.el (offix-start-drag): Remove. (offix-start-drag-region): Remove. * mouse.el (mouse-begin-drag-n-drop): Remove OffiX support. 2009-12-21 Adrian Aichner <adrian@xemacs.org> * package-get.el (package-get-download-sites): Remove dk.xemacs.org from list of package download sites. * package-get.el (package-get-pre-release-download-sites): Ditto. 2009-12-21 Aidan Kehoe <kehoea@parhasard.net> * mule/arabic.el (arabic-iso8859-6): Move the creation of this character set to this (dumped) file, since it's needed for input on X11. * mule/iso-with-esc.el: Remove arabic-iso8859-6 and its Unicode map from this file. * unicode.el (load-unicode-tables): Load arabic-iso8859-6 on startup again. 2009-12-19 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (cl-do-arglist): * cl-compat.el (keyword-of): Remove support in our generated code for emacs versions where keywords are not self-quoting. 2009-12-21 Michael Sperber <mike@xemacs.org> * gnuserv.el (gnuserv-program): Specifically look for gnuserv in `exec-directory'. 2009-12-18 Aidan Kehoe <kehoea@parhasard.net> * alist.el (modify-alist): * autoload.el (update-autoload-files, autoload-print-form): * bytecomp.el (batch-byte-compile-1) (byte-compile-multiple-value-call, byte-compile-funcall) (byte-compile-insert, byte-compile-concat, byte-compile-list) (byte-compile-normal-call, byte-compile-flush-pending): * cl-macs.el (letf): * cl.el: * disass.el (disassemble-1): * easy-mmode.el (easy-mmode-define-syntax): * faces.el (set-face-parent): * files.el (cd): * finder.el (finder-list-matches, finder-list-keywords) (finder-compile-keywords): * frame.el (frame-notice-user-settings) (frame-remove-geometry-props): * ldap.el (ldap-delete-entries, ldap-modify-entries) (ldap-add-entries): * loadhist.el (unload-feature): * map-ynp.el (map-y-or-n-p): * menubar-items.el (default-menubar): * mouse.el (default-mouse-track-next-move-rect) (default-mouse-track-next-move-rect) (default-mouse-track-cleanup-hook) (default-mouse-track-cleanup-extent): * mule/ethio-util.el (ethio-fidel-to-sera-buffer) (ethio-modify-vowel): * obsolete.el: * package-get.el (package-get-update-all): * package-ui.el (pui-list-packages) (pui-install-selected-packages, pui-install-selected-packages): * select.el (select-make-extent-for-selection) (dehilight-selection): * simple.el (clone-buffer): * term/tvi970.el: * term/wyse50.el: * unicode.el: (load-unicode-tables): * x-font-menu.el (fc-make-font-menu-entry) (x-reset-device-font-menus-xft): * x-misc.el (x-init-specifier-from-resources): Eliminate byte-compile warnings, with the exception of Stephen's various non-defined fontconfig functions, as I don't know if he plans to add them and is keeping the warnings around as a reminder. The warnings actually eliminated involve i) using mapcar instead of mapc where the result is discarded and ii) using a lambda quoted as data in a context where it is unequivocally used as a function. 2009-12-17 Aidan Kehoe <kehoea@parhasard.net> * mule/make-coding-system.el (fixed-width-create-decode-encode-tables): Use a rehash threshold of 0.999 for this hash table, now that hash table rehash thresholds are serialised correctly; these hash tables will never be resized, and it's not even that important that they are *that* fast, for most of the coding systems they're used a minority of the time. 2010-01-01 Aidan Kehoe <kehoea@parhasard.net> * syntax.el (map-syntax-table): * subr.el (map-plist): * startup.el (load-init-file): * minibuf.el (read-from-minbuffer): * cus-edit.el (custom-load-custom-defines-1): * cmdloop.el (execute-extended-command): Replace symbol names using underscore, whether to avoid dynamic scope problems or to ensure helpful arguments to #'call-with-condition-handler, with uninterned symbols. 2009-12-05 Stephen J. Turnbull <stephen@xemacs.org> * font.el (x-font-create-object): Check for Xft before using it. This fixes the symptom in openSUSE bug #558764. 2010-01-09 Aidan Kehoe <kehoea@parhasard.net> * descr-text.el (describe-char-unihan-field-descriptions): * cl-macs.el: Use keywords, not ordinary symbols, in the hash table read syntax, for compatibility with Common Lisp and recent GNU Emacs. 2009-11-10 Jerry James <james@xemacs.org> * device.el (device-type): Remove (mostly imaginary) support for NeXTstep. * font.el (font-window-system-mappings): Ditto. (ns-font-weight-mappings): Remove, unused. (ns-font-families-for-device): Ditto. (ns-font-create-name): Ditto. * frame.el (make-frame-on-device): Ditto. (frame-type): Ditto. (display-mouse-p): Remove reference to NeXTstep in a comment. * paths.el (initialize-xemacs-paths): Remove support for old Ultrix, but still look in standard paths for mh. Also remove support for old SCO Unix, Bull DPX/2, Data General Unix, RTU, and Unisoft Unix. 2009-11-15 Aidan Kehoe <kehoea@parhasard.net> * custom.el (custom-quote): Define this as an alias for `quote-maybe', which is in C and more comprehensive; packages still use this name in places. (customize-mark-to-save, customize-mark-as-set): Use `quote-maybe', not `custom-quote'. * cus-edit.el (customize-set-variable, customize-save-variable) (custom-variable-value-create, custom-variable-set) (custom-variable-pre-save): Remove a version of `custom-quote' specific to this file; use `quote-maybe' universally instead. 2009-11-14 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-funarg-n): New macro, used to create the various byte-compile-funarg functions, which check for quoted lambdas in given positions. (byte-compile-funarg, byte-compile-funarg-2) (byte-compile-funarg-4, byte-compile-funarg-1-2): Use byte-compile-funarg-n in implementing these functions. (byte-compile-maybe-mapc): Add some commentary on GNU's approach to this problem. Be much more comprehensive in the functions that we use byte-compile-funarg and related function to compile, especially including functions from cl-seq.el. 2009-11-14 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (letf): Check whether arguments to #'values are bound, and make them unbound after evaluating BODY; document the limitations of this macro. 2009-11-14 Aidan Kehoe <kehoea@parhasard.net> * faces.el (init-other-random-faces): If the modeline face is using its fallbacks, avoid that, specify the corresponding problems instead. Fixes problems described in http://mid.xemacs.org/3ggprc2diyt.wl_Ron.Isaacson@morganstanley.com 2009-11-09 Didier Verna <didier@xemacs.org> * minibuf.el (read-buffer): New optional argument 'exclude' for excluding buffers from the completion list. * buffer.el (switch-to-buffer): Don't offer the current buffer in the completion list. 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (save-window-excursion): Remove the compiler form for this bytecode, we no longer generate calls to it. Keep the information about the bytecode's numeric value, we want that for disassembling code. 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (cl-string-vector-equalp) (cl-bit-vector-vector-equalp, cl-vector-array-equalp) (cl-hash-table-contents-equalp): New functions, to implement equalp treating arrays with identical contents as equivalent, as specified by Common Lisp. (equalp): Revise this function to implement array equivalence, and the hash-table equalp behaviour specified by CL. * cl-macs.el (equalp): Add a compiler macro for this function, used when one of the arguments is constant, and as such, its type is known at compile time. 2009-11-01 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (equalp): Don't error if handed a string and a non-string. 2009-11-01 Stephen Turnbull <stephen@xemacs.org> * font.el (font-combine-fonts-internal): Fix syntax error in call of delete-duplicates. 2009-11-01 Stephen Turnbull <stephen@xemacs.org> * lisp.el (forward-sexp): (backward-sexp): (mark-sexp): (forward-list): (backward-list): (down-list): (backward-up-list): (up-list): (kill-sexp): (backward-kill-sexp): (beginning-of-defun): (beginning-of-defun-raw): (end-of-defun): (insert-parentheses): Change generic parameter ARG to self-documenting COUNT. Update docstring. (buffer-end): Change generic parameter ARG to self-documenting DIRECTION. Update docstring. (narrow-to-defun): Document that optional ARG is ignored. 2009-11-01 Stephen Turnbull <stephen@xemacs.org> * faces.el (Face-frob-property): Give mapper for TTYs 2 args. (make-face-family): (make-face-size): Generic mapper ignores TTYs and null devices. (make-face-bold): (make-face-italic): (make-face-bold-italic): (make-face-unbold): (make-face-unitalic): TTY mapper takes 2 args. 2009-10-09 Stephen Turnbull <stephen@xemacs.org> * lisp.el (beginning-of-defun-function): (end-of-defun-function): (beginning-of-defun): (end-of-defun): Make docstrings stop lying. 2009-10-30 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (regexp-quote): If STRING is constant, call regexp-quote at compile time. 2009-10-24 Aidan Kehoe <kehoea@parhasard.net> * files.el (default-file-system-ignore-case): New variable. (file-system-case-alist): New variable. (file-system-ignore-case-p): New function; return t if file names under PATH should be treated case-insensitively. * minibuf.el (read-file-name-1, read-file-name-internal-1) (read-file-name-internal-1): * package-admin.el (package-admin-check-manifest): Use file-system-ignore-case-p instead of checking system-type directly in these functions. (Even though minibuf.el is dumped before files.el, the function is only called in interactive usage, there's no dump time order dependency here.) 2009-10-19 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-default-warnings): Add two new warning types, discarded-consing (basically use of mapcar instead of mapc where its result is discarded) and quoted-lambda (use of a lambda expression quoted as data in a function context). (byte-compile-warnings): Document the new warnings. (byte-compile-fset, byte-compile-funarg): Implement the quoted-lambda warning option. (byte-compile-mapcar): Renamed to byte-compile-maybe-mapc. (byte-compile-maybe-mapc, byte-compile-maplist): Implement the discarded-consing warning option. Add more functions that should be compiled using byte-compile-funarg, notably mapvector, mapc-internal, map-char-table. * cl-macs.el (mapcar*): If we know at compile time that there are no CL options being used, use the mapcar subr, not the byte-coded function. 2009-10-12 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (mapc): New compiler macro, use mapc-internal at compile time if we're not using the Common Lisp functionality. * bytecomp.el (byte-compile-mapcar, byte-compile-maplist): New. If the return value of mapcar is being discarded, compile it to a mapc-internal call instead, and warn, because the programmer probably can't rely on always being compiled by an XEmacs that does this. Similarly for maplist and mapl; and use byte-compile-funarg for map, mapl, mapcan, mapcon. 2009-10-12 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (delete-duplicates): Fix another bug in the delete-duplicates compiler macro, thank you the byte compiler. 2009-10-07 Andreas Roehler <andreas.roehler@online.de> * lisp.el (beginning-of-defun-function): make variable buffer local * lisp.el (end-of-defun-function): make variable buffer local 2009-10-05 Jerry James <james@xemacs.org> * gnome.el: Add GPL v2 or later notice with explicit permission of Bill Perry (private email). * gtk-compose.el: Ditto. * gtk-marshal.el: Ditto. * gtk-package.el: Ditto. * gtk-widget-accessors.el: Ditto. * gtk.el: Ditto. 2009-10-05 Jerry James <james@xemacs.org> * glyphs.el (make-image-specifier): Remove ancient comment about lack of support for animated GIFs. 2009-08-16 Stephen J. Turnbull <stephen@xemacs.org> * gutter-items.el (progress-feedback-dispatch-non-command-events): Correct syntax of `condition-case'. 2009-06-28 Stephen J. Turnbull <stephen@xemacs.org> * font-lock.el (font-lock-pre-idle-hook): * etags.el (find-tag-default): Correct :operation arguments in `with-trapping-errors'. 2009-10-03 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (delete-duplicates): Make this compiler macro aware that CL-SEQ is a sequence, which may not necessarily be a list. 2009-09-30 Mike Sperber <mike@xemacs.org> * lisp.el (beginning-of-defun-raw): Unbreak; clean up sloppy coding. 2009-09-28 Mike Sperber <mike@xemacs.org> * autoload.el (make-autoload): Only try to add arguments to documentation when the form actually allows it. * cl-macs.el (cl-function-arglist): Add autoload; used in autoload.el. 2009-09-27 Aidan Kehoe <kehoea@parhasard.net> * cus-edit.el (custom-variable-prompt): nil is a symbol, check that variable-at-point is non-nil before checking if it's a symbol when deciding on the prompt used in this function. 2009-09-22 Andreas Roehler <andreas.roehler@online.de> * lisp.el (beginning-of-defun-raw): new variable: beginning-of-defun-function, beginning-of-defun may call FUNCTION determining start position * lisp.el (end-of-defun): new variable: end-of-defun-function, end-of-defun may call FUNCTION determining the end position 2009-09-20 Aidan Kehoe <kehoea@parhasard.net> Add arglist information to docstrings for autoloaded functions and macros. * hyper-apropos.el (hyper-apropos-get-doc): Treat autoload docstrings like subr docstrings; correct the regexp used. * help.el (describe-function-show-arglist): This no longer treats autoloads specially. (function-arglist): Treat autoload docstrings like subr docstrings. (function-documentation): Treat documentation strings that are zero-length after the arglist has been removed as indicating a lack of documentation. * cl-macs.el (case): (ecase): (typecase): (etypecase): (block): (return): (return-from): (progv): (lexical-let): (lexical-let*): (remf): (callf): (callf2): (define-modify-macro): (deftype): (define-compiler-macro): Rely on the autoload code to always show an arglist for these functions, don't supply an ad-hoc one in the docstring. These changes are for the most obvious functions; there are some missed that would require changing argument names in the docstring or in the function bodies. * autoload.el (make-autoload): Add arg list information to the doc string, using the same approach as for subrs. 2009-09-20 Aidan Kehoe <kehoea@parhasard.net> * help.el (function-arglist): Show the double-quotes in the sample output, correctly. Bind print-gensym to nil, now we're using uninterned symbols. Don't #'mapcar + #'intern to create uppercase symbols, use #'loop and #'make-symbol instead. * cl-macs.el (cl-upcase-arg): Don't intern the upcased symbols we're using for cosmetic reasons. Trust #'true-list-p in #'cl-function-arglist to detect circularity. (cl-function-arglist): Bind print-gensym to nil, now we're printing uninterned symbols and would prefer to avoid the gensym syntax. (cl-transform-lambda): Only add the Common Lisp lambda list: argument information when that differs frmo the normal argument information. 2009-09-20 Aidan Kehoe <kehoea@parhasard.net> * mule/make-coding-system.el (make-coding-system): Require a minimum of two, not four, arguments; thank you for the problem report, Adam Sjøgren! 2009-09-19 Aidan Kehoe <kehoea@parhasard.net> Move the #'query-coding-region implementation to C. * coding.el: Consolidate code that depends on the presence or absence of Mule at the end of this file. (default-query-coding-region, query-coding-region): Move these functions to C. (default-query-coding-region-safe-charset-skip-chars-map): Remove this variable, the corresponding C variable is Vdefault_query_coding_region_chartab_cache in file-coding.c. (query-coding-string): Update docstring to reflect actual multiple values, be more careful about not modifying a range table that we're currently mapping over. (encode-coding-char): Make the implementation of this simpler. (featurep 'mule): Autoload #'make-coding-system from mule/make-coding-system.el if we're a mule build; provide an appropriate compiler macro. Do various non-mule compatibility things if we're not a mule build. * update-elc.el (additional-dump-dependencies): Add mule/make-coding-system as a dump time dependency if we're a mule build. * unicode.el (ccl-encode-to-ucs-2): (decode-char): (encode-char): Move these earlier in the file, for the sake of some byte compile warnings. (unicode-query-coding-region): Move this to unicode.c * mule/make-coding-system.el: New file, not dumped. Contains the functionality to rework the arguments necessary for fixed-width coding systems, and contains the implementation of #'make-coding-system, which now calls #'make-coding-system-internal. * mule/vietnamese.el (viscii): * mule/latin.el (iso-8859-2): (windows-1250): (iso-8859-3): (iso-8859-4): (iso-8859-14): (iso-8859-15): (iso-8859-16): (iso-8859-9): (macintosh): (windows-1252): * mule/hebrew.el (iso-8859-8): * mule/greek.el (iso-8859-7): (windows-1253): * mule/cyrillic.el (iso-8859-5): (koi8-r): (koi8-u): (windows-1251): (alternativnyj): (koi8-ru): (koi8-t): (koi8-c): (koi8-o): * mule/arabic.el (iso-8859-6): (windows-1256): Move all these coding systems to being of type fixed-width, not of type CCL. This allows the distinct query-coding-region for them to be in C, something which will eventually allow us to implement query-coding-region for the mswindows-multibyte coding systems. * mule/general-late.el (posix-charset-to-coding-system-hash): Document why we're pre-emptively persuading the byte compiler that the ELC for this file needs to be written using escape-quoted. Call #'set-unicode-query-skip-chars-args, now the Unicode query-coding-region implementation is in C. * mule/thai-xtis.el (tis-620): Don't bother checking whether we're XEmacs or not here. * mule/mule-coding.el: Move the eight bit fixed-width functionality from this file to make-coding-system.el. 2009-09-14 Michael Sperber <mike@xemacs.org> * frame.el (pre-display-buffer-function): Don't set to `get-frame-for-buffer' - this broke the documented behavior of `display-buffer' of always displaying in the current frame. 2009-09-06 Aidan Kehoe <kehoea@parhasard.net> * simple.el (handle-pre-motion-command-current-command-is-motion): If KEY is a character, ascertain that once, not every iteration of the loop. * mule/mule-cmds.el (finish-set-language-environment): Don't call #'string-match on a one-character string, use functions that have bytecodes instead, since this is called so often on startup. 2009-08-31 Aidan Kehoe <kehoea@parhasard.net> * byte-optimize.el (byte-optimize-form-code-walker): Be careful about discarding multiple values when optimising #'prog1 calls. (byte-optimize-or): Preserve any trailing nil, as this is a supported way to explicitly discard multiple values. (byte-optimize-cond-1): Discard multiple values with a singleton followed by no more clauses. * bytecomp.el (progn): (prog1): (prog2): Be careful about discarding multiple values in the byte-hunk handler of these three forms. * bytecomp.el (byte-compile-prog1, byte-compile-prog2): Don't call #'values explicitly, use `(or ,(pop form) nil) instead, since that compiles to bytecode, not a funcall. * bytecomp.el (byte-compile-values): With one non-const argument, byte-compile to `(or ,(second form) nil), not an explicit #'values call. * bytecomp.el (byte-compile-insert-header): Be nicer in the error message to emacs versions that don't understand our bytecode. 2009-08-27 Aidan Kehoe <kehoea@parhasard.net> * cl.el (bytecomp-load-hook): New. * bytecomp.el (bytecomp-load-hook): Use id. Merge Dave Love's 2000-02-02 GNU (GPLv2) change, forcing the byte-compiler to be more consistent about loading cl-macs at compile time. 2009-08-19 Malcolm Purvis <malcolmp@xemacs.org> * simple.el: * simple.el (turn-off-auto-fill): Sync from FSF 21.4. 2009-08-18 Aidan Kehoe <kehoea@parhasard.net> * simple.el (handle-pre-motion-command-current-command-is-motion): Replace mapc + #'(lambda ...) with dolist, eliminating 781 funcalls at XEmacs startup and decreasing GC a little. 2009-08-16 Aidan Kehoe <kehoea@parhasard.net> * faces.el (xpm-color-symbols): Call (featurep 'x) when faces.elc is dumped, not repeatedly (myriad times) at image instantiation time. 2009-08-15 It's me FKtPp ;) <m_pupil@yahoo.com.cn> * gnuserv.el (gnuserv-edit-files): Don't run goto line if the gnuclient request to open a file only (a linenumber of nil). 2009-08-14 Aidan Kehoe <kehoea@parhasard.net> * minibuf.el (read-from-minibuffer): Use buffer (format " *Minibuf-%d*" (minibuffer-depth)), regardless of depth. 2009-08-11 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (ceiling*, floor*, round*, truncate*): Implement these in terms of the C functions; mark them as obsolete. (mod*, rem*): Use #'nth-value with the C functions, not #'nth with the CL emulation functions. 2009-08-11 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el : Update this file to support full C-level multiple values. This involves: -- Four new bytecodes, and special compiler functions to compile multiple-value-call, multiple-value-list-internal, values, values-list, and, since it now needs to pass back multiple values and is a special form, throw. -- There's a new compiler variable, byte-compile-checks-on-load, which is a list of forms that are evaluated at the very start of a file, with an error thrown if any of them give nil. -- The header is now inserted *after* compilation, giving a chance for the compilation process to influence what those checks are. There is still a check done before compilation for non-ASCII characters, to try to turn off dynamic docstrings if appopriate, in `byte-compile-maybe-reset-coding'. Space is reserved for checks; comments describing the version of the byte compiler generating the file are inserted if space remains for them. * bytecomp.el (byte-compile-version): Update this, we're a newer version of the byte compiler. * byte-optimize.el (byte-optimize-funcall): Correct a comment. * bytecomp.el (byte-compile-lapcode): Discard the arg with byte-multiple-value-call. * bytecomp.el (byte-compile-checks-and-comments-space): New variable, describe how many octets to reserve for checks at the start of byte-compiled files. * cl-compat.el: Remove the fake multiple-value implementation. Have the functions that use it use the real multiple-value implementation instead. * cl-macs.el (cl-block-wrapper, cl-block-throw): Revise the byte-compile properties of these symbols to work now we've made throw into a special form; keep the byte-compile properties as anonymous lambdas, since we don't have docstrings for them. * cl-macs.el (multiple-value-bind, multiple-value-setq) (multiple-value-list, nth-value): Update these functions to work with the C support for multiple values. * cl-macs.el (values): Modify the setf handler for this to call #'multiple-value-list-internal appropriately. * cl-macs.el (cl-setf-do-store): If the store form is a cons, treat it specially as wrapping the store value. * cl.el (cl-block-wrapper): Make this an alias of #'and, not #'identity, since it needs to pass back multiple values. * cl.el (multiple-value-apply): We no longer support this, mark it obsolete. * lisp-mode.el (eval-interactive-verbose): Remove a useless space in the docstring. * lisp-mode.el (eval-interactive): Update this function and its docstring. It now passes back a list, basically wrapping any eval calls with multiple-value-list. This allows multiple values to be printed by default in *scratch*. * lisp-mode.el (prin1-list-as-multiple-values): New function, printing a list as multiple values in the manner of Bruno Haible's clisp, separating each entry with " ;\n". * lisp-mode.el (eval-last-sexp): Call #'prin1-list-as-multiple-values on the return value of #'eval-interactive. * lisp-mode.el (eval-defun): Call #'prin1-list-as-multiple-values on the return value of #'eval-interactive. * mouse.el (mouse-eval-sexp): Deal with lists corresponding to multiple values from #'eval-interactive. Call #'cl-prettyprint, which is always available, instead of sometimes calling #'pprint and sometimes falling back to prin1. * obsolete.el (obsolete-throw): New function, called from eval.c when #'funcall encounters an attempt to call #'throw (now a special form) as a function. Only needed for compatibility with 21.4 byte-code. 2009-08-10 Aidan Kehoe <kehoea@parhasard.net> * help.el (function-arglist, function-documentation): Deal more gracefully with tabs in the function arglist; in function-documentation, when stripping the arglist, pay attention to the fact that they may span multiple lines. 2009-08-09 Aidan Kehoe <kehoea@parhasard.net> * faces.el (set-face-background-pixmap-file): Remove some extra parentheses revealed by change set 7757334005ae. 2009-08-07 Mike Sperber <mike@xemacs.org> * window-xemacs.el (set-window-configuration): Add optional `set-frame-size-p' argument that determines whether the frame size should be restored along with the window configuration. 2009-07-29 Mike Sperber <mike@xemacs.org> * window-xemacs.el (set-window-pixel-width) (set-window-pixel-height): Convenience functions, add. (restore-saved-window-parameters): Use the above. (really-set-window-configuration): Slightly restructure, reindent. 2009-07-28 Mike Sperber <mike@xemacs.org> * startup.el (startup-setup-paths): Use `emacs-data-roots' instead of `emacs-roots' where appropriate. 2009-07-28 Mike Sperber <mike@xemacs.org> * startup.el (startup-setup-paths): Print a few more variables upon --debug-paths. 2009-07-18 Aidan Kehoe <kehoea@parhasard.net> * files.el (find-file-create-switch-thunk): Check that #'buffer-file-name gives non-nil before trying to determine whether that file exists; avoids problems in dired. Thank you Mats Lidell! 2009-07-13 Aidan Kehoe <kehoea@parhasard.net> * code-files.el (insert-file-contents): Set the buffer coding system even on error; especially important when dealing with nonexistent files. If the `coding-system' property of an undecided coding system is itself undecided, don't use that as a value for buffer-file-coding-system. 2009-07-12 Aidan Kehoe <kehoea@parhasard.net> * files.el (after-find-file): If the answer to "The directory containing %s does not exist. Create?" is no, kill the current buffer, since the user probably just misspelled the directory name. Thank you Rodney Sparapani! 2009-07-12 Aidan Kehoe <kehoea@parhasard.net> * files.el (find-file-create-switch-thunk): New macro, used to mark buffers created within #'find-file (and related) modified if the associated file doesn't exist. (find-alternate-file-other-window): Correct this, pass CODESYS to find-file-other-window. (find-file-read-only): Correct behaviour of this function in the presence of wildcards. (find-file): (find-file-other-window): (find-file-other-frame): (find-file-read-only-other-window): (find-file-read-only-other-frame): (find-alternate-file): Simplify these functions, use #'find-file-create-switch-thunk' instead of explicit #'switch-to-buffer calls. 2009-07-11 Aidan Kehoe <kehoea@parhasard.net> * code-files.el (insert-file-contents): Take advantage of more sensible behaviour from #'insert-file-contents-internal, allowing us to actually follow the documented coding system behaviour for nonexistent files (that is, buffer-file-coding-system reflects coding-system-for-read &c., not becoming undecided for either zero-length or nonexistent files). 2009-06-20 It's me FKtPp ;) <m_pupil@yahoo.com.cn> * files.el (cd): Do not #'split-path on nil #'getenv result; Make sure the cd-path value is a list. 2009-06-14 Aidan Kehoe <kehoea@parhasard.net> * help.el (describe-function-1): Check macro-p, not macrop, when describing whether a symbol has an associated macro or an associated function. Relevant with autoloaded macros. (function-arglist): Accept multi-line arglists in built-in functions, as found in #'write-region-internal. #'dontusethis-set-symbol-value-handler is still broken for other reasons. 2009-06-07 Aidan Kehoe <kehoea@parhasard.net> * code-files.el (insert-file-contents): Autodetection may return undecided as a coding system. If the file was zero-length, this is kosher, and we should set buffer-file-coding-system to its default; if it is not zero-length, we still need to set b-f-c-s, but we warn that the autodetection fails. (Ignoring that for the user, autodetection failing is something very distinct from what we use it to mean here.) See http://mid.xemacs.org/18986.53111.800393.660612@parhasard.net and the related thread. 2009-06-06 Aidan Kehoe <kehoea@parhasard.net> * files.el (cd): Make CDPATH handling portable, accept entries without trailing slashes within it. Some style corrections from Stephen Turnbull, thank you Stephen. 2009-05-29 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-lambda): Even if we are going to store uncompiled interactive forms in the compiled-function object, byte compile (and discard) the code, for the sake of the warnings generated. ChangeLog Entries from lwlib/ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2011-01-11 Aidan Kehoe <kehoea@parhasard.net> * lwlib-fonts.c (xft_open_font_by_name): Replace the POSIX index(3), not universally available even today, with the C89 strchr(3), hopefully fixing a few of the buildbots' problems. 2010-06-13 Stephen J. Turnbull <stephen@xemacs.org> * lwlib-internal.h: Correct FSF address in permission notice. 2010-02-22 Ben Wing <ben@xemacs.org> * lwlib-colors.h: objects*.h -> fontcolor*.h. 2010-02-08 Ben Wing <ben@xemacs.org> * xt-wrappers.h: * xt-wrappers.h (Xt_SET_VALUE): * xt-wrappers.h (Xt_GET_VALUE): Rename var to avoid shadowing problems. 2010-01-24 Ben Wing <ben@xemacs.org> * xlwgauge.c (GaugeResize): * xlwgauge.c (GaugeSize): Fix warnings about possible use of uninitialized vars. 2010-02-01 Ben Wing <ben@xemacs.org> * lwlib-colors.c: * lwlib-colors.h: * lwlib-fonts.c: * lwlib-fonts.h: * xlwmenu.c: * xlwmenu.c (xlwMenuResources): * xlwmenu.c (x_xft_text_width): * xlwmenu.c (label_button_draw): * xlwmenu.c (push_button_size): * xlwmenu.c (push_button_draw): * xlwmenu.c (make_drawing_gcs): * xlwmenu.c (extract_font_extents): * xlwmenu.c (default_font_of_font_list): * xlwmenu.c (XlwMenuInitialize): * xlwmenu.c (XlwMenuDestroy): * xlwmenu.c (XlwMenuSetValues): * xlwmenuP.h: * xlwmenuP.h (_XlwMenu_part): * xlwtabs.c: * xlwtabs.c (TabsInit): * xlwtabs.c (TabsDestroy): * xlwtabs.c (TabsSetValues): * xlwtabs.c (DrawTab): * xlwtabs.c (TabWidth): * xlwtabs.c (TabsAllocFgGC): * xlwtabs.c (TabsAllocGreyGC): * xlwtabsP.h: USE_XFT* -> HAVE_XFT*. 2010-01-28 Jerry James <james@xemacs.org> * lwlib-internal.h: Add copyright and license boilerplate text based on Ben's recollections. 2009-12-09 Jerry James <james@xemacs.org> * lwlib-Xlw.c: Include needed Xmu headers instead of obsolete xmu.h. * xlwcheckbox.c: Ditto. * xlwradio.c: Ditto. * xlwgauge.c: Ditto. Unconditionally include HAVE_XMU code. * xlwtabs.c: Ditto. * xlwgcs.c: Ditto. Remove pre-X11R5 code. * xlwgcs.h: Remove pre-X11R5 declarations. 2009-11-10 Jerry James <james@xemacs.org> * lwlib.c: Drop workaround for old NeXT systems. ChangeLog Entries from man/ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2011-04-02 Stephen J. Turnbull <stephen@xemacs.org> * xemacs-faq.texi (Q2.5.7): New node on troubleshooting duplicate auto-autoloads. (Top): (Installation): (Q2.5.6): Update menus and node links for Q2.5.7. 2011-03-24 Jerry James <james@xemacs.org> * internals/internals.texi (Creating a Window-System Type): "desireable" -> "desirable", "neglible" -> "negligible". (The Non-Client Area): "negotation" -> "negotiation". (Better Rendering Support -- Modern Font Support): "anomolies" -> "anomalies". (Discussion -- Switching to C++): "reliablity" -> "reliability". * lispref/mule.texi (Theory of Operation): "noticable" -> "noticeable". * lispref/strings.texi (Creating Strings): "occurances" -> "occurrences". * xemacs-faq.texi (Q1.0.3: How do you pronounce XEmacs?): "pronounciation" -> "pronunciation". (Q1.7.2: Which external packages are there?): "withing" -> "within". (Q2.4.3: XEmacs crashes and I compiled it myself.): "ealier" -> "earlier". (hg diff gives bizarre output.): "occured" -> "occurred", "relevent" -> "relevant". (How do I recover from a bad commit? (I already pushed.)): "inadvertantly" -> "inadvertently". 2011-03-19 Stephen J. Turnbull <stephen@xemacs.org> * lispref/customize.texi (Face Definitions): New node. (Customization): Add entry to menu. (Variable Definitions): Add cross-ref for `defface'. (Customization Types): Fixup Previous link. * lispref/faces.texi (Faces): Clarify that built-in properties of faces are computed at runtime. 2011-03-15 Aidan Kehoe <kehoea@parhasard.net> * lispref/objects.texi (Character Type): * lispref/objects.texi (Equality Predicates): No longer document `old-eq', `old-equal', they haven't been used in years. 2011-03-14 Jeff Sparkes <jsparkes@gmail.com> * lispref/faces.texi (Faces): Mention `min-colors' as a face specifier. 2011-03-01 Aidan Kehoe <kehoea@parhasard.net> * lispref/commands.texi (Using Interactive): * lispref/compile.texi (Eval During Compile): * lispref/compile.texi (Compiled-Function Objects): * lispref/control.texi (Sequencing): * lispref/control.texi (Conditionals): * lispref/control.texi (Combining Conditions): * lispref/control.texi (Iteration): * lispref/control.texi (Catch and Throw): * lispref/control.texi (Handling Errors): * lispref/control.texi (Cleanups): * lispref/display.texi (Temporary Displays): * lispref/eval.texi (Quoting): * lispref/eval.texi (Multiple values): * lispref/frames.texi (Input Focus): * lispref/functions.texi (Argument List): * lispref/functions.texi (Defining Functions): * lispref/functions.texi (Anonymous Functions): * lispref/internationalization.texi (Level 3 Primitives): * lispref/internationalization.texi (Domain Specification): * lispref/intro.texi (A Sample Function Description): * lispref/intro.texi (A Sample Variable Description): * lispref/lists.texi (Sets And Lists): * lispref/macros.texi (Defining Macros): * lispref/macros.texi (Backquote): * lispref/positions.texi (Excursions): * lispref/positions.texi (Narrowing): * lispref/searching.texi (Saving Match Data): * lispref/sequences.texi (Sequence Functions): * lispref/sequences.texi (Array Functions): * lispref/specifiers.texi (Adding Specifications): * lispref/variables.texi (Local Variables): * lispref/variables.texi (Defining Variables): * lispref/variables.texi (Setting Variables): * lispref/variables.texi (Default Value): * lispref/windows.texi (Selecting Windows): * lispref/windows.texi (Window Configurations): No longer use @defspec, since we no longer use the term "special form"; instead use @deffn {Special Operator}. Unfortunately there's no way in texinfo to redefine @defspec in one place. 2011-03-01 Aidan Kehoe <kehoea@parhasard.net> * cl.texi (Argument Lists): * cl.texi (Time of Evaluation): * cl.texi (Type Predicates): * cl.texi (Assignment): * cl.texi (Basic Setf): * cl.texi (Modify Macros): * cl.texi (Customizing Setf): * cl.texi (Dynamic Bindings): * cl.texi (Lexical Bindings): * cl.texi (Function Bindings): * cl.texi (Macro Bindings): * cl.texi (Conditionals): * cl.texi (Blocks and Exits): * cl.texi (Iteration): * cl.texi (Loop Basics): * cl.texi (Macros): * cl.texi (Declarations): * cl.texi (Property Lists): * cl.texi (Structures): * cl.texi (Assertions): * cl.texi (Efficiency Concerns): 2011-02-19 Aidan Kehoe <kehoea@parhasard.net> * lispref/lists.texi (Sets And Lists): Document #'member*, #'remove*, #'delete* in this file. Document #'memq, #'member, #'remq, #'remove, #'delq, #'delete in terms of the former functions. Document #'subsetp, #'union, #'intersection, #'set-difference, #'set-exclusive-or and their destructive analogues in this file. * lispref/lists.texi (Association Lists): Document #'assoc*, #'rassoc* in this file. Document #'assq, #'assoc, #'rassq, #'rassoc in terms of the first two functions. * lispref/objects.texi (Equality Predicates): Document #'eql here, don't leave it to cl.texi. 2010-11-06 Aidan Kehoe <kehoea@parhasard.net> * lispref/lists.texi (Rearrangement, Building Lists): Document that #'nreverse and #'reverse now accept sequences, not just lists, in this file. 2010-09-02 Aidan Kehoe <kehoea@parhasard.net> * lispref/os.texi (Time Conversion): Document the new #'format-time-string flags for Roman month numbers. 2010-08-30 Aidan Kehoe <kehoea@parhasard.net> * lispref/eval.texi (Evaluation, Multiple values): Document our implementation of multiple values; point the reader to the CLTL or the Hyperspec for details of exactly when values are discarded. * lispref/numbers.texi (Numeric Conversions): Document the optional DIVISOR arguments to the rounding functions, and document that they all return multiple values. (Rounding Operations): Ditto. * cl.texi (Multiple Values): Document that we've moved the multiple values implementation to core code, and cross-reference to the Lispref. (Numerical Functions): The various rounding functions are now identical to the built-in rounding functions, with the exception that they return lists, not multiple values; document this. 2010-08-21 Aidan Kehoe <kehoea@parhasard.net> * lispref/objects.texi (Character Type): Go into more detail here on the specific type of error provoked on overlong hex character escapes and non-Latin-1 octal character escapes; give details of why the latter may be encountered, and what to do with such code. 2010-06-13 Stephen J. Turnbull <stephen@xemacs.org> * external-widget.texi: Correct FSF address in permission notice. 2010-05-28 Aidan Kehoe <kehoea@parhasard.net> * lispref/windows.texi (Buffers and Windows): Reword the documentation of `buffer-display-count'; `buffer-display-time's documentation was taken from a version of the GNU elisp manuwal with a compatible licence, `buffer-display-count' was not. 2010-05-17 Jeff Sparkes <jsparkes@gmail.com> * lispref/windows.texi (Buffers and Windows): Document buffer-display-count and buffer-display-time with descriptions from GNU emacs lispref. * lispref/locals.texi (Standard Buffer-Local Variables): Add buffer-display-count and buffer-display-time. 2010-04-03 Aidan Kehoe <kehoea@parhasard.net> * lispref/hash-tables.texi (Introduction to Hash Tables): Document that we now support #'equalp as a hash table test by default, and mention #'define-hash-table-test. (Working With Hash Tables): Document #'define-hash-table-test. 2010-04-01 Aidan Kehoe <kehoea@parhasard.net> * lispref/lists.texi (Rearrangement): Update the documentation of #'sort here, now that it accepts any type of sequence and the KEY keyword argument. (Though this is probably now the wrong place for this function, given that.) 2010-02-22 Ben Wing <ben@xemacs.org> * internals/internals.texi (A Summary of the Various XEmacs Modules): * internals/internals.texi (Modules for other Display-Related Lisp Objects): objects*.[ch] -> fontcolor*.[ch]. 2010-03-18 Mike Sperber <mike@xemacs.org> * xemacs/startup.texi (Startup Paths): Reflect the (long-ago) change from `lib' to `share' for the architecture-independent directories. 2010-03-13 Ben Wing <ben@xemacs.org> * internals/internals.texi (Working with Lisp Objects): * internals/internals.texi (Writing Macros): * internals/internals.texi (lrecords): More rewriting to correspond with changes from *LRECORD* to *LISP_OBJECT*. 2010-03-05 Ben Wing <ben@xemacs.org> * internals/internals.texi (Introduction to Allocation): * internals/internals.texi (Integers and Characters): * internals/internals.texi (Allocation from Frob Blocks): * internals/internals.texi (lrecords): * internals/internals.texi (Low-level allocation): Rewrite section on allocation of Lisp objects to reflect the new reality. Remove references to nonexistent XSETINT and XSETCHAR. 2010-03-04 Ben Wing <ben@xemacs.org> * internals/internals.texi (Top): * internals/internals.texi (list-to-texinfo): Removed. * internals/internals.texi (convert-list-to-texinfo): New. * internals/internals.texi (table-to-texinfo): Removed. * internals/internals.texi (convert-table-to-texinfo): New. Update Lisp functions at top to newest versions. * internals/internals.texi (A History of Emacs): * internals/internals.texi (Through Version 18): * internals/internals.texi (Lucid Emacs): * internals/internals.texi (XEmacs): * internals/internals.texi (The XEmacs Split): * internals/internals.texi (Modules for Other Aspects of the Lisp Interpreter and Object System): * internals/internals.texi (Introduction to Writing C Code): * internals/internals.texi (Writing Good Comments): * internals/internals.texi (Writing Macros): * internals/internals.texi (Major Textual Changes): * internals/internals.texi (Great Integral Type Renaming): * internals/internals.texi (How to Regression-Test): * internals/internals.texi (Creating a Branch): * internals/internals.texi (Dynamic Arrays): * internals/internals.texi (Allocation by Blocks): * internals/internals.texi (mark_object): * internals/internals.texi (gc_sweep): * internals/internals.texi (Byte-Char Position Conversion): * internals/internals.texi (Searching and Matching): * internals/internals.texi (Introduction to Multilingual Issues #3): * internals/internals.texi (Byte Types): * internals/internals.texi (Different Ways of Seeing Internal Text): * internals/internals.texi (Buffer Positions): * internals/internals.texi (Basic internal-format APIs): * internals/internals.texi (The DFC API): * internals/internals.texi (General Guidelines for Writing Mule-Aware Code): * internals/internals.texi (Mule-izing Code): * internals/internals.texi (Locales): * internals/internals.texi (More about code pages): * internals/internals.texi (More about locales): * internals/internals.texi (Unicode support under Windows): * internals/internals.texi (The Frame): * internals/internals.texi (The Non-Client Area): * internals/internals.texi (The Client Area): * internals/internals.texi (The Paned Area): * internals/internals.texi (Text Areas): * internals/internals.texi (The Displayable Area): * internals/internals.texi (Event Queues): * internals/internals.texi (Event Stream Callback Routines): * internals/internals.texi (Focus Handling): * internals/internals.texi (Future Work -- Autodetection): Replace " with ``, '' (not complete, maybe about halfway through). 2010-03-03 Ben Wing <ben@xemacs.org> * internals/internals.texi (Intro to Window and Frame Geometry): * internals/internals.texi (The Paned Area): * internals/internals.texi (The Displayable Area): Update to make note of e.g. the fact that the bottom gutter is actually above the minibuffer. 2010-03-02 Jerry James <james@xemacs.org> * custom.texi: Delete, redundant with xemacs/custom.texi and lispref/customize.texi. * Makefile: Remove all rules relating to custom.texi. 2010-03-03 Aidan Kehoe <kehoea@parhasard.net> * lispref/tips.texi (Comment Tips): * lispref/text.texi (Text Properties): * lispref/strings.texi (Creating Strings): * lispref/processes.texi (Input to Processes): * lispref/functions.texi (Argument List): * lispref/extents.texi (Duplicable Extents): Move examples that used substring to using subseq; in strings.texi, do not change the examples, but document that in this XEmacs, it is an alias for subseq, and that there may be some incompatibilities if you depend on that. 2010-02-25 Didier Verna <didier@xemacs.org> The background-placement face property. * xemacs/custom.texi (Faces): Document it. 2010-02-20 Ben Wing <ben@xemacs.org> * internals/internals.texi (Intro to Window and Frame Geometry): Shrink diagram to fit when offset by five spaces as a result of quoting. 2010-02-16 Ben Wing <ben@xemacs.org> * internals/internals.texi (Top): * internals/internals.texi (Modules for the Basic Displayable Lisp Objects): * internals/internals.texi (Creating a Window-System Type): * internals/internals.texi (Window and Frame Geometry): * internals/internals.texi (Intro to Window and Frame Geometry): * internals/internals.texi (The Frame): * internals/internals.texi (The Non-Client Area): * internals/internals.texi (The Client Area): * internals/internals.texi (The Paned Area): * internals/internals.texi (Text Areas): * internals/internals.texi (The Displayable Area): * internals/internals.texi (Which Functions Use Which?): * internals/internals.texi (The Redisplay Mechanism): Integrate the long comment in frame.c into the internals manual. 2010-02-17 Jerry James <james@xemacs.org> * term.texi: Move to the eterm package. * Makefile: Remove all rules relating to term.texi. 2010-02-10 Stephen J. Turnbull <stephen@xemacs.org> * xemacs-faq.texi (Top): Update menu. (Legacy Versions): Update next pointer. (Bleeding Edge): (Q11.0.1): (Q11.0.2): (Q11.0.3): (Q11.0.4): (Q11.0.5): (Q11.1.1): (Q11.2.1): (Q11.2.2): (Q11.2.3): (Q11.2.4): (Q11.2.5): (Q11.2.6): (Q11.2.7): New nodes, describing repositories and VCS usage. 2010-02-08 Ben Wing <ben@xemacs.org> * internals/internals.texi (How Lisp Objects Are Represented in C): * internals/internals.texi (Allocation of Objects in XEmacs Lisp): DEC Alpha is hardly the only 64-bit processor any more. Also, ERROR_CHECK_TYPECHECK is now ERROR_CHECK_TYPES. 2010-02-08 Jerry James <james@xemacs.org> * emodules.texi: Relicense as GPL v2 or later, using J. Kean Johnston's blanket permission for such relicensing of his works. 2010-02-05 Ben Wing <ben@xemacs.org> * internals/internals.texi (A Summary of the Various XEmacs Modules): * internals/internals.texi (Conversion to and from External Data): * internals/internals.texi (General Guidelines for Writing Mule-Aware Code): Correct names of files renamed common -> xlike. Fix up outdated explanation of old-style DFC conversion macros. Add a section on the different types of character and their uses, taken from a long comment in lisp.h. 2010-01-27 Ben Wing <ben@xemacs.org> * internals/internals.texi (lrecords): * internals/internals.texi (The DFC API): * internals/internals.texi (Conversion to and from External Data): * internals/internals.texi (Mule-izing Code): * internals/internals.texi (Pervasive changes throughout XEmacs sources): * internals/internals.texi (Ben's README): * internals/internals.texi (Future Work -- Localized Text/Messages): * emodules.texi (Defining Variables): Rename: write_c_string -> write_cistring build_intstring -> build_istring build_string -> build_cistring build_ext_string -> build_extstring make_ext_string -> make_extstring buffer_insert_c_string -> buffer_insert_ascstring intern_int -> intern_istring See comment in src/ChangeLog about this. 2010-02-03 Ben Wing <ben@xemacs.org> * internals/internals.texi (Top): * internals/internals.texi (Evaluation; Stack Frames; Bindings): * internals/internals.texi (Ben's README): * internals/internals.texi (Consoles; Devices; Frames; Windows): * internals/internals.texi (Window Hierarchy): * internals/internals.texi (The Window Object): * internals/internals.texi (Modules for the Basic Displayable Lisp Objects): * internals/internals.texi (Window-System Support): * internals/internals.texi (Creating a Window-System Type): * internals/internals.texi (Discussion -- Garbage Collection): Update the part at the top about how to maintain the file with more tips. Add a chapter on "window-system support" describing in a general way how the support for different window systems/device types works, including the separation between device-independent and device-dependent parts, device methods, the specific device types and the "xlike" pseudo-type. 2010-01-31 Aidan Kehoe <kehoea@parhasard.net> * xemacs/programs.texi (Defuns): * lispref/variables.texi (Local Variables, Defining Variables) (Setting Variables, Default Value): * lispref/symbols.texi (Definitions): * lispref/searching.texi (Saving Match Data): * lispref/positions.texi (Excursions, Narrowing): * lispref/objects.texi (Primitive Function Type): * lispref/macros.texi (Defining Macros, Backquote): * lispref/lispref.texi (Top): * lispref/intro.texi (A Sample Function Description): * lispref/help.texi (Help Functions): * lispref/functions.texi (What Is a Function, Simple Lambda) (Defining Functions, Calling Functions, Anonymous Functions): * lispref/frames.texi (Input Focus): * lispref/eval.texi (Forms, Function Indirection) (Special Operators, Quoting): * lispref/edebug-inc.texi (Instrumenting) (Specification Examples): * lispref/debugging.texi (Internals of Debugger): * lispref/control.texi (Control Structures, Sequencing): (Conditionals, Combining Conditions, Iteration): (Catch and Throw, Handling Errors): * lispref/commands.texi (Defining Commands, Using Interactive): Terminology change; special operator -> special form. Don't attempt to change this in texinfo.texi or cl.texi, which use macros I don't understand. * lispref/macros.texi (Defining Macros): Give an anonymous macro example here. * lispref/positions.texi (Excursions): Correct some documentation that called a couple of macros special forms. * lispref/searching.texi (Saving Match Data): Drop some documentation of how to write code that works with Emacs 18. * lispref/specifiers.texi (Adding Specifications): Correct this; #'let-specifier is a macro, not a special operator. * lispref/windows.texi (Window Configurations) (Selecting Windows): Correct this, #'save-selected-window and #'save-window-excursion are macros, not special operators. 2010-01-28 Jerry James <loganjerry@gmail.com> * external-widget.texi: Add copyright and license boilerplate text based on Ben's recollections. * lispref/internationalization.texi (Documentation String Extraction): Removed, as it refers to the obsolete make-po program. 2010-01-23 Aidan Kehoe <kehoea@parhasard.net> Generally: be careful to say fixnum, not integer, when talking about fixed-precision integral types. I'm sure I've missed instances, both here and in the docstrings, but this is a decent start. * lispref/text.texi (Columns): Document where only fixnums, not integers generally, are accepted. (Registers): Remove some ancient char-int confoundance here. * lispref/strings.texi (Creating Strings, Creating Strings): Be more exact in describing where fixnums but not integers in general are accepted. (Creating Strings): Use a more contemporary example to illustrate how concat deals with lists including integers about #xFF. Delete some obsolete documentation on same. (Char Table Types): Document that only fixnums are accepted as values in syntax tables. * lispref/searching.texi (String Search, Search and Replace): Be exact in describing where fixnums but not integers in general are accepted. * lispref/range-tables.texi (Range Tables): Be exact in describing them; only fixnums are accepted to describe ranges. * lispref/os.texi (Killing XEmacs, User Identification) (Time of Day, Time Conversion): Be more exact about using fixnum where only fixed-precision integers are accepted. * lispref/objects.texi (Integer Type): Be more exact (and up-to-date) about the possible values for integers. Cross-reference to documentation of the bignum extension. (Equality Predicates): (Range Table Type): (Array Type): Use fixnum, not integer, to describe a fixed-precision integer. (Syntax Table Type): Correct some English syntax here. * lispref/numbers.texi (Numbers): Change the phrasing here to use fixnum to mean the fixed-precision integers normal in emacs. Document that our terminology deviates from that of Common Lisp, and that we're working on it. (Compatibility Issues): Reiterate the Common Lisp versus Emacs Lisp compatibility issues. (Comparison of Numbers, Arithmetic Operations): * lispref/commands.texi (Command Loop Info, Working With Events): * lispref/buffers.texi (Modification Time): Be more exact in describing where fixnums but not integers in general are accepted. 2010-01-06 Jerry James <james@xemacs.org> * internals/internals.texi (Debugging and Testing): Document valgrind configuration and use. 2009-12-21 Jerry James <james@xemacs.rg> * internals/internals.texi (A Summary of the Various XEmacs Modules): Remove references to OffiX support files. * lispref/dragndrop.texi (Drag and Drop): Remove reference to OffiX. (Supported Protocols): Ditto. (OffiX DND): Remove. 2009-12-10 Jerry James <james@xemacs.org> * lispref/processes.texi (Functions that Create Subprocesses): Refer to etags instead of the obsolete wakeup program. 2009-12-09 Jerry James <james@xemacs.org> * internals/internals.texi (A Summary of the Various XEmacs Modules): Remove references to xmu.c and xmu.h. (Modules for Interfacing with X Windows): Ditto. 2010-01-09 Aidan Kehoe <kehoea@parhasard.net> * lispref/objects.texi (Hash Table Type): * lispref/hash-tables.texi (Introduction to Hash Tables): Use keywords, not ordinary symbols, in the hash table read syntax; document that we do accept the ordinary symbols for the sake of backward-compatiblity. 2009-11-10 Jerry James <james@xemacs.org> * internals/internals.texi (XEmacs from the Perspective of Building): Remove reference to dynodump. (A Summary of the Various XEmacs Modules): Remove references to deleted files. (Low-Level Modules): Ditto. (Modules for the Basic Displayable Lisp Objects): Remove reference to NeXTstep. * lispref/os.texi (Operating System Environment): Remove references to old unsupported systems. * make-stds.texi (Variables for Installation Directories): Likely insufficient update to list of current operating systems. * xemacs-faq.texi (Q1.2.2: What versions of Unix does XEmacs run on?): Ditto. 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * lispref/objects.texi (Equality Predicates): Document #'equalp here, as well as #'equal and #'eq. 2009-10-05 Jerry James <james@xemacs.org> * beta.texi (Building XEmacs from a full distribution): Remove "(builtin)" from GIF line in example Installation. (Reporting Problems): Recommend taking screenshots as a PNG instead of a GIF. * internals/internals.texi (A Summary of the Various XEmacs Modules): Remove GIF-related files. * lispref/glyphs.texi (Image Instantiator Formats): Remove remark about builtin GIF support. 2009-08-11 Aidan Kehoe <kehoea@parhasard.net> * lispref/numbers.texi (Bigfloat Basics): Correct this documentation (ignoring for the moment that it breaks off in mid-sentence). 2009-08-11 Aidan Kehoe <kehoea@parhasard.net> * cl.texi (Organization): Remove references to the obsolete multiple-value emulating code. 2009-07-28 Stephen Turnbull <stephen@xemacs.org> * internals/internals.texi (Redisplay Piece by Piece): Small improvements. 2009-07-08 Stephen Turnbull <stephen@xemacs.org> * xemacs/custom.texi (Xft Font Customization): Change references from XftFont (now deprecated) to FcFontName. Thanks, Raymond Toy <raymond.toy@stericsson.com>. ChangeLog Entries from modules/ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2010-04-12 Ben Wing <ben@xemacs.org> * canna/canna_api.c: * canna/canna_api.c (Fcanna_henkan_begin): Fixes for errors reported in smoketest build. 2010-03-12 Ben Wing <ben@xemacs.org> * base64/base64.c: * base64/base64.c (Fbase64_encode): * base64/base64.c (Fbase64_decode): * base64/base64.c (syms_of_base64): Fix file to follow GNU coding standards for indentation, spacing before parens. 2010-03-13 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c (print_pgconn): * postgresql/postgresql.c (print_pgresult): printing_unreadable_object -> printing_unreadable_object_fmt. 2010-03-13 Ben Wing <ben@xemacs.org> * ldap/eldap.c (print_ldap): printing_unreadable_object -> printing_unreadable_object_fmt. 2010-03-07 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c (finalize_pgconn): * postgresql/postgresql.c (finalize_pgresult): * ldap/eldap.c (finalize_ldap): Fix the finalizers to go with the new calling sequence. Done previously but somehow got lost. 2010-03-05 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c (allocate_pgconn): * postgresql/postgresql.c (allocate_pgresult): * postgresql/postgresql.h (struct Lisp_PGconn): * postgresql/postgresql.h (struct Lisp_PGresult): * ldap/eldap.c (allocate_ldap): * ldap/eldap.h (struct Lisp_LDAP): Same changes as in src/ dir. See large log there in ChangeLog, but basically: ALLOC_LISP_OBJECT -> ALLOC_NORMAL_LISP_OBJECT LISP_OBJECT_HEADER -> NORMAL_LISP_OBJECT_HEADER 2010-02-06 Ben Wing <ben@xemacs.org> * canna/canna_api.c: * canna/canna_api.c (storeResults): * canna/canna_api.c (Fcanna_set_bunsetsu): * canna/canna_api.c (Fcanna_initialize): * canna/canna_api.c (Fcanna_store_yomi): * canna/canna_api.c (Fcanna_henkan_end): Convert file to utf-8. 2010-02-05 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_lo_import): * postgresql/postgresql.c (Fpq_lo_export): * ldap/eldap.c (Fldap_open): * ldap/eldap.c (Fldap_search_basic): * ldap/eldap.c (Fldap_add): * ldap/eldap.c (Fldap_modify): * ldap/eldap.c (Fldap_delete): * canna/canna_api.c (Fcanna_initialize): * canna/canna_api.c (Fcanna_store_yomi): * canna/canna_api.c (Fcanna_parse): * canna/canna_api.c (Fcanna_henkan_begin): EXTERNAL_TO_C_STRING returns its argument instead of storing it in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar things happen to related macros. See entry in src/ChangeLog. More Mule-izing of postgresql.c. Extract out common code between `pq-connectdb' and `pq-connect-start'. Fix places that signal an error string using a formatted string to instead follow the standard and have a fixed reason followed by the particular error message stored as one of the frobs. 2010-01-27 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c (print_pgconn): * postgresql/postgresql.c (print_pgresult): * postgresql/postgresql.c (Fpq_conn_defaults): * postgresql/postgresql.c (Fpq_pgconn): * postgresql/postgresql.c (Fpq_res_status): * postgresql/postgresql.c (Fpq_result_error_message): * postgresql/postgresql.c (Fpq_fname): * postgresql/postgresql.c (Fpq_get_value): * postgresql/postgresql.c (Fpq_cmd_status): * postgresql/postgresql.c (Fpq_cmd_tuples): * postgresql/postgresql.c (Fpq_notifies): * postgresql/postgresql.c (Fpq_get_line): * postgresql/postgresql.c (Fpq_get_line_async): * postgresql/postgresql.c (FROB): * postgresql/postgresql.c (init_postgresql_from_environment): * ldap/eldap.c: * ldap/eldap.c (Fldap_open): * ldap/eldap.c (Fldap_search_basic): * canna/canna_api.c: * canna/canna_api.c (make_euc_string): Rename: write_c_string -> write_cistring build_intstring -> build_istring build_string -> build_cistring build_ext_string -> build_extstring make_ext_string -> make_extstring buffer_insert_c_string -> buffer_insert_ascstring intern_int -> intern_istring See comment in src/ChangeLog about this. 2010-01-26 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (print_pgresult): * postgresql/postgresql.c (Fpq_conn_defaults): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_result_status): * postgresql/postgresql.c (Fpq_res_status): Mule-ize large parts of it. 2010-01-26 Ben Wing <ben@xemacs.org> * ldap/eldap.c (print_ldap): * ldap/eldap.c (allocate_ldap): Use write_ascstring(). 2010-01-24 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (print_pgconn): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_exec): * postgresql/postgresql.c (Fpq_get_result): Fix g++ 4.3 complaints about implicit conversions of string literals (const char *) to char *. 2010-01-16 Ben Wing <ben@xemacs.org> * common/Makefile.common: * common/Makefile.common (.PHONY): Use WIN32_ANY not HAVE_MS_WINDOWS so we still link with the import library even when --with-msw=no. 2010-01-11 Ben Wing <ben@xemacs.org> * ldap/eldap.c (Fldap_search_basic): Cast to Extbyte * to avoid C++ compile error. 2009-11-10 Jerry James <james@xemacs.org> * canna/canna_api.c (Fcanna_initialize): Drop support for the NEC EWS. 2009-11-09 Jerry James <james@xemacs.org> * sample/external/Makefile.in.in: Clarify GPL status. * sample/external/configure.ac: Ditto. * sample/external/sample.c: Ditto. * sample/internal/sample.c: Ditto. 2009-10-05 Jerry James <james@xemacs.org> * ldap/eldap.c (Fldap_search_basic): quiet gcc warnings due to NEW_LISP_STRING_TO_EXTERNAL modifying a variable while computing a result to be passed as a parameter. ChangeLog Entries from nt/ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * compface.mak: More permission consistency. 2010-06-13 Stephen J. Turnbull <stephen@xemacs.org> * tiff.mak: * xemacs.rc: * xpm.mak: Correct FSF address in permission notice. 2010-02-22 Ben Wing <ben@xemacs.org> * xemacs.dsp: * xemacs.mak: * xemacs.mak (OPT_OBJS): objects*.[ch] -> fontcolor*.[ch]. 2010-03-29 Vin Shelton <acs@xemacs.org> * xemacs.mak (TEMACS_COMMON_OBJS): Add array.obj and remove dynarr.obj, to catch up with Ben's changes of 2010-03-28. 2010-03-08 Vin Shelton <acs@xemacs.org> * xemacs.mak (batch_test_emacs): The test harness no longer resides in $(testdir), per Ben's changes of 2010-02-22. 2010-03-02 Jerry James <james@xemacs.org> * xemacs.mak (INFO_FILES): Removed custom.info. 2010-02-18 Vin Shelton <acs@xemacs.org> * xemacs.mak (INFO_FILES): Removed term.info. 2010-02-11 Vin Shelton <acs@xemacs.org> * xemacs.mak (LIB_SRC_DEFINES): Added PROGRAM_DEFINES to lib_src compilation options so winclient.c can see them. 2010-02-03 Jerry James <james@xemacs.org> * xemacs.rc: Add license and copyright boilerplate text for Jonathan Harris. * xpm.mak: Ditto. 2010-01-28 Jerry James <james@xemacs.org> * compface.mak: Add license and copyright boilerplate text based on Ben's recollections. * tiff.mak: Ditto. 2009-12-21 Jerry James <james@xemacs.org> * xemacs.dsp: Remove references to OffiX files. 2009-12-15 Jerry James <james@xemacs.org> * xemacs.mak: Remove build dependency for lib-src/wakeup. Thanks to Vin Shelton for the patch. 2009-12-14 Jerry James <james@xemacs.org> * installer: Remove unused Wise installer sources. 2009-12-09 Jerry James <james@xemacs.org> * xemacs.dsp: Drop references to xmu.c and xmu.h. 2009-11-10 Jerry James <james@xemacs.org> * xemacs.dsp: Drop references to removed source files. 2009-11-09 Jerry James <james@xemacs.org> * xemacs.mak: Don't define GNU_MALLOC, as there is no longer an "old" GNU malloc. 2009-10-06 Vin Shelton <acs@xemacs.org> * xemacs.mak: For giflib, the include files are found in $(GIF_DIR)\include and the library is named giflib.lib. 2009-10-05 Jerry James <james@xemacs.org> * config.inc.samp: Add GIF_DIR for external GIF support. * xemacs.mak: Convert from internal to external GIF support. * xemacs.dsp: Drop internal GIF source files. * README: Remove remark about internal GIF support. ChangeLog Entries from src/ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2011-04-23 Aidan Kehoe <kehoea@parhasard.net> * editfns.c: * editfns.c (syms_of_editfns): Implement #'char= in cl-extra.el, not here, accepting more than two arguments as Common Lisp specifies. 2011-04-17 Jeff Sparkes <jsparkes@gmail.com> * device-tty.c (tty_device_system_metrics): Fix compile issues for C89 compilers. Use log() instead of log2(). 2011-04-04 Aidan Kehoe <kehoea@parhasard.net> * fns.c (count_with_tail): This can be legitimately called from #'delete* with a specified COUNT keyword value, accept this in the assertion. * fns.c (FdeleteX): * fns.c (FremoveX): If COUNT is specified and FROM-END is non-nil, set COUNT to nil in the argument vector, so count_with_tail doesn't see it when calculating the total number of times an item occurs. Fixes problems with the interaction of :count and :from-end. 2011-04-04 Aidan Kehoe <kehoea@parhasard.net> * fns.c (FremoveX): * fns.c (sublis): Correct some nesting of GCPRO and UNGCPRO here, revealed by the the C++ build compiling core Lisp. Thank you Mats' buildbot! 2011-04-04 Aidan Kehoe <kehoea@parhasard.net> * lisp.h (GC_EXTERNAL_LIST_LOOP_3, GC_EXTERNAL_LIST_LOOP_4): New. * fns.c (count_with_tail, list_position_cons_before, FassocX): * fns.c (FrassocX, position, FdeleteX, FremoveX): * fns.c (list_delete_duplicates_from_end): * fns.c (Fdelete_duplicates, Fremove_duplicates, Freduce): * fns.c (Fnsubstitute, Fsubstitute, sublis, nsublis, Fnsublis): * fns.c (venn, nvenn, Funion, Fset_exclusive_or, Fnset_exclusive_or): Use GC_EXTERNAL_LIST_LOOP_* in the sequence functions in fns.c where appropriate, there were some corner cases where my old approach was unsafe (mainly if the circularity checking's tortoise lost GCPRO protection. Add GC_EXTERNAL_LIST_LOOP_{3,4}, analogous to GC_EXTERNAL_LIST_LOOP_2. 2011-03-28 Jeff Sparkes <jsparkes@gmail.com> * console-tty-impl.h (struct tty_console): Add field for number of displayable colors. * device-tty.c (tty_device_system_metrics): Return metrics for num-color-cells and num-bit-planes. Tracker issue 757. * device.c: There are two required args for device-system-metric. * redisplay-tty.c (init_tty_for_redisplay): Retrieve number of colors from terminal description. Default to 2 if none found. 2011-03-24 Jerry James <james@xemacs.org> * alloc.c (listu): Assemble the list in the right order so we don't have to reverse it. (listn): Ditto. * dired.c (Ffile_attributes): Use listn instead of building an array to pass to Flist. GC protect the mode string. * editfns.c (Fdecode_time): Use listn instead of Flist. * faces.c (vars_of_faces): Use listu instead of Flist. 2011-03-24 Jerry James <james@xemacs.org> * README.kkcc: "occured" -> "occurred". * alloc.c (malloced_storage_size): "supress" -> "suppress". * buffer.c: "intial" -> "initial". * elhash.c (Fdefine_hash_table_test): "analagous" -> "analogous". * emacs.c: "targetting" -> "targeting". (shut_down_emacs): "recurrance" -> "reoccurrence". * event-stream.c: "accidentaly" -> "accidentally", and fix grammar. * extents.c: "occuring" -> "occurring". * faces.c (update_face_cachel_data): "appart" -> "apart", "begining" -> "beginning". * file-coding.c (Vkeyboard_coding_system): "interpet" -> "interpret". * fileio.c (Fmake_temp_name): "analagous" -> "analogous". * fontcolor-gtk.c: "sucess" -> "success". * frame-gtk.c (gtk_init_frame_2): "carefull" -> "careful", fix whitespace. * frame.c: "negotation" -> "negotiation". * glyphs-msw.c (mswindows_map_subwindow): "everytime" -> "every time". * glyphs-widget.c: "accomodate" -> "accommodate". (logical_unit_height): Ditto. (Fwidget_logical_to_character_height): Ditto. * gtk-xemacs.c (__nuke_background_items): "noticable" -> "noticeable". * menubar-gtk.c: "inital" -> "initial". * mule-ccl.c: "refered" -> "referred to". * nt.c (mswindows_stat): "noticable" -> "noticeable". * ntheap.c (recreate_heap): "commited" -> "committed". * s/cygwin32.h: "konw" -> "know". * sysdll.c: "dependant" -> "dependent". * syswindows.h: "targetting" -> "targeting". * text.c: "reversable" -> "reversible". * unexcw.c (copy_executable_and_dump_data_section): "addres" -> "address". * unicode.c (Funicode_precedence_list): "occurrance" -> "occurrence". * window.c (struct window_mirror_stats): "Ancilliary" -> "Ancillary". 2011-03-20 Mats Lidell <matsl@xemacs.org> * alloca.c (find_stack_direction): * alloca.c (xemacs_c_alloca): Remove use of auto keyword. It is default and will be illegal in C++0X. 2011-03-17 Didier Verna <didier@xemacs.org> * data.c (init_errors_once_early): Define Qextent_read_only error. * lisp.h: Declare it. * extents.c (verify_extent_mapper): Signal an extent-read-only error instead of a buffer-read-only one. 2011-03-15 Aidan Kehoe <kehoea@parhasard.net> * config.h.in (SUPPORT_CONFOUNDING_FUNCTIONS): New #define, equivalent NEED_TO_HANDLE_21_4_CODE by default, describing whether this XEmacs should support the old-eq, old-equal and related functions and byte codes. * bytecode.c (UNUSED): Only interpret old-eq, old-equal, old-memq if SUPPORT_CONFOUNDING_FUNCTIONS is defined. * data.c: Move Fold_eq to fns.c with the rest of the Fold_* functions. * fns.c: * fns.c (Fmemq): * fns.c (memq_no_quit): * fns.c (assoc_no_quit): * fns.c (Frassq): * fns.c (Fequal): * fns.c (Fold_equal): * fns.c (syms_of_fns): Group old-eq, old-equal, old-memq etc together, surround them with #ifdef SUPPORT_CONFOUNDING_FUNCTIONS. 2011-03-14 Aidan Kehoe <kehoea@parhasard.net> * glyphs-eimage.c (png_instantiate): Update the PNG handling code to work with versions of the library where the png_info structure is no longer visible. Thank you for the report, Robert Delius Royar. 2011-03-12 Aidan Kehoe <kehoea@parhasard.net> * event-stream.c (Fdispatch_event): As documented, allow pre-command-hook to usefully modify this-command even when this-command is nil (that is, we would normally throw an undefined-keystroke-sequence error). Don't throw that error if this-command was modified, instead try to execute the new value. Allow pre-command-hook to modify last-command-event in this specific context. Don't document this, for the moment. 2011-03-11 Aidan Kehoe <kehoea@parhasard.net> * bytecode.c (optimize_byte_code): Only transform assignments to keywords to Bdiscard if NEED_TO_HANDLE_21_4_CODE is turned on. Cf. similar code in reject_constant_symbols(). 2011-02-24 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fsubstring_no_properties): Sigh, get_string_range_char checks the type of its START and END arguments, but doesn't check the type of its STRING argument. Thank you Raymond Toy! 2011-02-19 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fset_exclusive_or): This function accepts the :stable keyword too, document this in its arglist. 2011-02-16 Aidan Kehoe <kehoea@parhasard.net> * xemacs.def.in.in: No longer export acons(), export Facons() instead, thank you Mats, Jerry and Jeff Sparkes. 2011-02-10 Aidan Kehoe <kehoea@parhasard.net> * fns.c (shortest_length_among_sequences): This was buggy, it always errored if the last argument was circular, even if other arguments were non-circular. Correct that. 2011-02-09 Aidan Kehoe <kehoea@parhasard.net> * alloc.c (Facons): * alloc.c (Fobject_memory_usage): * alloc.c (syms_of_alloc): * faces.c (complex_vars_of_faces): * lisp.h: * mc-alloc.c (Fmc_alloc_memory_usage): Rename acons() to Facons(), make it visible to Lisp. Change uses of the function in C accordingly. 2011-02-07 Aidan Kehoe <kehoea@parhasard.net> * keymap.c (describe_map_sort_predicate): Correct the order of arguments to map_keymap_sort_predicate() here. Thanks again, Mats. 2011-02-06 Aidan Kehoe <kehoea@parhasard.net> * symbols.c (Fapropos_internal): Supply check_string_lessp_nokey explicitly as the CHECK_MERGE argument to list_sort(), NULL no longer works. Thank you Mats Lidell in IRC! 2011-02-05 Aidan Kehoe <kehoea@parhasard.net> * fns.c: * fns.c (check_lss_key, check_lss_key_car): New. * fns.c (check_string_lessp_key check_string_lessp_key_car): New. * fns.c (get_merge_predicate): New. * fns.c (list_merge): * fns.c (array_merge): * fns.c (list_array_merge_into_list): * fns.c (list_list_merge_into_array): * fns.c (list_array_merge_into_array): * fns.c (Fmerge): * fns.c (list_sort): * fns.c (array_sort): * fns.c (FsortX): * fns.c (syms_of_fns): * lisp.h: Move #'sort, #'merge to using the same test approach as is used in the functions that take TEST, TEST-NOT and KEY arguments. This allows us to avoid the Ffuncall() overhead when the most common PREDICATE arguments are supplied, in particular #'< and #'string-lessp. * fontcolor-msw.c (sort_font_list_function): * fontcolor-msw.c (mswindows_enumerate_fonts): * dired.c: * dired.c (Fdirectory_files): * fileio.c: * fileio.c (build_annotations): * fileio.c (syms_of_fileio): * keymap.c: * keymap.c (keymap_submaps): * keymap.c (map_keymap_sort_predicate): * keymap.c (describe_map_sort_predicate): * keymap.c (describe_map): Change the various C predicates passed to list_sort () and list_merge () to fit the new calling convention, returning non-zero if the first argument is less than the second, zero otherwise. 2011-01-30 Michael Sperber <mike@xemacs.org> * redisplay.h: * redisplay.c: (redisplay_cancel_ritual_suicide): * eval.c (throw_or_bomb_out_unsafe): * device-x.c (x_IO_error_handler): Don't commit suicide when an X device dies. 2011-01-23 Aidan Kehoe <kehoea@parhasard.net> * file-coding.c (complex_vars_of_file_coding): * intl-win32.c (complex_vars_of_intl_win32): * profile.c (Fget_profiling_info): * unicode.c (complex_vars_of_unicode): Replace various awkward calls to nconc2 () with list6 () with analogous calls to Ben's relatively-recently introduced listu (), constructing a list from an arbitrary number of C arguments. 2011-01-18 Mike Sperber <mike@xemacs.org> * s/freebsd.h: Zap. Not really needed anymore, and it has unclear license status. 2011-01-15 Aidan Kehoe <kehoea@parhasard.net> * s/usg5-4.h (PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF): That didn't work; attempt with qxestrcpy_ascii(), qxestrncpy_ascii(). 2011-01-14 Aidan Kehoe <kehoea@parhasard.net> * s/hpux11.h (PTY_TTY_NAME_SPRINTF, PTY_NAME_SPRINTF): * s/usg5-4.h (PTY_TTY_NAME_SPRINTF, PTY_NAME_SPRINTF): Replace sprintf() with qxesprintf(), strcpy with qxestrpy(), hopefully fixing some platform-specific C++ builds. 2011-01-14 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Ffind): Use the correct subr information here, pass in the DEFAULT keyword argument value correctly. 2011-01-11 Aidan Kehoe <kehoea@parhasard.net> * device-msw.c (Fmswindows_printer_list): Remove a Fdelete () call here, remove the necessity for it. * fns.c (Fdelete, Fdelq): * lisp.h: Move #'delete, #'delq to Lisp, implemented in terms of #'delete* * select.c (Fown_selection_internal): * select.c (handle_selection_clear): Use delq_no_quit() in these functions, don't reimplement it or use Fdelq(), which is now gone. 2011-01-10 Aidan Kehoe <kehoea@parhasard.net> * mc-alloc.c (get_used_list_index): Replace some C++ comments with C-style /* comments. 2011-01-02 Aidan Kehoe <kehoea@parhasard.net> * fns.c (FdeleteX, FremoveX, Fnsubstitute, Fsubstitute, syms_of_fns): Don't repeat the declaration and DEFSYMBOL() for Qnintersection in this file; don't assume that bignums are always available. Fixes some of the build problems the buildbot is showing me at the moment. (syms_of_fns): Remove a couple more duplicate symbol declarations. 2011-01-01 Aidan Kehoe <kehoea@parhasard.net> * data.c (print_ephemeron, print_weak_list, print_weak_box): Be more helpful in printing these structures; show their contents, print their UIDs so it's possible to distinguish between them. 2010-12-30 Aidan Kehoe <kehoea@parhasard.net> Move the heavy lifting from cl-seq.el to C, finally making those functions first-class XEmacs citizens, with circularity checking, built-in support for tests other than #'eql, and as much compatibility with current Common Lisp as Paul Dietz' tests require. * fns.c (check_eq_nokey, check_eq_key, check_eql_nokey) (check_eql_key, check_equal_nokey, check_equal_key) (check_equalp_nokey, check_equalp_key, check_string_match_nokey) (check_string_match_key, check_other_nokey, check_other_key) (check_if_nokey, check_if_key, check_match_eq_key) (check_match_eql_key, check_match_equal_key) (check_match_equalp_key, check_match_other_key): New. These are basically to provide function pointers to be used by Lisp functions that take TEST, TEST-NOT and KEY arguments. (get_check_match_function_1, get_check_test_function) (get_check_match_function): These functions work out which of the previous list of functions to use, given the keywords supplied by the user. (count_with_tail): New. This is the bones of #'count. (list_count_from_end, string_count_from_end): Utility functions for #'count. (Fcount): New, moved from cl-seq.el. (list_position_cons_before): New. The implementation of #'member*, and important in implementing various other functions. (FmemberX, Fadjoin, FassocX, FrassocX, Fposition, Ffind) (FdeleteX, FremoveX, Fdelete_duplicates, Fremove_duplicates) (Fnsubstitute, Fsubstitute, Fsublis, Fnsublis, Fsubst, Fnsubst) (Ftree_equal, Fmismatch, Fsearch, Fintersection, Fnintersection) (Fsubsetp, Fset_difference, Fnset_difference, Fnunion, Funion) (Fset_exclusive_or, Fnset_exclusive_or): New, moved here from cl-seq.el. (position): New. The implementation of #'find and #'position. (list_delete_duplicates_from_end, subst, sublis, nsublis) (tree_equal, mismatch_from_end, mismatch_list_list) (mismatch_list_string, mismatch_list_array) (mismatch_string_array, mismatch_string_string) (mismatch_array_array, get_mismatch_func): Helper C functions for the Lisp-visible functions. (venn, nvenn): New. The implementation of the main Lisp functions that treat lists as sets. 2010-12-30 Aidan Kehoe <kehoea@parhasard.net> * lisp.h (DECLARE_N_KEYWORDS_8, DECLARE_N_KEYWORDS_9) (CHECK_N_KEYWORDS_8, CHECK_N_KEYWORDS_9): Support up to nine keywords in the PARSE_KEYWORDS() macro. 2010-12-30 Aidan Kehoe <kehoea@parhasard.net> * elhash.c (syms_of_elhash): * chartab.c (syms_of_chartab): * abbrev.c (syms_of_abbrev): * general-slots.h: Move Qcount, Q_default, Q_test to general-slots.h, they're about to be used by other files. Rename Q_default to Q_default_, for the sake of the PARSE_KEYWORDS macro (given that default is a reserved identifier in C). Add SYMBOL_KEYWORD_GENERAL(), analogous to SYMBOL_GENERAL() to make this easier. 2010-12-29 Aidan Kehoe <kehoea@parhasard.net> * floatfns.c (Ffloat): If we've been handed a bigfloat here, it's appropriate to give the same bigfloat back. 2010-11-30 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Ffill): Move all declarations before statements, for the sake of the Visual Studio build. Thank you Vin! 2010-11-24 Aidan Kehoe <kehoea@parhasard.net> * font-mgr.c (Ffc_pattern_get): Fix my last change when both --with-union-type and --with-xft are specified, thank you Robert Delius Royar! 2010-11-20 Aidan Kehoe <kehoea@parhasard.net> * abbrev.c (Fexpand_abbrev): * alloc.c: * alloc.c (Fmake_list): * alloc.c (Fmake_vector): * alloc.c (Fmake_bit_vector): * alloc.c (Fmake_byte_code): * alloc.c (Fmake_string): * alloc.c (vars_of_alloc): * bytecode.c (UNUSED): * bytecode.c (Fbyte_code): * chartab.c (decode_char_table_range): * cmds.c (Fself_insert_command): * data.c (check_integer_range): * data.c (Fnatnump): * data.c (Fnonnegativep): * data.c (Fstring_to_number): * elhash.c (hash_table_size_validate): * elhash.c (decode_hash_table_size): * eval.c (Fbacktrace_frame): * event-stream.c (lisp_number_to_milliseconds): * event-stream.c (Faccept_process_output): * event-stream.c (Frecent_keys): * event-stream.c (Fdispatch_event): * events.c (Fmake_event): * events.c (Fevent_timestamp): * events.c (Fevent_timestamp_lessp): * events.h: * events.h (struct command_builder): * file-coding.c (gzip_putprop): * fns.c: * fns.c (check_sequence_range): * fns.c (Frandom): * fns.c (Fnthcdr): * fns.c (Flast): * fns.c (Fnbutlast): * fns.c (Fbutlast): * fns.c (Fmember): * fns.c (Ffill): * fns.c (Freduce): * fns.c (replace_string_range_1): * fns.c (Freplace): * font-mgr.c (Ffc_pattern_get): * frame-msw.c (msprinter_set_frame_properties): * glyphs.c (check_valid_xbm_inline): * indent.c (Fmove_to_column): * intl-win32.c (mswindows_multibyte_to_unicode_putprop): * lisp.h: * lisp.h (ARRAY_DIMENSION_LIMIT): * lread.c (decode_mode_1): * mule-ccl.c (ccl_get_compiled_code): * number.h: * process-unix.c (unix_open_multicast_group): * process.c (Fset_process_window_size): * profile.c (Fstart_profiling): * unicode.c (Funicode_to_char): Change NATNUMP to return 1 for positive bignums; changes uses of it and of CHECK_NATNUM appropriately, usually by checking for an integer in an appropriate range. Add array-dimension-limit and use it in #'make-vector, #'make-string. Add array-total-size-limit, array-rank-limit while we're at it, for the sake of any Common Lisp-oriented code that uses these limits. Rename check_int_range to check_integer_range, have it take Lisp_Objects (and thus bignums) instead. Remove bignum_butlast(), just set int_n to an appropriately large integer if N is a bignum. Accept bignums in check_sequence_range(), change the functions that use check_sequence_range() appropriately. Move the definition of NATNUMP() to number.h; document why it's a reasonable name, contradicting an old comment. 2010-11-17 Aidan Kehoe <kehoea@parhasard.net> * fns.c (bignum_butlast): New. (Fnbutlast, Fbutlast): Use it. In #'butlast and #'nbutlast, if N is a bignum, we should always return nil. Bug revealed by Paul Dietz' test suite, thank you Paul. 2010-11-15 Aidan Kehoe <kehoea@parhasard.net> * .gdbinit.in: Remove lrecord_type_popup_data, lrecord_type_window_configuration from this file, they're not used, and their presence breaks pobj in GDB at runtime for me. 2010-11-14 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fnreverse): Check that non-list sequences are writable from Lisp before modifying them. (There's an argument that we should do this for list sequences too, but for the moment other code (e.g. #'setcar) doesn't.) (mapcarX): Initialise lisp_vals_staging, lisp_vals_type explicitly, for the sake of compile warnings. Check if lisp_vals_staging is non-NULL when deciding whether to replace a string's range. (Fsome): Cross-reference to #'find-if in the doc string for this function. (Freduce): GCPRO accum in this function, when a key argument is specicified it can be silently garbage-collected. When deciding whether to iterate across a string, check whether the cursor exceeds the byte len; while iterating, increment an integer counter. Don't ABORT() if check_sequence_range() returns when handed a suspicious sequence; it is legal to supply the length of SEQUENCE as the :end keyword value, and this will provoke our suspicions, legitimately enough. (Problems with this function revealed by Paul Dietz' ANSI test suite, thank you Paul Dietz.) (Freplace): Check list sequence lengths using the arguments, not the conses we're currently looking at, thank you Paul Dietz. 2010-11-14 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Frandom): Correct the docstring here, the name of the argument is LIMIT, not N. 2010-11-06 Aidan Kehoe <kehoea@parhasard.net> * bytecode.c (bytecode_nreverse): Call Fnreverse() if SEQUENCE is not a cons in this function. (Fnreverse, Freverse): Accept sequences, not just lists, in these functions. 2010-11-06 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Flist_length): Error if LIST is dotted in this function; document this behaviour. 2010-10-25 Aidan Kehoe <kehoea@parhasard.net> * specifier.c (specifier_instance_from_inst_list): Call call_with_suspended_errors() with ERROR_ME_WARN, explicitly; avoids the problem Giacomo Boffi describes in http://mid.xemacs.org/19617.52517.341117.388679@aiuole.stru.polimi.it , but the specifier instantiation bug that makes XEmacs fail for him is still visible. 2010-10-25 Aidan Kehoe <kehoea@parhasard.net> * print.c (ulong_to_bit_string): If printing zero, actually print a zero, don't return the empty string. 2010-07-06 Stephen J. Turnbull <stephen@xemacs.org> * emodules.c (emodules_load): Add one more dereference on f = dll_variable() in three places. We then use EXTERNAL_TO_ITEXT on it, which returns an alloca'd string, so I delete the unneeded alloca copy statements. Fixes error reported by Anders Odberg, confirmed in <rfawrpfhm3l.fsf@fangorn.uio.no>. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * ui-byhand.c: * gtk-glue.c: Add copyright notice based on internal evidence. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * number.h: Another permission consistency fix. 2010-10-14 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fnbutlast, Fbutlast): Tighten up Common Lisp compatibility for these two functions; they need to operate on dotted lists without erroring. 2010-10-12 Aidan Kehoe <kehoea@parhasard.net> * fns.c (list_merge): Circularity checking here needs to be done independently for each list, they can't share a loop counter. Thank you for the bug report, Robert Pluim! 2010-09-20 Aidan Kehoe <kehoea@parhasard.net> * lisp.h (GET_DEFUN_LISP_OBJECT): Make the NEW_GC version of this work, remove a needless and unhelpful semicolon. (GET_DEFUN_LISP_OBJECT): Remove a needless semicolon from the non-NEW_GC version of this. (PARSE_KEYWORDS): Fix the indentation for the DEBUG_XEMACS version of this macro. (PARSE_KEYWORDS): Use GET_DEFUN_LISP_OBJECT() for both the NEW_GC and non-NEW_GC versions of this macro, when working out the function's min args. 2010-09-18 Aidan Kehoe <kehoea@parhasard.net> * lisp.h (PARSE_KEYWORDS): Turns out #elsif is not valid preprocessor syntax, who knew! 2010-09-18 Aidan Kehoe <kehoea@parhasard.net> * lisp.h (PARSE_KEYWORDS): Correct the NEW_GC non-DEBUG_XEMACS version of this macro; under such builds S##function is a pointer, not a Lisp_Subr structure. 2010-09-18 Aidan Kehoe <kehoea@parhasard.net> Simplify the API of PARSE_KEYWORDS for callers. * lisp.h (PARSE_KEYWORDS): Simply the API, while making the implementation a little more complex; work out KEYWORDS_OFFSET from the appropriate Lisp_Subr struct, take the function name as the C name of the DEFUN rather than a symbol visible as a Lisp_Object, on debug builds assert that we're actually in the function so we choke on badly-done copy-and-pasting, * lisp.h (PARSE_KEYWORDS_8): New. This is the old PARSE_KEYWORDS. * fns.c (Fmerge, FsortX, Ffill, Freduce, Freplace): Change to use the new PARSE_KEYWORDS syntax. * elhash.c (Fmake_hash_table): Chance to the new PARSE_KEYWORDS syntax, rename a define to correspond to what other files use. * symbols.c (intern_massaging_name): * buffer.c (ADD_INT): Rename intern_converting_underscores_to_dashes() to intern_massaging_name(), now it does a little more. 2010-09-18 Aidan Kehoe <kehoea@parhasard.net> * termcap.c: Add a couple of missing includes here, which should fix builds that use this file. (I have no access to such builds, but Mats' buildbot shows output that indicates they fail at link time since DEVICE_BAUD_RATE and IS_DIRECTORY_SEP are available.) 2010-09-18 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Freduce): Move statements outside of the braces surrounding the EXTERNAL_LIST_LOOP_3 macro, fixing strict C89 builds. Thank you for the report, Vin! 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Flist_length): New, moved here from cl-extra.el, needed by the next function. (shortest_length_among_sequences): New. (Fmapconcat, FmapcarX, Fmapvector, Fmapcan, Fmapc, Fmap) (Fmap_into, Fsome, Fevery): Use shortest_length_among_sequences() when working out how many iterations to do, only giving circular list errors if all arguments are circular. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fsubseq): Change the string code to better fit in with the rest of this function (it still uses get_string_range_char(), though, which *may* diverge algorithmically from what we're doing). If dealing with a cons, only call #'length if we have reason to believe that the START and END arguments are badly specified, and check for circular lists ourselves when that's appropriate. If dealing with a vector, call Fvector() on the appropriate subset of the old vector's data directly, don't initialise the result with nil and then copy. (Ffill): Only check the range arguments for a cons SEQUENCE if we have good reason to think they were badly specified. (Freduce): Handle multiple values properly. Add bounds checking to this function, as specificied by ANSI Common Lisp. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * eval.c (Ffunction, Fquote): Add argument information in the arguments: () format for these two special operators. 2010-09-07 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Freplace): Replace an accidental double semi-colon with a single semi-colon, hopefully fixing Vin's Visual Studio 6 build. (Visual Studio 2005 had no problem with it, oddly.) 2010-09-06 Aidan Kehoe <kehoea@parhasard.net> Move #'replace to C; add bounds checking to it and to #'fill. * fns.c (Fsubseq, Ffill, mapcarX): Don't #'nreverse in #'subseq, use fill_string_range and check bounds in #'fill, use replace_string_range() in #'map-into avoiding quadratic time when modfiying the string. * fns.c (check_sequence_range, fill_string_range) (replace_string_range, replace_string_range_1, Freplace): New functions; check that arguments fit sequence dimensions, fill a string range with a given character, replace a string range from an Ibyte pointer. 2010-09-05 Aidan Kehoe <kehoea@parhasard.net> * chartab.c (char_table_default_for_type, chartab_default_validate): New. (print_char_table, Freset_char_table, chartab_default_validate) (chartab_instantiate, structure_type_create_chartab): Accept keyword :default in the read syntax for char tables, and print the default when it is not what was expected for the time. Makes it a little easier to debug things. 2010-09-05 Aidan Kehoe <kehoea@parhasard.net> * editfns.c (Fformat_time_string): Use two backslashes so that there is at least one present in the output of describe function, when describing the Roman month number syntax in this function's docstring. Thanks for provoking me to look at this, Stephen Turnbull. 2010-09-03 Aidan Kehoe <kehoea@parhasard.net> * symsinit.h: Declare reinit_process_early() here, fixing the C++ build; thank you for pointing this out, Adam Sjøgren! * fontcolor-msw.c (mswindows_string_to_color): Cast the result of bsearch() to a colormap_t pointer, fixing the Visual Studio 2005 build. 2010-09-02 Aidan Kehoe <kehoea@parhasard.net> * strftime.c (roman_upper, roman_lower, strftime): Implement Roman month numbers, as used in central and eastern Europe. * editfns.c (Fformat_time_string): Document two new escapes, to allow uppercase and lowercase Roman month numbers. Remove documentation of a bug that we didn't actually have. * text.h (Qtime_function_encoding): We know the text encoding coming from strftime(), because we always use the one in strftime.c. Don't use Qnative. 2010-09-01 Aidan Kehoe <kehoea@parhasard.net> * fns.c (list_merge, list_array_merge_into_list) (list_array_merge_into_array): Avoid algorithmic complexity surprises when checking for circularity in these functions. (Freduce): Fix some formatting, in passing. (mapcarX): Drop the SOME_OR_EVERY argument to this function; instead, take CALLER, a symbol reflecting the Lisp-visible function that called mapcarX(). Use CALLER with mapping_interaction_error() when sequences are modified illegally. Don't cons with #'some, #'every, not even a little. (Fmapconcat, FmapcarX, Fmapvector, Fmapcan, Fmapc, Fmap) (Fmap_into, Fsome, Fevery): Call mapcarX() with its new arguments. (Fmapcan): Don't unnecessarily complicate the nconc call. (maplist): Take CALLER, a symbol reflecting the Lisp-visible function that called maplist(), rather than having separate arguments to indicate mapl vs. mapcon. Avoid algorithmic complexity surprises when checking for circularity. In #'mapcon, check a given stretch of result for well-formedness once, which was not previously the case, despite what the comments said. (Fmaplist, Fmapl, Fmapcon): Call maplist() with its new arguments. 2010-09-02 Aidan Kehoe <kehoea@parhasard.net> * process.c (process_getprop, process_putprop, process_remprop) (process_plist, process_setplist, reinit_process_early): Add functions to modify a process's property list. * process-slots.h (MARKED_SLOT): Add a plist slot. * fns.c (Fobject_setplist): New function, analogous to #'setplist, but more general. Update the documentation in the other plist functions to reflect that processes now have property lists. * emacs.c (main_1): Call reinit_process_early(), now processes have plist methods that need to be initialised. * symbols.c (reinit_symbol_objects_early): Fsetplist is the named setplist method for symbols. 2010-08-30 Aidan Kehoe <kehoea@parhasard.net> * floatfns.c (ceiling_one_mundane_arg, floor_one_mundane_arg) (round_one_mundane_arg, truncate_one_mundane_arg): INTEGERP is always available, no need to wrap calls to it with #ifdef HAVE_BIGNUM. (Fceiling, Ffloor, Fround, Ftruncate, Ffceiling, Fffloor) (Ffround, Fftruncate): Correct some code formatting here. * doprnt.c (emacs_doprnt_1): Remove some needless #ifdef WITH_NUMBER_TYPES, now number.h is always #included. 2010-08-26 Adam Sjøgren <asjo@koldfront.dk> * glyphs-eimage.c (gif_instantiate): Try harder to find an appropriate GIF colormap and then flag an error if one can't be found. 2010-08-21 Aidan Kehoe <kehoea@parhasard.net> * lread.c (read_escape): Make error messages better reflect the text that was encountered, when overlong hex character escapes or non-Latin-1 octal character escapes are encountered. 2010-08-15 Aidan Kehoe <kehoea@parhasard.net> * print.c (print_symbol): Escape any symbols that look like ratios, in the same way we do symbols that look like floats or integers. Prevents confusion in the Lisp reader. * lread.c (isratio_string): Make this available even on builds without HAVE_RATIO, so we can print symbols that look like ratios with the appropriate escapes. * lisp.h: Make isratio_string available even if HAVE_RATIO is not defined. 2010-07-24 Aidan Kehoe <kehoea@parhasard.net> * lisp.h (PARSE_KEYWORDS): Always accept a nil :allow-other-keys keyword argument, as described in the ALLOW-OTHER-KEYS-NIL Common Lisp issue writeup, and as necessary for Paul Dietz' tests for #'reduce. * fns.c (mapping_interaction_error): New. (Freduce): Call mapping_interaction_error when KEY or FUNCTION have modified a string SEQUENCE such that the byte length of the string has changed, or such that the current cursor pointer doesn't point to the beginning of a character. Cf. the MAPPING-DESTRUCTIVE-INTERACTION Common Lisp issue writeup. When traversing a list, GCPRO the part of it we still have to traverse, to avoid any crashes if FUNCTION or KEY amputate it behind us and force a garbage collection. 2010-06-05 Marcus Crestani <crestani@informatik.uni-tuebingen.de> * gc.c: * mc-alloc.c: Document the new allocator and the new garbage collector. 2010-06-13 Stephen J. Turnbull <stephen@xemacs.org> * elhash.c: * emacs.c: * glade.c: * gtk-glue.c: * gtk-xemacs.c: * gtk-xemacs.h: * m/alpha.h: * number-gmp.c: * number-gmp.h: * number-mp.c: * number-mp.h: * number.c: * number.h: * s/hpux11-shr.h: * s/mach-bsd4-3.h: * s/sco7.h: * symsinit.h: * ui-byhand.c: * ui-gtk.c: * ui-gtk.h: Correct FSF address in permission notice. 2010-06-08 Aidan Kehoe <kehoea@parhasard.net> * alloc.c (Fpurecopy): Moved to obsolete.el as an alias for #'identity, marked obsolete. 2010-06-06 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Freduce): Move this here from cl-seq.el, avoiding the need to cons. This has been tested using Paul Dietz' test suite, and everything applicable passes, with the exception that the ALLOW-OTHER-KEYS-NIL Common Lisp issue (functions with &key must *always* accept :allow-other-keys nil) hasn't been implemented. 2010-06-02 Aidan Kehoe <kehoea@parhasard.net> * lread.c (vars_of_lread): * emacs.c: (shut_down_emacs, vars_of_emacs, complex_vars_of_emacs): * device-x.c (get_device_from_display) (have_xemacs_resources_in_xrdb): * device-gtk.c (Fgtk_init): * config.h.in: Remove all checks for InfoDock. 2010-06-01 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fsubstring_no_properties): Add this function, API taken from GNU, though ours drops all extent data, not just properties. 2010-06-01 Aidan Kehoe <kehoea@parhasard.net> * glyphs.c (syms_of_glyphs): Remove the definition of Q_data from this file, now it's in general-slots.h. Problem picked up by a C++ build. 2010-05-31 Aidan Kehoe <kehoea@parhasard.net> * rangetab.c (print_range_table, rangetab_instantiate) (structure_type_create_rangetab): * chartab.c (print_char_table, chartab_instantiate) (structure_type_create_chartab): * faces.c (syms_of_faces, print_face, face_validate): Move structure syntax in these files to using keywords by default, as is done in Common Lisp and GNU Emacs, accepting for the moment the older non-keywords syntax too. * glyphs.h: No need to have Q_data here. * general-slots.h: Add Q_data, Q_type here. * config.h.in (NEED_TO_HANDLE_21_4_CODE): New #define, always 1 for the moment, replacing the previous never-really-used NO_NEED_TO_HANDLE_21_4_CODE, and avoiding confusing syntax. * eval.c (Ffuncall): Wrap the hack that allows #'throw to be funcalled in #ifdef NEED_TO_HANDLE_21_4_CODE. * elhash.c (syms_of_elhash): Move Q_type, Q_data to general-slots.h. Change to NEED_TO_HANDLE_21_4_CODE throughout this file. 2010-05-29 Aidan Kehoe <kehoea@parhasard.net> * fontcolor-msw.c (mswindows_X_color_map): Sort this, case insensitively, by the color name. (colormap_t_compare): New function. (mswindows_string_to_color): When using symbolic color names, use binary search, not linear search. (mswindows_color_list): No need to start from the beginning of the array and call #'nreverse to get the colors in an intuitive order, just build the list starting from the end of the array. 2010-05-28 Marcus Crestani <crestani@informatik.uni-tuebingen.de> * window.c (compute_window_usage): Unbreak `show-memory-usage' for NEW_GC. 2010-05-28 Marcus Crestani <crestani@informatik.uni-tuebingen.de> * mc-alloc.c: * mc-alloc.c (visit_all_used_page_headers): * mc-alloc.c (install_page_in_used_list): * mc-alloc.c (mc_alloc_1): * mc-alloc.c (init_mc_allocator): * mc-alloc.c (Fmc_alloc_memory_usage): Allocate lrecord arrays in own size class. 2010-05-24 Mike Sperber <mike@xemacs.org> * lread.c (read1): Accept #B<binary>, #O<octal>, and #X<hex>, just like GNU Emacs. 2010-05-17 Jeff Sparkes <jsparkes@gmail.com> * buffer.c (complex_vars_of_buffer): Add buffer local variables buffer-display-count and buffer-display-time. (common_init_complex_vars_of_buffer): Initialize them here. * bufslots.h: Add slots for buffer-display-count and buffer-display-time. * window.c (Fset_window_buffer): Update buffer-display-count and buffer-display-time whenever a buffer is displayed. 2010-05-16 Aidan Kehoe <kehoea@parhasard.net> Move `default-file-system-ignore-case' to C; pay attention to it in creating the directory hash tables for #'locate-file. Fix a bug where #'eq was specified when creating directory hash tables in dired.c. * config.h.in (DEFAULT_FILE_SYSTEM_IGNORE_CASE): This is 1 on Darwin. * dired.c (make_directory_hash_table): If #'file-system-ignore-case-p gives non-nil for a directory, created the associated hash table with #'equalp as its test. Never use #'eq as a directory hash table test. * fileio.c (vars_of_fileio): Move `default-file-system-ignore-case' here, so it can be a constant boolean reflecting a compile-time #define. * lisp.h: Update the declaration of make_directory_hash_table; remove the declaration of wasteful_word_to_lisp, which was #ifdef'd out. * lread.c (Flocate_file): Take out a debugging statement from this function. (locate_file_refresh_hashing): Call make_directory_hash_table with a Lisp string, not an Ibyte pointer. (vars_of_lread): If DEFAULT_FILE_SYSTEM_IGNORE_CASE is defined, use #'equalp as the hash table test for locate-file-hash-table, not #'equal. * s/win32-common.h (DEFAULT_FILE_SYSTEM_IGNORE_CASE): Case should normally be ignored in file names on Win32. 2010-04-29 Aidan Kehoe <kehoea@parhasard.net> * eval.c (Fquote, Ffunction): Error on more than one argument to these special operators. * data.c (syms_of_data): Move Qquote to general-slots.h from this file, now it's used in eval.c 2010-04-17 Aidan Kehoe <kehoea@parhasard.net> * doc.c (Fdocumentation): If we have a zero length doc string in DOC, as may happen for undocumented compiled function objects which nonetheless have file information stored, return nil. (Fsnarf_documentation): DOC info existing for compiled functions without docstrings is perfectly legitimate, now the file is also used to store file names. * bytecode.c (set_compiled_function_documentation): Allow this function to set the documentation successfully for compiled function objects that don't currently have documentation; most relevant for functions without docstrings which have file information stored in DOC. 2010-04-15 Ben Wing <ben@xemacs.org> * device-x.c (x_init_device): Don't declare something const if we're going to modify it. Clean up code to follow GNU coding standards. 2010-04-12 Ben Wing <ben@xemacs.org> * specifier.c (specifier_memory_usage): Disable specifier memory-usage stats for now. Sometimes they can end up with circularities in them and I'm not sure exactly whats going on to produce them. 2010-04-12 Ben Wing <ben@xemacs.org> * charset.h: * lisp.h: * lisp.h (XREALLOC_ARRAY): * text.h: Port charset_codepoint_to_itext(), buffer_itext_to_charset_codepoint(), EXTBYTE_STRING_TO_ALLOCA(), `enum converr' from ben-unicode-internal, for use with the mule-wnnfns.c changes. * mule-wnnfns.c: * mule-wnnfns.c (Fwnn_open): * mule-wnnfns.c (Fwnn_dict_add): * mule-wnnfns.c (Fwnn_dict_list): * mule-wnnfns.c (Fwnn_get_zenkouho): * mule-wnnfns.c (Fwnn_inspect): * mule-wnnfns.c (Fwnn_bunsetu_kanji): * mule-wnnfns.c (Fwnn_bunsetu_yomi): * mule-wnnfns.c (Fwnn_word_info): * mule-wnnfns.c (Fwnn_dict_search): * mule-wnnfns.c (Fwnn_get_msg): * mule-wnnfns.c (Fwnn_fuzokugo_set): * mule-wnnfns.c (Fwnn_fuzokugo_get): * mule-wnnfns.c (Fwnn_hinsi_list): * mule-wnnfns.c (Fwnn_fisys_dict_add): * mule-wnnfns.c (Fwnn_fiusr_dict_add): * mule-wnnfns.c (Fwnn_notrans_dict_add): * mule-wnnfns.c (Fwnn_bmodify_dict_add): * mule-wnnfns.c (reinit_vars_of_mule_wnn): * mule-wnnfns.c (vars_of_mule_wnn): * mule-wnnfns.c (w2m): * mule-wnnfns.c (m2w): * mule-wnnfns.c (yes_or_no): * mule-wnnfns.c (puts2): * mule-wnnfns.c (check_wnn_server_type): Mule-ize, borrowed from ben-unicode-internal. 2010-04-09 Ben Wing <ben@xemacs.org> * fileio.c (check_writable): * fileio.c (Fdo_auto_save): * redisplay-xlike-inc.c (separate_textual_runs_nomule): * redisplay-xlike-inc.c (separate_textual_runs_xft_nomule): * redisplay-xlike-inc.c (separate_textual_runs_xft_mule): * redisplay-xlike-inc.c (separate_textual_runs_mule): * redisplay-xlike-inc.c (XLIKE_output_string): * redisplay-xlike-inc.c (XLIKE_output_vertical_divider): * redisplay.c (create_text_block): * redisplay.c (regenerate_window): * redisplay.c (redisplay_window): * redisplay.c (redisplay_device): * redisplay.c (window_line_number): * redisplay.c (point_would_be_visible): * redisplay.c (compute_display_line_dynarr_usage): * specifier.c (prune_specifiers): * specifier.c (finalize_specifier): * specifier.c (make_magic_specifier): * specifier.c (charset_matches_specifier_tag_set_p): * specifier.c (Fdefine_specifier_tag): * specifier.c (setup_device_initial_specifier_tags): * specifier.c (bodily_specifier): * specifier.c (add_spec_to_ghost_specifier): * specifier.c (remove_ghost_specifier): * specifier.c (set_specifier_fallback): * specifier.c (specifier_instance_from_inst_list): * specifier.c (set_specifier_caching): Fix coding style to correspond to GNU standard. 2010-04-09 Didier Verna <didier@xemacs.org> * fontcolor-xlike-inc.c (DEBUG_FONTS2): * fontcolor-xlike-inc.c (DEBUG_FONTS3): * fontcolor-xlike-inc.c (DEBUG_FONTS4): * fontcolor-xlike-inc.c (DEBUG_FONTS_LISP1): * fontcolor-xlike-inc.c (DEBUG_FONTS_LISP2): * fontcolor-xlike-inc.c (DEBUG_FONTS_LISP3): * fontcolor-xlike-inc.c (DEBUG_FONTS_LISP4): Conditionalize definitions on DEBUG_XEMACS, provide empty definitions otherwise. 2010-04-06 Ben Wing <ben@xemacs.org> * elhash.c (Feq_hash): Cast to EMACS_INT to fix warning. * elhash.c (internal_hash): * elhash.c (Feql_hash): Fix spacing before parens. * general-slots.h: * xemacs.def.in.in: Export Qfixnump to fix eldap.c link error. 2010-04-06 Aidan Kehoe <kehoea@parhasard.net> * toolbar-msw.c (allocate_toolbar_item_id) (mswindows_output_toolbar): * menubar-msw.c (allocate_menu_item_id, checksum_menu_item): * glyphs-msw.c (mswindows_image_instance_hash): * fontcolor-msw.c (mswindows_color_instance_equal): * device-msw.c (hash_devmode): Call internal_hash() with the correct number of arguments, declare various hash methods with the correct number of arguments, fixing the Win32 build. Thank you Vin. 2010-04-06 Aidan Kehoe <kehoea@parhasard.net> * frame.c (print_frame): When printing a frame, print its device, making the output of #'frame-list a lot more helpful if using gnuclient. 2010-04-04 Ben Wing <ben@xemacs.org> * font-mgr.c: * font-mgr.c (fc_standard_properties): * font-mgr.c (Ffc_pattern_p): * font-mgr.c (Ffc_pattern_create): * font-mgr.c (Ffc_name_parse): * font-mgr.c (Ffc_name_unparse): * font-mgr.c (Ffc_pattern_duplicate): * font-mgr.c (Ffc_pattern_add): * font-mgr.c (Ffc_pattern_del): * font-mgr.c (Ffc_pattern_get): * font-mgr.c (fc_config_create_using): * font-mgr.c (fc_strlist_to_lisp_using): * font-mgr.c (fontset_to_list): * font-mgr.c (Ffc_config_p): * font-mgr.c (Ffc_config_create): * font-mgr.c (Ffc_config_destroy): * font-mgr.c (Ffc_config_up_to_date): * font-mgr.c (Ffc_config_build_fonts): * font-mgr.c (Ffc_config_get_config_dirs): * font-mgr.c (Ffc_config_get_font_dirs): * font-mgr.c (Ffc_config_get_config_files): * font-mgr.c (Ffc_config_get_cache): * font-mgr.c (Ffc_config_get_fonts): * font-mgr.c (Ffc_config_set_current): * font-mgr.c (Ffc_config_get_blanks): * font-mgr.c (Ffc_config_get_rescan_interval): * font-mgr.c (Ffc_config_set_rescan_interval): * font-mgr.c (Ffc_config_app_font_add_file): * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_app_font_clear): * font-mgr.c (Ffc_init_load_config): * font-mgr.c (Ffc_init_load_config_and_fonts): * font-mgr.c (Ffc_config_get_current): * font-mgr.c (size): * font-mgr.c (Ffc_font_render_prepare): * font-mgr.c (Ffc_font_match): * font-mgr.c (Ffc_font_sort): * font-mgr.c (Ffc_init): * font-mgr.c (Ffc_get_version): * font-mgr.c (Ffc_init_reinitialize): * font-mgr.c (Ffc_init_bring_up_to_date): * font-mgr.c (Fxlfd_font_name_p): * font-mgr.c (make_xlfd_font_regexp): * font-mgr.c (syms_of_font_mgr): * font-mgr.c (vars_of_font_mgr): * font-mgr.c (complex_vars_of_font_mgr): Fix the code to conform to GNU style standards. Rename xft-debug-level to debug-xft. * fontcolor-x.c: * fontcolor-x.c (vars_of_fontcolor_x): Rename debug-x-objects to debug-x-fonts. * fontcolor-xlike-inc.c: * fontcolor-xlike-inc.c (DEBUG_FONTS1): * fontcolor-xlike-inc.c (DEBUG_FONTS2): * fontcolor-xlike-inc.c (DEBUG_FONTS3): * fontcolor-xlike-inc.c (DEBUG_FONTS4): * fontcolor-xlike-inc.c (DEBUG_FONTS_LISP1): * fontcolor-xlike-inc.c (count_hyphens): * fontcolor-xlike-inc.c (XFUN): * fontcolor-xlike-inc.c (xlistfonts_checking_charset): * fontcolor-xlike-inc.c (xft_find_charset_font): Misc. code fixes, mostly cosmetic. Get rid of some warnings. Fix the code to conform to GNU style standards. * lisp.h: * print.c: * print.c (debug_out_lisp): New function for doing printf-like formatting involving Lisp objects and outputting to the debug output. 2010-04-03 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Ffill): Be much more careful about resizing a string argument, update pointers to within the string data that may have been relocated with the string resize. Fixes a test hang reported by Vin Shelton; thanks, Vin. 2010-04-05 Aidan Kehoe <kehoea@parhasard.net> * elhash.h: * elhash.c (struct Hash_Table_Test, lisp_object_eql_equal) (lisp_object_eql_hash, lisp_object_equal_equal) (lisp_object_equal_hash, lisp_object_equalp_hash) (lisp_object_equalp_equal, lisp_object_general_hash) (lisp_object_general_equal, Feq_hash, Feql_hash, Fequal_hash) (Fequalp_hash, define_hash_table_test, Fdefine_hash_table_test) (init_elhash_once_early, mark_hash_table_tests, string_equalp_hash): * glyphs.c (vars_of_glyphs): Add a new hash table test in C, #'equalp. Make it possible to specify new hash table tests with functions define_hash_table_test, #'define-hash-table-test. Use define_hash_table_test() in glyphs.c. Expose the hash functions (besides that used for #'equal) to Lisp, for people writing functions to be used with #'define-hash-table-test. Call define_hash_table_test() very early in temacs, to create the built-in hash table tests. * ui-gtk.c (emacs_gtk_boxed_hash): * specifier.h (struct specifier_methods): * specifier.c (specifier_hash): * rangetab.c (range_table_entry_hash, range_table_hash): * number.c (bignum_hash, ratio_hash, bigfloat_hash): * marker.c (marker_hash): * lrecord.h (struct lrecord_implementation): * keymap.c (keymap_hash): * gui.c (gui_item_id_hash, gui_item_hash): * glyphs.c (image_instance_hash, glyph_hash): * glyphs-x.c (x_image_instance_hash): * glyphs-msw.c (mswindows_image_instance_hash): * glyphs-gtk.c (gtk_image_instance_hash): * frame-msw.c (mswindows_set_title_from_ibyte): * fontcolor.c (color_instance_hash, font_instance_hash): * fontcolor-x.c (x_color_instance_hash): * fontcolor-tty.c (tty_color_instance_hash): * fontcolor-msw.c (mswindows_color_instance_hash): * fontcolor-gtk.c (gtk_color_instance_hash): * fns.c (bit_vector_hash): * floatfns.c (float_hash): * faces.c (face_hash): * extents.c (extent_hash): * events.c (event_hash): * data.c (weak_list_hash, weak_box_hash): * chartab.c (char_table_entry_hash, char_table_hash): * bytecode.c (compiled_function_hash): * alloc.c (vector_hash): Change the various object hash methods to take a new EQUALP parameter, hashing appropriately for #'equalp if it is true. 2010-04-02 Aidan Kehoe <kehoea@parhasard.net> * fns.c (FsortX, Ffill): Don't try to be clever with the ascii_begin string header slot in these functions, just call init_string_ascii_begin(). 2010-04-02 Aidan Kehoe <kehoea@parhasard.net> Avoid build failure, Apple's g++-4.0.1, Mac OS 10.4. * sysdll.c (search_linked_libs, dll_variable): Correct some casts for the C++ build. * regex.h (END_C_DECLS, BEGIN_C_DECLS): Wrap function declarations in extern "C" { ... } on the C++ build. * mule-ccl.c (ccl_driver): Initialise i, silencing a warning on a C++ build. * keymap.c (key_desc_list_to_event): Work around a bug in Apple's g++-4.0.1. 2010-03-31 Aidan Kehoe <kehoea@parhasard.net> * fns.c (STRING_DATA_TO_OBJECT_ARRAY) (BIT_VECTOR_TO_OBJECT_ARRAY, c_merge_predicate_key) (c_merge_predicate_nokey, list_merge, array_merge) (list_array_merge_into_list, list_list_merge_into_array) (list_array_merge_into_array, CHECK_KEY_ARGUMENT, Fmerge) (list_sort, array_sort, FsortX): Move #'sort*, #'fill, #'merge from cl-seq.el to C, extending the implementations of Fsort, Ffillarray, and merge() to do so. * keymap.c (keymap_submaps, map_keymap_sort_predicate) (describe_map_sort_predicate): Change the calling semantics of the C sort predicates to return a non-nil Lisp object if the first argument is less than the second, rather than C integers. * fontcolor-msw.c (sort_font_list_function): * fileio.c (build_annotations): * dired.c (Fdirectory_files): * abbrev.c (Finsert_abbrev_table_description): Call list_sort instead of Fsort, list_merge instead of merge() in these functions. 2010-03-29 Ben Wing <ben@xemacs.org> * lisp.h (PRIVATE_UNVERIFIED_LIST_LOOP_7): Need to cast 0 to void (so both parts of conditional expression have void type) to fix C++ compilation. 2010-03-29 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (lisp_object_storage_size): * alloc.c (Fobject_memory_usage): * alloc.c (lisp_object_memory_usage_full): Don't crash if passed a non-record object (int or char). * alloc.c (tree_memory_usage_1): * lrecord.h: New function tree_memory_usage() to return the memory usage of a tree of conses and/or vectors. * lisp.h: * lisp.h (PRIVATE_UNVERIFIED_LIST_LOOP_7): Add SAFE_LIST_LOOP_* functions for looping over a list not known to be correct or non-circular, but without signalling an error -- instead, just stop enumerating when an error detected. * emacs.c (main_1): * specifier.c: * specifier.c (specifier_memory_usage): * specifier.c (vars_of_specifier): * symsinit.h: Add memory usage info for specifiers. 2010-03-28 Ben Wing <ben@xemacs.org> * window.c (find_window_mirror_internal): Stop looking if no window mirror, and return 0. * window.c (window_display_lines): * window.c (window_display_buffer): * window.c (set_window_display_buffer): Don't need to update window mirror before calling find_window_mirror because does the updating automatically. 2010-03-25 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (struct): * alloc.c (finish_object_memory_usage_stats): * alloc.c (object_memory_usage_stats): * alloc.c (Fobject_memory_usage): * alloc.c (lisp_object_memory_usage_full): * alloc.c (compute_memusage_stats_length): * lrecord.h: * lrecord.h (struct lrecord_implementation): Add fields to the `lrecord_implementation' structure to list an offset into the array of extra statistics in a `struct generic_usage_stats' and a length, listing the first slice of ancillary Lisp-object memory. Compute automatically in compute_memusage_stats_length(). Use to add an entry `FOO-lisp-ancillary-storage' for object type FOO. Don't crash when an int or char is given to object-memory-usage, signal an error instead. Add functions lisp_object_memory_usage_full() and lisp_object_memory_usage() to compute the total memory usage of an object (sum of object, non-Lisp attached, and Lisp ancillary memory). * array.c: * array.c (gap_array_memory_usage): * array.h: Add function to return memory usage of a gap array. * buffer.c (struct buffer_stats): * buffer.c (compute_buffer_usage): * buffer.c (vars_of_buffer): * extents.c (compute_buffer_extent_usage): * marker.c: * marker.c (compute_buffer_marker_usage): * extents.h: * lisp.h: Remove `struct usage_stats' arg from compute_buffer_marker_usage() and compute_buffer_extent_usage() -- these are ancillary Lisp objects and don't get accumulated into `struct usage_stats'; change the value of `memusage_stats_list' so that `markers' and `extents' memory is in Lisp-ancillary, where it belongs. In compute_buffer_marker_usage(), use lisp_object_memory_usage() rather than lisp_object_storage_size(). * casetab.c: * casetab.c (case_table_memory_usage): * casetab.c (vars_of_casetab): * emacs.c (main_1): Add memory usage stats for case tables. * lisp.h: Add comment explaining the `struct generic_usage_stats' more, as well as the new fields in lrecord_implementation. * console-impl.h: * console-impl.h (struct console_methods): * scrollbar-gtk.c: * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): * scrollbar-msw.c: * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): * scrollbar-x.c: * scrollbar-x.c (x_compute_scrollbar_instance_usage): * scrollbar.c: * scrollbar.c (struct scrollbar_instance_stats): * scrollbar.c (compute_all_scrollbar_instance_usage): * scrollbar.c (scrollbar_instance_memory_usage): * scrollbar.c (scrollbar_objects_create): * scrollbar.c (vars_of_scrollbar): * scrollbar.h: * symsinit.h: * window.c: * window.c (find_window_mirror_maybe): * window.c (struct window_mirror_stats): * window.c (compute_window_mirror_usage): * window.c (window_mirror_memory_usage): * window.c (compute_window_usage): * window.c (window_objects_create): * window.c (syms_of_window): * window.c (vars_of_window): Redo memory-usage associated with windows, window mirrors, and scrollbar instances. Should fix crash in find_window_mirror, among other things. Properly assign memo ry to object memory, non-Lisp extra memory, and Lisp ancillary memory. For example, redisplay structures are non-Lisp memory hanging off a window mirror, not a window; make it an ancillary Lisp-object field. Window mirrors and scrollbar instances have their own statistics, among other things. 2010-03-24 Ben Wing <ben@xemacs.org> * array.h: * array.h (XD_LISP_DYNARR_DESC): * dumper.c (pdump_register_sub): * dumper.c (pdump_store_new_pointer_offsets): * dumper.c (pdump_reloc_one_mc): * elhash.c: * gc.c (lispdesc_one_description_line_size): * gc.c (kkcc_marking): * lrecord.h: * lrecord.h (IF_NEW_GC): * lrecord.h (enum memory_description_type): * lrecord.h (enum data_description_entry_flags): * lrecord.h (struct opaque_convert_functions): Rename XD_LISP_OBJECT_BLOCK_PTR to XD_INLINE_LISP_OBJECT_BLOCK_PTR and document it in lrecord.h. * data.c: * data.c (finish_marking_weak_lists): * data.c (continue_marking_ephemerons): * data.c (finish_marking_ephemerons): * elhash.c (MARK_OBJ): * gc.c: * gc.c (lispdesc_indirect_count_1): * gc.c (struct): * gc.c (kkcc_bt_push): * gc.c (kkcc_gc_stack_push): * gc.c (kkcc_gc_stack_push_lisp_object): * gc.c (kkcc_gc_stack_repush_dirty_object): * gc.c (KKCC_DO_CHECK_FREE): * gc.c (mark_object_maybe_checking_free): * gc.c (mark_struct_contents): * gc.c (mark_lisp_object_block_contents): * gc.c (register_for_finalization): * gc.c (mark_object): * gc.h: * lisp.h: * profile.c: * profile.c (mark_profiling_info_maphash): Clean up KKCC code related to DEBUG_XEMACS. Rename kkcc_backtrace() to kkcc_backtrace_1() and add two params: a `size' arg to control how many stack elements to print and a `detailed' arg to control whether Lisp objects are printed using `debug_print()'. Create front-ends to kkcc_backtrace_1() -- kkcc_detailed_backtrace(), kkcc_short_backtrace(), kkcc_detailed_backtrace_full(), kkcc_short_backtrace_full(), as well as shortened versions kbt(), kbts(), kbtf(), kbtsf() -- to call it with various parameter values. Add an `is_lisp' field to the stack and backtrace structures and use it to keep track of whether an object pushed onto the stack is a Lisp object or a non-Lisp structure; in kkcc_backtrace_1(), don't try to print a non-Lisp structure as a Lisp object. * elhash.c: * extents.c: * file-coding.c: * lrecord.h: * lrecord.h (IF_NEW_GC): * marker.c: * marker.c (Fmarker_buffer): * mule-coding.c: * number.c: * rangetab.c: * specifier.c: New macros IF_OLD_GC(), IF_NEW_GC() to simplify declaration of Lisp objects when a finalizer may exist in one but not the other. Use them appropriately. * extents.c (finalize_extent_info): Don't zero out data->soe and data->extents before trying to free, else we get memory leaks. * lrecord.h (enum lrecord_type): Make the first lrecord type have value 1 not 0 so that 0 remains without implementation and attempts to interpret zeroed memory as a Lisp object will be more obvious. * array.c (Dynarr_free): * device-msw.c (msprinter_delete_device): * device-tty.c (free_tty_device_struct): * device-tty.c (tty_delete_device): * dialog-msw.c (handle_directory_dialog_box): * dialog-x.c: * emacs.c (free_argc_argv): * emodules.c (attempt_module_delete): * file-coding.c (chain_finalize_coding_stream_1): * file-coding.c (chain_finalize_coding_stream): * glyphs-eimage.c: * glyphs-eimage.c (jpeg_instantiate_unwind): * glyphs-eimage.c (gif_instantiate_unwind): * glyphs-eimage.c (png_instantiate_unwind): * glyphs-eimage.c (tiff_instantiate_unwind): * imgproc.c: * imgproc.c (build_EImage_quantable): * insdel.c (uninit_buffer_text): * mule-coding.c (iso2022_finalize_detection_state): * objects-tty.c (tty_finalize_color_instance): * objects-tty.c (tty_finalize_font_instance): * objects-tty.c (tty_font_list): * process.c: * process.c (finalize_process): * redisplay.c (add_propagation_runes): * scrollbar-gtk.c: * scrollbar-gtk.c (gtk_free_scrollbar_instance): * scrollbar-gtk.c (gtk_release_scrollbar_instance): * scrollbar-msw.c: * scrollbar-msw.c (mswindows_free_scrollbar_instance): * scrollbar-msw.c (unshow_that_mofo): * scrollbar-x.c (x_free_scrollbar_instance): * scrollbar-x.c (x_release_scrollbar_instance): * select-x.c: * select-x.c (x_handle_selection_request): * syntax.c: * syntax.c (uninit_buffer_syntax_cache): * text.h (eifree): If possible, whenever we call xfree() on a field in a structure, set the field to 0 afterwards. A lot of code is written so that it checks the value being freed to see if it is non-zero before freeing it -- doing this and setting the value to 0 afterwards ensures (a) we won't try to free twice if the cleanup code is called twice; (b) if the object itself stays around, KKCC won't crash when attempting to mark the freed field. * rangetab.c: Add a finalization method when not NEW_GC to avoid memory leaks. (#### We still get memory leaks when NEW_GC; need to convert gap array to Lisp object). 2010-03-22 Ben Wing <ben@xemacs.org> * Makefile.in.in (objs): * array.c: * array.c (gap_array_adjust_markers): * array.c (gap_array_move_gap): * array.c (gap_array_make_gap): * array.c (gap_array_insert_els): * array.c (gap_array_delete_els): * array.c (gap_array_make_marker): * array.c (gap_array_delete_marker): * array.c (gap_array_delete_all_markers): * array.c (gap_array_clone): * array.h: * depend: * emacs.c (main_1): * extents.c: * extents.c (EXTENT_GAP_ARRAY_AT): * extents.c (extent_list_num_els): * extents.c (extent_list_locate): * extents.c (extent_list_at): * extents.c (extent_list_delete_all): * extents.c (allocate_extent_list): * extents.c (syms_of_extents): * extents.h: * extents.h (XEXTENT_LIST_MARKER): * lisp.h: * rangetab.c: * rangetab.c (mark_range_table): * rangetab.c (print_range_table): * rangetab.c (range_table_equal): * rangetab.c (range_table_hash): * rangetab.c (verify_range_table): * rangetab.c (get_range_table_pos): * rangetab.c (Fmake_range_table): * rangetab.c (Fcopy_range_table): * rangetab.c (Fget_range_table): * rangetab.c (put_range_table): * rangetab.c (Fclear_range_table): * rangetab.c (Fmap_range_table): * rangetab.c (unified_range_table_bytes_needed): * rangetab.c (unified_range_table_copy_data): * rangetab.c (unified_range_table_lookup): * rangetab.h: * rangetab.h (struct range_table_entry): * rangetab.h (struct Lisp_Range_Table): * rangetab.h (rangetab_gap_array_at): * symsinit.h: Rename dynarr.c to array.c. Move gap array from extents.c to array.c. Extract dynarr, gap array and stack-like malloc into new file array.h. Rename GAP_ARRAY_NUM_ELS -> gap_array_length(). Add gap_array_at(), gap_array_atp(). Rewrite range table code to use gap arrays. Make put_range_table() smarter so that its operation is O(log n) for adding a localized range. * gc.c (lispdesc_block_size_1): Don't ABORT() when two elements are located at the same place. This will happen with a size-0 gap array -- both parts of the array (before and after gap) are in the same place. 2010-03-21 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (assert_proper_sizing): * alloc.c (c_readonly): * alloc.c (malloced_storage_size): * alloc.c (fixed_type_block_overhead): * alloc.c (lisp_object_storage_size): * alloc.c (inc_lrecord_stats): * alloc.c (dec_lrecord_stats): * alloc.c (pluralize_word): * alloc.c (object_memory_usage_stats): * alloc.c (Fobject_memory_usage): * alloc.c (compute_memusage_stats_length): * alloc.c (disksave_object_finalization_1): * alloc.c (Fgarbage_collect): * mc-alloc.c: * mc-alloc.c (mc_alloced_storage_size): * mc-alloc.h: No functionality change here. Collect the allocations-statistics code that was scattered throughout alloc.c into one place. Add remaining section headings so that all sections have headings clearly identifying the start of the section and its purpose. Expose mc_alloced_storage_size() even when not MEMORY_USAGE_STATS; this fixes build problems and is related to the export of lisp_object_storage_size() and malloced_storage_size() when non-MEMORY_USAGE_STATS in the previous change set. 2010-03-22 Vin Shelton <acs@xemacs.org> * window.c (vars_of_window): Move HAVE_SCROLLBARS test so the code can compile under Visual Studio 6. 2010-03-21 Aidan Kehoe <kehoea@parhasard.net> * alloc.c (tick_lrecord_stats): Fix the union build after Ben's last change, don't assume that a Lisp_Object will fit into a Bytecount. 2010-03-20 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (init_lrecord_stats): * alloc.c (free_normal_lisp_object): * alloc.c (struct): * alloc.c (clear_lrecord_stats): * alloc.c (tick_lrecord_stats): * alloc.c (COUNT_FROB_BLOCK_USAGE): * alloc.c (COPY_INTO_LRECORD_STATS): * alloc.c (sweep_strings): * alloc.c (UNMARK_string): * alloc.c (gc_sweep_1): * alloc.c (finish_object_memory_usage_stats): * alloc.c (object_memory_usage_stats): * alloc.c (object_dead_p): * alloc.c (fixed_type_block_overhead): * alloc.c (lisp_object_storage_size): * emacs.c (main_1): * lisp.h: * lrecord.h: Export lisp_object_storage_size() and malloced_storage_size() even when not MEMORY_USAGE_STATS, to get the non-MEMORY_USAGE_STATS build to compile. Don't export fixed_type_block_overhead() any more. Some code cleanup, rearrangement, add some section headers. Clean up various bugs especially involving computation of overhead and double-counting certain usage in total_gc_usage. Add statistics computing the overhead used by all types. Don't add a special entry for string headers in the object-memory-usage-stats because it's already present as just "string". But do count the overhead used by long strings. Don't try to call the memory_usage() methods when NEW_GC because there's nowhere obvious in the sweep stage to make the calls. * marker.c (compute_buffer_marker_usage): Just use lisp_object_storage_size() rather than trying to reimplement it. 2010-03-19 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (struct): * alloc.c (tick_lrecord_stats): * alloc.c (gc_sweep_1): * alloc.c (finish_object_memory_usage_stats): * alloc.c (object_memory_usage_stats): * alloc.c (compute_memusage_stats_length): Call new memory-usage mechanism at sweep time to compute extra memory utilization for all objects. Add up the values element-by- element to get an aggregrate set of statistics, where each is the sum of the values of a single statistic across different objects of the same type. At end of sweep time, call finish_object_memory_usage_stats() to add up all the aggreggrate stats that are related to non-Lisp memory storage to compute a single value, and add it to the list of values returned by `garbage-collect' and `object-memory-usage-stats'. * buffer.c (compute_buffer_text_usage): Don't crash on buffers without text (killed buffers?) and don't double-count indirect buffers. * elhash.c: * elhash.c (hash_table_objects_create): * elhash.c (vars_of_elhash): * symsinit.h: Add memory-usage method to count the size of `hentries'. * emacs.c (main_1): Call new functions in elhash.c, frame.c at init. * frame.c: * frame.c (compute_frame_usage): * frame.c (frame_memory_usage): * frame.c (frame_objects_create): * symsinit.h: Add memory-usage method to count gutter display structures, subwindow exposures. * gc.c (gc_finish): * lisp.h: Declare finish_object_memory_usage_stats(), call it in gc_finish(). * lrecord.h (struct lrecord_implementation): * lrecord.h (INIT_MEMORY_USAGE_STATS): New value in implementation struct to track number of non-Lisp-memory statistics. Computed in alloc.c. 2010-03-18 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (disksave_object_finalization_1): * alloc.c (lisp_object_storage_size): * alloc.c (listu): * alloc.c (listn): * alloc.c (Fobject_memory_usage_stats): * alloc.c (compute_memusage_stats_length): * alloc.c (Fobject_memory_usage): * alloc.c (Ftotal_object_memory_usage): * alloc.c (malloced_storage_size): * alloc.c (common_init_alloc_early): * alloc.c (reinit_alloc_objects_early): * alloc.c (reinit_alloc_early): * alloc.c (init_alloc_once_early): * alloc.c (syms_of_alloc): * alloc.c (reinit_vars_of_alloc): * buffer.c: * buffer.c (struct buffer_stats): * buffer.c (compute_buffer_text_usage): * buffer.c (compute_buffer_usage): * buffer.c (buffer_memory_usage): * buffer.c (buffer_objects_create): * buffer.c (syms_of_buffer): * buffer.c (vars_of_buffer): * console-impl.h (struct console_methods): * dynarr.c (Dynarr_memory_usage): * emacs.c (main_1): * events.c (clear_event_resource): * extents.c: * extents.c (compute_buffer_extent_usage): * extents.c (extent_objects_create): * extents.h: * faces.c: * faces.c (compute_face_cachel_usage): * faces.c (face_objects_create): * faces.h: * general-slots.h: * glyphs.c: * glyphs.c (compute_glyph_cachel_usage): * glyphs.c (glyph_objects_create): * glyphs.h: * lisp.h: * lisp.h (struct usage_stats): * lrecord.h: * lrecord.h (enum lrecord_type): * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): * lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (MAKE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (MAKE_MODULE_LISP_OBJECT): * lrecord.h (INIT_LISP_OBJECT): * lrecord.h (INIT_MODULE_LISP_OBJECT): * lrecord.h (UNDEF_LISP_OBJECT): * lrecord.h (UNDEF_MODULE_LISP_OBJECT): * lrecord.h (DECLARE_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_API_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_LISP_OBJECT): * lstream.c: * lstream.c (syms_of_lstream): * lstream.c (vars_of_lstream): * marker.c: * marker.c (compute_buffer_marker_usage): * mc-alloc.c (mc_alloced_storage_size): * mc-alloc.h: * mule-charset.c: * mule-charset.c (struct charset_stats): * mule-charset.c (compute_charset_usage): * mule-charset.c (charset_memory_usage): * mule-charset.c (mule_charset_objects_create): * mule-charset.c (syms_of_mule_charset): * mule-charset.c (vars_of_mule_charset): * redisplay.c: * redisplay.c (compute_rune_dynarr_usage): * redisplay.c (compute_display_block_dynarr_usage): * redisplay.c (compute_glyph_block_dynarr_usage): * redisplay.c (compute_display_line_dynarr_usage): * redisplay.c (compute_line_start_cache_dynarr_usage): * redisplay.h: * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): * scrollbar-x.c (x_compute_scrollbar_instance_usage): * scrollbar.c (compute_scrollbar_instance_usage): * scrollbar.h: * symbols.c: * symbols.c (reinit_symbol_objects_early): * symbols.c (init_symbols_once_early): * symbols.c (reinit_symbols_early): * symbols.c (defsymbol_massage_name_1): * symsinit.h: * ui-gtk.c: * ui-gtk.c (emacs_gtk_object_getprop): * ui-gtk.c (emacs_gtk_object_putprop): * ui-gtk.c (ui_gtk_objects_create): * unicode.c (compute_from_unicode_table_size_1): * unicode.c (compute_to_unicode_table_size_1): * unicode.c (compute_from_unicode_table_size): * unicode.c (compute_to_unicode_table_size): * window.c: * window.c (struct window_stats): * window.c (compute_window_mirror_usage): * window.c (compute_window_usage): * window.c (window_memory_usage): * window.c (window_objects_create): * window.c (syms_of_window): * window.c (vars_of_window): * window.h: Redo memory-usage mechanism, make it general; add way of dynamically initializing Lisp object types -- OBJECT_HAS_METHOD(), similar to CONSOLE_HAS_METHOD(). (1) Create OBJECT_HAS_METHOD(), OBJECT_HAS_PROPERTY() etc. for specifying that a Lisp object type has a particular method or property. Call such methods with OBJECT_METH, MAYBE_OBJECT_METH, OBJECT_METH_OR_GIVEN; retrieve properties with OBJECT_PROPERTY. Methods that formerly required a DEFINE_*GENERAL_LISP_OBJECT() to specify them (getprop, putprop, remprop, plist, disksave) now instead use the dynamic-method mechanism. The main benefit of this is that new methods or properties can be added without requiring that the declaration statements of all existing methods be modified. We have to make the `struct lrecord_implementation' non-const, but I don't think this should have any effect on speed -- the only possible method that's really speed-critical is the mark method, and we already extract those out into a separate (non-const) array for increased cache locality. Object methods need to be reinitialized after pdump, so we put them in separate functions such as face_objects_create(), extent_objects_create() and call them appropriately from emacs.c The only current object property (`memusage_stats_list') that objects can specify is a Lisp object and gets staticpro()ed so it only needs to be set during dump time, but because it references symbols that might not exist in a syms_of_() function, we initialize it in vars_of_(). There is also an object property (`num_extra_memusage_stats') that is automatically initialized based on `memusage_stats_list'; we do that in reinit_vars_of_alloc(), which is called after all vars_of_() functions are called. `disksaver' method was renamed `disksave' to correspond with the name normally given to the function (e.g. disksave_lstream()). (2) Generalize the memory-usage mechanism in `buffer-memory-usage', `window-memory-usage', `charset-memory-usage' into an object-type- specific mechanism called by a single function `object-memory-usage'. (Former function `object-memory-usage' renamed to `total-object-memory-usage'). Generalize the mechanism of different "slices" so that we can have different "classes" of memory described and different "slices" onto each class; `t' separates classes, `nil' separates slices. Currently we have three classes defined: the memory of an object itself, non-Lisp-object memory associated with the object (e.g. arrays or dynarrs stored as fields in the object), and Lisp-object memory associated with the object (other internal Lisp objects stored in the object). This isn't completely finished yet and we might need to further separate the "other internal Lisp objects" class into two classes. The memory-usage mechanism uses a `struct usage_stats' (renamed from `struct overhead_stats') to describe a malloc-view onto a set of allocated memory (listing how much was requested and various types of overhead) and a more general `struct generic_usage_stats' (with a `struct usage_stats' in it) to hold all statistics about object memory. `struct generic_usage_stats' contains an array of 32 Bytecounts, which are statistics of unspecified semantics. The intention is that individual types declare a corresponding struct (e.g. `struct window_stats') with the same structure but with specific fields in place of the array, corresponding to specific statistics. The number of such statistics is an object property computed from the list of tags (Lisp symbols describing the statistics) stored in `memusage_stats_list'. The idea here is to allow particular object types to customize the number and semantics of the statistics where completely avoiding consing. This doesn't matter so much yet, but the intention is to have the memory usage of all objects computed at the end of GC, at the same time as other statistics are currently computed. The values for all statistics for a single type would be added up to compute aggregate values for all objects of a specific type. To make this efficient, we can't allow any memory allocation at all. (3) Create some additional functions for creating lists that specify the elements directly as args rather than indirectly through an array: listn() (number of args given), listu() (list terminated by Qunbound). (4) Delete a bit of remaining unused C window_config stuff, also unused lrecord_type_popup_data. 2010-03-18 Ben Wing <ben@xemacs.org> * tests.c: * tests.c (Ftest_data_format_conversion): Need to GCPRO newly created objects or we'll eventually get a crash due to occurrence of call2(). 2010-03-16 Ben Wing <ben@xemacs.org> * alloc.c (make_lcrecord_list): * alloc.c (alloc_managed_lcrecord): Fix compilation problems identified by Robert Delius Royar. 2010-03-15 Ben Wing <ben@xemacs.org> * extents.c (Fprevious_single_property_change): * extents.c (Fnext_single_char_property_change): * extents.c (Fprevious_single_char_property_change): Fix see-also portion of documentation string. 2010-03-15 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (c_readonly): * alloc.c (deadbeef_memory): * alloc.c (make_compiled_function): * alloc.c (make_button_data): * alloc.c (make_motion_data): * alloc.c (make_process_data): * alloc.c (make_timeout_data): * alloc.c (make_magic_data): * alloc.c (make_magic_eval_data): * alloc.c (make_eval_data): * alloc.c (make_misc_user_data): * alloc.c (noseeum_make_marker): * alloc.c (ADDITIONAL_FREE_string): * alloc.c (common_init_alloc_early): * alloc.c (init_alloc_once_early): * bytecode.c (print_compiled_function): * bytecode.c (mark_compiled_function): * casetab.c: * casetab.c (print_case_table): * console.c: * console.c (print_console): * database.c (print_database): * database.c (finalize_database): * device-msw.c (sync_printer_with_devmode): * device-msw.c (print_devmode): * device-msw.c (finalize_devmode): * device.c: * device.c (print_device): * elhash.c: * elhash.c (print_hash_table): * eval.c (print_multiple_value): * eval.c (mark_multiple_value): * events.c (deinitialize_event): * events.c (print_event): * events.c (event_equal): * extents.c: * extents.c (soe_dump): * extents.c (soe_insert): * extents.c (soe_delete): * extents.c (soe_move): * extents.c (extent_fragment_update): * extents.c (print_extent_1): * extents.c (print_extent): * extents.c (vars_of_extents): * frame.c: * frame.c (print_frame): * free-hook.c: * free-hook.c (check_free): * glyphs.c: * glyphs.c (print_image_instance): * glyphs.c (print_glyph): * gui.c: * gui.c (copy_gui_item): * hash.c: * hash.c (NULL_ENTRY): * hash.c (KEYS_DIFFER_P): * keymap.c (print_keymap): * keymap.c (MARKED_SLOT): * lisp.h: * lrecord.h: * lrecord.h (LISP_OBJECT_UID): * lrecord.h (set_lheader_implementation): * lrecord.h (struct old_lcrecord_header): * lstream.c (print_lstream): * lstream.c (finalize_lstream): * marker.c (print_marker): * marker.c (marker_equal): * mc-alloc.c (visit_all_used_page_headers): * mule-charset.c: * mule-charset.c (print_charset): * objects.c (print_color_instance): * objects.c (print_font_instance): * objects.c (finalize_font_instance): * opaque.c (print_opaque): * opaque.c (print_opaque_ptr): * opaque.c (equal_opaque_ptr): * print.c (internal_object_printer): * print.c (enum printing_badness): * rangetab.c (print_range_table): * rangetab.c (range_table_equal): * specifier.c (print_specifier): * specifier.c (finalize_specifier): * symbols.c: * symbols.c (print_symbol_value_magic): * tooltalk.c: * tooltalk.c (print_tooltalk_message): * tooltalk.c (print_tooltalk_pattern): * window.c (print_window): * window.c (debug_print_window): (1) Make lrecord UID's have a separate UID space for each object. Otherwise, with 20-bit UID's, we rapidly wrap around, especially when common objects like conses and strings increment the UID value for every object created. (Originally I tried making two UID spaces, one for objects that always print readably and hence don't display the UID, and one for other objects. But certain objects like markers for which a UID is displayed are still generated rapidly enough that UID overflow is a serious issue.) This also has the advantage of making UID values smaller, hence easier to remember -- their main purpose is to make it easier to keep track of different objects of the same type when debugging code. Make sure we dump lrecord UID's so that we don't have problems with pdumped and non-dumped objects having the same UID. (2) Display UID's consistently whenever an object (a) doesn't consistently print readably (objects like cons and string, which always print readably, can't display a UID), and (b) doesn't otherwise have a unique property that makes objects of a particular type distinguishable. (E.g. buffers didn't and still don't print an ID, but the buffer name uniquely identifies the buffer.) Some types, such as event, extent, compiled-function, didn't always (or didn't ever) display an ID; others (such as marker, extent, lstream, opaque, opaque-ptr, any object using internal_object_printer()) used to display the actual machine pointer instead. (3) Rename NORMAL_LISP_OBJECT_UID to LISP_OBJECT_UID; make it work over all Lisp objects and take a Lisp object, not a struct pointer. (4) Some misc cleanups in alloc.c, elhash.c. (5) Change code in events.c that "deinitializes" an event so that it doesn't increment the event UID counter in the process. Also use deadbeef_memory() to overwrite memory instead of doing the same with custom code. In the process, make deadbeef_memory() in alloc.c always available, and delete extraneous copy in mc-alloc.c. Also capitalize all uses of 0xDEADBEEF. Similarly in elhash.c call deadbeef_memory(). (6) Resurrect "debug SOE" code in extents.c. Make it conditional on DEBUG_XEMACS and on a `debug-soe' variable, rather than on SOE_DEBUG. Make it output to stderr, not stdout. (7) Delete some custom print methods that were identical to external_object_printer(). 2010-03-12 Ben Wing <ben@xemacs.org> * lisp.h: * lisp.h (redo-symbols): Removed. Put the Lisp variables and symbols where they belong, with other stuff related to the file they're in. * event-Xt.c (THIS_IS_X): * event-Xt.c (syms_of_event_Xt): * event-Xt.c (reinit_vars_of_event_Xt): * event-gtk.c: * event-gtk.c (syms_of_event_gtk): * event-gtk.c (reinit_vars_of_event_gtk): * event-stream.c: * event-stream.c (syms_of_event_stream): * event-stream.c (reinit_vars_of_event_stream): * events.c (reinit_vars_of_events): * events.c (vars_of_events): `sans-modifiers' was defsymbol'ed more than once. Move it to events-stream.c. `self-insert-command' was defsymbol'ed more than once. Vevent_resource should be staticpro_nodump()ed as it's declared in a reinit_*() method. * lread.c (vars_of_lread): Vfile_domain wasn't staticpro'ed. * minibuf.c: * minibuf.c (reinit_complex_vars_of_minibuf): Vminibuffer_zero and Vecho_area_buffer weren't staticpro'ed. 2010-03-12 Ben Wing <ben@xemacs.org> * redisplay-msw.c: * redisplay-msw.c (mswindows_output_dibitmap_region): * redisplay-msw.c (mswindows_output_pixmap): * redisplay-msw.c (mswindows_clear_region): Have a crack at implementing the `absolute' property for background pixmaps. It seems to work; however, things don't work quite right in relation to window sizing/moving. In particular, ideally when you move the window the background should stay in place but it doesn't; instead it moves, and when you hit C-l it gets redrawn in the "proper" place. When resizing you get some serious jitter, apparently as first the image gets moved then redrawn in the correct offset position. #### Not sure how to fix this. 2010-03-13 Ben Wing <ben@xemacs.org> * alloc.c (alloc_sized_lrecord_1): * alloc.c (alloc_sized_lrecord_array): * alloc.c (old_alloc_sized_lcrecord): * alloc.c (disksave_object_finalization_1): * alloc.c (mark_lcrecord_list): * alloc.c (alloc_managed_lcrecord): * alloc.c (free_managed_lcrecord): * alloc.c (tick_lcrecord_stats): * alloc.c (sweep_lcrecords_1): * buffer.c (print_buffer): * buffer.c (DEFVAR_BUFFER_LOCAL_1): * casetab.c: * casetab.c (print_case_table): * console.c (print_console): * console.c (DEFVAR_CONSOLE_LOCAL_1): * data.c (print_weak_list): * data.c (print_weak_box): * data.c (print_ephemeron): * data.c (ephemeron_equal): * database.c (print_database): * database.c (finalize_database): * device-msw.c (sync_printer_with_devmode): * device-msw.c (print_devmode): * device-msw.c (finalize_devmode): * device.c: * device.c (print_device): * elhash.c: * elhash.c (print_hash_table): * eval.c (print_subr): * eval.c (print_multiple_value): * event-stream.c (event_stream_resignal_wakeup): * events.c (clear_event_resource): * events.c (zero_event): * events.c (print_event): * extents.c: * extents.c (print_extent): * file-coding.c (print_coding_system): * font-mgr.c: * font-mgr.c (Ffc_init): * frame.c: * frame.c (print_frame): * gc.c: * gc.c (GC_CHECK_NOT_FREE): * glyphs.c: * glyphs.c (print_image_instance): * glyphs.c (print_glyph): * gui.c (print_gui_item): * gui.c (copy_gui_item): * keymap.c (print_keymap): * keymap.c (MARKED_SLOT): * lisp.h: * lisp.h (struct Lisp_String): * lisp.h (DEFUN): * lisp.h (DEFUN_NORETURN): * lrecord.h: * lrecord.h (NORMAL_LISP_OBJECT_UID): * lrecord.h (struct lrecord_header): * lrecord.h (set_lheader_implementation): * lrecord.h (struct old_lcrecord_header): * lrecord.h (struct free_lcrecord_header): * marker.c (print_marker): * mule-charset.c: * mule-charset.c (print_charset): * objects.c (print_color_instance): * objects.c (print_font_instance): * objects.c (finalize_font_instance): * print.c (print_cons): * print.c (printing_unreadable_object_fmt): * print.c (printing_unreadable_lisp_object): * print.c (external_object_printer): * print.c (internal_object_printer): * print.c (debug_p4): * print.c (ext_print_begin): * process.c (print_process): * rangetab.c (print_range_table): * rangetab.c (range_table_equal): * scrollbar.c (free_scrollbar_instance): * specifier.c (print_specifier): * specifier.c (finalize_specifier): * symbols.c (guts_of_unbound_marker): * symeval.h: * symeval.h (DEFVAR_SYMVAL_FWD): * tooltalk.c: * tooltalk.c (print_tooltalk_message): * tooltalk.c (print_tooltalk_pattern): * ui-gtk.c (ffi_object_printer): * ui-gtk.c (emacs_gtk_object_printer): * ui-gtk.c (emacs_gtk_boxed_printer): * window.c (print_window): * window.c (free_window_mirror): * window.c (debug_print_window): * xemacs.def.in.in: (1) printing_unreadable_object -> printing_unreadable_object_fmt. (2) printing_unreadable_lcrecord -> printing_unreadable_lisp_object and fix up so it no longer requires an lcrecord. These previous changes eliminate most of the remaining places where the terms `lcrecord' and `lrecord' occurred outside of specialized code. (3) Fairly major change: Reduce the number of words in an lcrecord from 3 to 2. The third word consisted of a uid that duplicated the lrecord uid, and a single free bit, which was moved into the lrecord structure. This reduces the size of the `uid' slot from 21 bits to 20 bits. Arguably this isn't enough -- we could easily have more than 1,000,000 or so objects created in a session. The answer is (a) It doesn't really matter if we overflow the uid field because it's only used for debugging, to identify an object uniquely (or pretty much so). (b) If we cared about it overflowing and wanted to reduce this, we could make it so that cons, string, float and certain other frob-block types that never print out the uid simply don't store a uid in them and don't increment the lrecord_uid_counter. (4) In conjunction with (3), create new macro NORMAL_LISP_OBJECT_UID() and use it to abstract out the differences between NEWGC and old-GC in accessing the `uid' value from a "normal Lisp Object pointer". (5) In events.c, use zero_nonsized_lisp_object() in place of custom- written equivalent. In font-mgr.c use external_object_printer() in place of custom-written equivalents. 2010-03-07 Ben Wing <ben@xemacs.org> * number.c (bignum_finalize): * number.c (ratio_finalize): * number.c (bigfloat_finalize): Fix the finalizers to go with the new calling sequence. Done previously but somehow got lost. 2010-03-06 Ben Wing <ben@xemacs.org> * frame.c (change_frame_size_1): Add a comment about where FRAME_PIXWIDTH/FRAME_PIXHEIGHT is set. 2010-03-05 Ben Wing <ben@xemacs.org> * frame.c: * frame.c (Fframe_pixel_height): * frame.c (Fframe_displayable_pixel_height): * frame.c (Fframe_pixel_width): * frame.c (Fframe_displayable_pixel_width): * frame.c (Fset_frame_pixel_height): * frame.c (Fset_frame_displayable_pixel_height): * frame.c (Fset_frame_pixel_width): * frame.c (Fset_frame_displayable_pixel_width): * frame.c (get_frame_char_size): * frame.c (change_frame_size_1): Make it so that `frame-pixel-height', `set-frame-pixel-height', etc. use updated values for the displayable or total pixel size that will reflect what will happen as of the next redisplay. This basically means using the character-cell height and converting on-the-fly to pixel units. In the process, make sure FRAME_CHARWIDTH/ FRAME_CHARHEIGHT are always correct and change get_frame_char_size() to simply use them; the old logic in that function was inlined into change_frame_size_1(), which is the only place that needs the logic. 2010-03-05 Ben Wing <ben@xemacs.org> * frame.c: * frame.c (frame_live_p): * frame.c (Fframep): * frame.c (Fdisable_frame): * frame.c (Fenable_frame): * frame.c (Fraise_frame): * frame.c (Fframe_name): * frame.c (Fset_frame_height): * frame.c (internal_set_frame_size): * frame.c (adjust_frame_size): Add documentation on the different types of units used to measure frame size. Add section headers to the various sections. Rearrange the location of some functions in the file to keep related functions together. This especially goes for frame-sizing functions (internal_set_frame_size() and adjust_frame_size()), which have been moved so that they form a group with change_frame_size() and change_frame_size_1(). No functionality should change. 2010-03-05 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (old_alloc_sized_lcrecord): * alloc.c (very_old_free_lcrecord): * alloc.c (copy_lisp_object): * alloc.c (zero_sized_lisp_object): * alloc.c (zero_nonsized_lisp_object): * alloc.c (lisp_object_storage_size): * alloc.c (free_normal_lisp_object): * alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC): * alloc.c (ALLOC_FROB_BLOCK_LISP_OBJECT): * alloc.c (Fcons): * alloc.c (noseeum_cons): * alloc.c (make_float): * alloc.c (make_bignum): * alloc.c (make_bignum_bg): * alloc.c (make_ratio): * alloc.c (make_ratio_bg): * alloc.c (make_ratio_rt): * alloc.c (make_bigfloat): * alloc.c (make_bigfloat_bf): * alloc.c (size_vector): * alloc.c (make_compiled_function): * alloc.c (Fmake_symbol): * alloc.c (allocate_extent): * alloc.c (allocate_event): * alloc.c (make_key_data): * alloc.c (make_button_data): * alloc.c (make_motion_data): * alloc.c (make_process_data): * alloc.c (make_timeout_data): * alloc.c (make_magic_data): * alloc.c (make_magic_eval_data): * alloc.c (make_eval_data): * alloc.c (make_misc_user_data): * alloc.c (Fmake_marker): * alloc.c (noseeum_make_marker): * alloc.c (size_string_direct_data): * alloc.c (make_uninit_string): * alloc.c (make_string_nocopy): * alloc.c (mark_lcrecord_list): * alloc.c (alloc_managed_lcrecord): * alloc.c (free_managed_lcrecord): * alloc.c (sweep_lcrecords_1): * alloc.c (malloced_storage_size): * buffer.c (allocate_buffer): * buffer.c (compute_buffer_usage): * buffer.c (DEFVAR_BUFFER_LOCAL_1): * buffer.c (nuke_all_buffer_slots): * buffer.c (common_init_complex_vars_of_buffer): * buffer.h (struct buffer_text): * buffer.h (struct buffer): * bytecode.c: * bytecode.c (make_compiled_function_args): * bytecode.c (size_compiled_function_args): * bytecode.h (struct compiled_function_args): * casetab.c (allocate_case_table): * casetab.h (struct Lisp_Case_Table): * charset.h (struct Lisp_Charset): * chartab.c (fill_char_table): * chartab.c (Fmake_char_table): * chartab.c (make_char_table_entry): * chartab.c (copy_char_table_entry): * chartab.c (Fcopy_char_table): * chartab.c (put_char_table): * chartab.h (struct Lisp_Char_Table_Entry): * chartab.h (struct Lisp_Char_Table): * console-gtk-impl.h (struct gtk_device): * console-gtk-impl.h (struct gtk_frame): * console-impl.h (struct console): * console-msw-impl.h (struct Lisp_Devmode): * console-msw-impl.h (struct mswindows_device): * console-msw-impl.h (struct msprinter_device): * console-msw-impl.h (struct mswindows_frame): * console-msw-impl.h (struct mswindows_dialog_id): * console-stream-impl.h (struct stream_console): * console-stream.c (stream_init_console): * console-tty-impl.h (struct tty_console): * console-tty-impl.h (struct tty_device): * console-tty.c (allocate_tty_console_struct): * console-x-impl.h (struct x_device): * console-x-impl.h (struct x_frame): * console.c (allocate_console): * console.c (nuke_all_console_slots): * console.c (DEFVAR_CONSOLE_LOCAL_1): * console.c (common_init_complex_vars_of_console): * data.c (make_weak_list): * data.c (make_weak_box): * data.c (make_ephemeron): * database.c: * database.c (struct Lisp_Database): * database.c (allocate_database): * database.c (finalize_database): * device-gtk.c (allocate_gtk_device_struct): * device-impl.h (struct device): * device-msw.c: * device-msw.c (mswindows_init_device): * device-msw.c (msprinter_init_device): * device-msw.c (finalize_devmode): * device-msw.c (allocate_devmode): * device-tty.c (allocate_tty_device_struct): * device-x.c (allocate_x_device_struct): * device.c: * device.c (nuke_all_device_slots): * device.c (allocate_device): * dialog-msw.c (handle_question_dialog_box): * elhash.c: * elhash.c (struct Lisp_Hash_Table): * elhash.c (finalize_hash_table): * elhash.c (make_general_lisp_hash_table): * elhash.c (Fcopy_hash_table): * elhash.h (htentry): * emacs.c (main_1): * eval.c: * eval.c (size_multiple_value): * event-stream.c (finalize_command_builder): * event-stream.c (allocate_command_builder): * event-stream.c (free_command_builder): * event-stream.c (event_stream_generate_wakeup): * event-stream.c (event_stream_resignal_wakeup): * event-stream.c (event_stream_disable_wakeup): * event-stream.c (event_stream_wakeup_pending_p): * events.h (struct Lisp_Timeout): * events.h (struct command_builder): * extents-impl.h: * extents-impl.h (struct extent_auxiliary): * extents-impl.h (struct extent_info): * extents-impl.h (set_extent_no_chase_aux_field): * extents-impl.h (set_extent_no_chase_normal_field): * extents.c: * extents.c (gap_array_marker): * extents.c (gap_array): * extents.c (extent_list_marker): * extents.c (extent_list): * extents.c (stack_of_extents): * extents.c (gap_array_make_marker): * extents.c (extent_list_make_marker): * extents.c (allocate_extent_list): * extents.c (SLOT): * extents.c (mark_extent_auxiliary): * extents.c (allocate_extent_auxiliary): * extents.c (attach_extent_auxiliary): * extents.c (size_gap_array): * extents.c (finalize_extent_info): * extents.c (allocate_extent_info): * extents.c (uninit_buffer_extents): * extents.c (allocate_soe): * extents.c (copy_extent): * extents.c (vars_of_extents): * extents.h: * faces.c (allocate_face): * faces.h (struct Lisp_Face): * faces.h (struct face_cachel): * file-coding.c: * file-coding.c (finalize_coding_system): * file-coding.c (sizeof_coding_system): * file-coding.c (Fcopy_coding_system): * file-coding.h (struct Lisp_Coding_System): * file-coding.h (MARKED_SLOT): * fns.c (size_bit_vector): * font-mgr.c: * font-mgr.c (finalize_fc_pattern): * font-mgr.c (print_fc_pattern): * font-mgr.c (Ffc_pattern_p): * font-mgr.c (Ffc_pattern_create): * font-mgr.c (Ffc_name_parse): * font-mgr.c (Ffc_name_unparse): * font-mgr.c (Ffc_pattern_duplicate): * font-mgr.c (Ffc_pattern_add): * font-mgr.c (Ffc_pattern_del): * font-mgr.c (Ffc_pattern_get): * font-mgr.c (fc_config_create_using): * font-mgr.c (fc_strlist_to_lisp_using): * font-mgr.c (fontset_to_list): * font-mgr.c (Ffc_config_p): * font-mgr.c (Ffc_config_up_to_date): * font-mgr.c (Ffc_config_build_fonts): * font-mgr.c (Ffc_config_get_cache): * font-mgr.c (Ffc_config_get_fonts): * font-mgr.c (Ffc_config_set_current): * font-mgr.c (Ffc_config_get_blanks): * font-mgr.c (Ffc_config_get_rescan_interval): * font-mgr.c (Ffc_config_set_rescan_interval): * font-mgr.c (Ffc_config_app_font_add_file): * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_app_font_clear): * font-mgr.c (size): * font-mgr.c (Ffc_config_substitute): * font-mgr.c (Ffc_font_render_prepare): * font-mgr.c (Ffc_font_match): * font-mgr.c (Ffc_font_sort): * font-mgr.c (finalize_fc_config): * font-mgr.c (print_fc_config): * font-mgr.h: * font-mgr.h (struct fc_pattern): * font-mgr.h (XFC_PATTERN): * font-mgr.h (struct fc_config): * font-mgr.h (XFC_CONFIG): * frame-gtk.c (allocate_gtk_frame_struct): * frame-impl.h (struct frame): * frame-msw.c (mswindows_init_frame_1): * frame-x.c (allocate_x_frame_struct): * frame.c (nuke_all_frame_slots): * frame.c (allocate_frame_core): * gc.c: * gc.c (GC_CHECK_NOT_FREE): * glyphs.c (finalize_image_instance): * glyphs.c (allocate_image_instance): * glyphs.c (Fcolorize_image_instance): * glyphs.c (allocate_glyph): * glyphs.c (unmap_subwindow_instance_cache_mapper): * glyphs.c (register_ignored_expose): * glyphs.h (struct Lisp_Image_Instance): * glyphs.h (struct Lisp_Glyph): * glyphs.h (struct glyph_cachel): * glyphs.h (struct expose_ignore): * gui.c (allocate_gui_item): * gui.h (struct Lisp_Gui_Item): * keymap.c (struct Lisp_Keymap): * keymap.c (make_keymap): * lisp.h: * lisp.h (struct Lisp_String_Direct_Data): * lisp.h (struct Lisp_String_Indirect_Data): * lisp.h (struct Lisp_Vector): * lisp.h (struct Lisp_Bit_Vector): * lisp.h (DECLARE_INLINE_LISP_BIT_VECTOR): * lisp.h (struct weak_box): * lisp.h (struct ephemeron): * lisp.h (struct weak_list): * lrecord.h: * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER): * lrecord.h (struct lcrecord_list): * lstream.c (finalize_lstream): * lstream.c (sizeof_lstream): * lstream.c (Lstream_new): * lstream.c (Lstream_delete): * lstream.h (struct lstream): * marker.c: * marker.c (finalize_marker): * marker.c (compute_buffer_marker_usage): * mule-charset.c: * mule-charset.c (make_charset): * mule-charset.c (compute_charset_usage): * objects-impl.h (struct Lisp_Color_Instance): * objects-impl.h (struct Lisp_Font_Instance): * objects-tty-impl.h (struct tty_color_instance_data): * objects-tty-impl.h (struct tty_font_instance_data): * objects-tty.c (tty_initialize_color_instance): * objects-tty.c (tty_initialize_font_instance): * objects.c (finalize_color_instance): * objects.c (Fmake_color_instance): * objects.c (finalize_font_instance): * objects.c (Fmake_font_instance): * objects.c (reinit_vars_of_objects): * opaque.c: * opaque.c (sizeof_opaque): * opaque.c (make_opaque_ptr): * opaque.c (free_opaque_ptr): * opaque.h: * opaque.h (Lisp_Opaque): * opaque.h (Lisp_Opaque_Ptr): * print.c (printing_unreadable_lcrecord): * print.c (external_object_printer): * print.c (debug_p4): * process.c (finalize_process): * process.c (make_process_internal): * procimpl.h (struct Lisp_Process): * rangetab.c (Fmake_range_table): * rangetab.c (Fcopy_range_table): * rangetab.h (struct Lisp_Range_Table): * scrollbar.c: * scrollbar.c (create_scrollbar_instance): * scrollbar.c (compute_scrollbar_instance_usage): * scrollbar.h (struct scrollbar_instance): * specifier.c (finalize_specifier): * specifier.c (sizeof_specifier): * specifier.c (set_specifier_caching): * specifier.h (struct Lisp_Specifier): * specifier.h (struct specifier_caching): * symeval.h: * symeval.h (SYMBOL_VALUE_MAGIC_P): * symeval.h (DEFVAR_SYMVAL_FWD): * symsinit.h: * syntax.c (init_buffer_syntax_cache): * syntax.h (struct syntax_cache): * toolbar.c: * toolbar.c (allocate_toolbar_button): * toolbar.c (update_toolbar_button): * toolbar.h (struct toolbar_button): * tooltalk.c (struct Lisp_Tooltalk_Message): * tooltalk.c (make_tooltalk_message): * tooltalk.c (struct Lisp_Tooltalk_Pattern): * tooltalk.c (make_tooltalk_pattern): * ui-gtk.c: * ui-gtk.c (allocate_ffi_data): * ui-gtk.c (emacs_gtk_object_finalizer): * ui-gtk.c (allocate_emacs_gtk_object_data): * ui-gtk.c (allocate_emacs_gtk_boxed_data): * ui-gtk.h: * window-impl.h (struct window): * window-impl.h (struct window_mirror): * window.c (finalize_window): * window.c (allocate_window): * window.c (new_window_mirror): * window.c (mark_window_as_deleted): * window.c (make_dummy_parent): * window.c (compute_window_mirror_usage): * window.c (compute_window_usage): Overall point of this change and previous ones in this repository: (1) Introduce new, clearer terminology: everything other than int or char is a "record" object, which comes in two types: "normal objects" and "frob-block objects". Fix up all places that referred to frob-block objects as "simple", "basic", etc. (2) Provide an advertised interface for doing operations on Lisp objects, including creating new types, that is clean and consistent in its naming, uses the above-referenced terms and avoids referencing "lrecords", "old lcrecords", etc., which should hide under the surface. (3) Make the size_in_bytes and finalizer methods take a Lisp_Object rather than a void * for consistency with other methods. (4) Separate finalizer method into finalizer and disksaver, so that normal finalize methods don't have to worry about disksaving. Other specifics: (1) Renaming: LISP_OBJECT_HEADER -> NORMAL_LISP_OBJECT_HEADER ALLOC_LISP_OBJECT -> ALLOC_NORMAL_LISP_OBJECT implementation->basic_p -> implementation->frob_block_p ALLOCATE_FIXED_TYPE_AND_SET_IMPL -> ALLOC_FROB_BLOCK_LISP_OBJECT *FCCONFIG*, wrap_fcconfig -> *FC_CONFIG*, wrap_fc_config *FCPATTERN*, wrap_fcpattern -> *FC_PATTERN*, wrap_fc_pattern (the last two changes make the naming of these macros consistent with the naming of all other macros, since the objects are named fc-config and fc-pattern with a hyphen) (2) Lots of documentation fixes in lrecord.h. (3) Eliminate macros for copying, freeing, zeroing objects, getting their storage size. Instead, new functions: zero_sized_lisp_object() zero_nonsized_lisp_object() lisp_object_storage_size() free_normal_lisp_object() (copy_lisp_object() already exists) LISP_OBJECT_FROB_BLOCK_P() (actually a macro) Eliminated: free_lrecord() zero_lrecord() copy_lrecord() copy_sized_lrecord() old_copy_lcrecord() old_copy_sized_lcrecord() old_zero_lcrecord() old_zero_sized_lcrecord() LISP_OBJECT_STORAGE_SIZE() COPY_SIZED_LISP_OBJECT() COPY_SIZED_LCRECORD() COPY_LISP_OBJECT() ZERO_LISP_OBJECT() FREE_LISP_OBJECT() (4) Catch the remaining places where lrecord stuff was used directly and use the advertised interface, e.g. alloc_sized_lrecord() -> ALLOC_SIZED_LISP_OBJECT(). (5) Make certain statically-declared pseudo-objects (buffer_local_flags, console_local_flags) have their lheader initialized correctly, so things like copy_lisp_object() can work on them. Make extent_auxiliary_defaults a proper heap object Vextent_auxiliary_defaults, and make extent auxiliaries dumpable so that this object can be dumped. allocate_extent_auxiliary() now just creates the object, and attach_extent_auxiliary() creates an extent auxiliary and attaches to an extent, like the old allocate_extent_auxiliary(). (6) Create EXTENT_AUXILIARY_SLOTS macro, similar to the foo-slots.h files but in a macro instead of a file. The purpose is to avoid duplication when iterating over all the slots in an extent auxiliary. Use it. (7) In lstream.c, don't zero out object after allocation because allocation routines take care of this. (8) In marker.c, fix a mistake in computing marker overhead. (9) In print.c, clean up printing_unreadable_lcrecord(), external_object_printer() to avoid lots of ifdef NEW_GC's. (10) Separate toolbar-button allocation into a separate allocate_toolbar_button() function for use in the example code in lrecord.h. 2010-01-20 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (very_old_free_lcrecord): * alloc.c (disksave_object_finalization_1): * alloc.c (make_lcrecord_list): * alloc.c (alloc_managed_lcrecord): * alloc.c (free_managed_lcrecord): * alloc.c (sweep_lcrecords_1): * buffer.c: * bytecode.c: * bytecode.c (Fcompiled_function_p): * chartab.c: * console-impl.h: * console-impl.h (CONSOLE_TYPE_P): * console.c: * console.c (set_quit_events): * data.c: * data.c (Fmake_ephemeron): * database.c: * database.c (finalize_database): * database.c (Fclose_database): * device-msw.c: * device-msw.c (finalize_devmode): * device-msw.c (allocate_devmode): * device.c: * elhash.c: * elhash.c (finalize_hash_table): * eval.c: * eval.c (bind_multiple_value_limits): * event-stream.c: * event-stream.c (finalize_command_builder): * events.c: * events.c (mark_event): * extents.c: * extents.c (finalize_extent_info): * extents.c (uninit_buffer_extents): * faces.c: * file-coding.c: * file-coding.c (finalize_coding_system): * file-coding.h: * file-coding.h (struct coding_system_methods): * file-coding.h (struct detector): * floatfns.c: * floatfns.c (extract_float): * fns.c: * fns.c (Fidentity): * font-mgr.c (finalize_fc_pattern): * font-mgr.c (finalize_fc_config): * frame.c: * glyphs.c: * glyphs.c (finalize_image_instance): * glyphs.c (unmap_subwindow_instance_cache_mapper): * gui.c: * gui.c (gui_error): * keymap.c: * lisp.h (struct Lisp_Symbol): * lrecord.h: * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER): * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): * lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (MAKE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_GENERAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_GENERAL_LISP_OBJECT): * lrecord.h (MAKE_MODULE_LISP_OBJECT): * lstream.c: * lstream.c (finalize_lstream): * lstream.c (disksave_lstream): * marker.c: * marker.c (finalize_marker): * mule-charset.c (make_charset): * number.c: * objects.c: * objects.c (finalize_color_instance): * objects.c (finalize_font_instance): * opaque.c: * opaque.c (make_opaque_ptr): * process-nt.c: * process-nt.c (nt_finalize_process_data): * process-nt.c (nt_deactivate_process): * process.c: * process.c (finalize_process): * procimpl.h (struct process_methods): * scrollbar.c: * scrollbar.c (free_scrollbar_instance): * specifier.c (finalize_specifier): * symbols.c: * toolbar.c: * toolbar.c (Ftoolbar_button_p): * tooltalk.c: * ui-gtk.c: * ui-gtk.c (emacs_gtk_object_finalizer): * ui-gtk.c (allocate_emacs_gtk_boxed_data): * window.c: * window.c (finalize_window): * window.c (mark_window_as_deleted): Separate out regular and disksave finalization. Instead of a FOR_DISKSAVE argument to the finalizer, create a separate object method `disksaver'. Make `finalizer' have only one argument. Go through and separate out all finalize methods into finalize and disksave. Delete lots of thereby redundant disksave checking. Delete places that signal an error if we attempt to disksave -- all of these objects are non-dumpable and we will get an error from pdump anyway if we attempt to dump them. After this is done, only one object remains that has a disksave method -- lstream. Change DEFINE_*_LISP_OBJECT_WITH_PROPS to DEFINE_*_GENERAL_LISP_OBJECT, which is used for specifying either property methods or disksave methods (or in the future, any other less-used methods). Remove the for_disksave argument to finalize_process_data. Don't provide a disksaver for processes because no one currently needs it. Clean up various places where objects didn't provide a print method. It was made mandatory in previous changes, and all methods now either provide their own print method or use internal_object_printer or external_object_printer. Change the definition of CONSOLE_LIVE_P to use the contype enum rather than looking into the conmeths structure -- in some weird situations with dead objects, the conmeths structure is NULL, and printing such objects from debug_print() will crash if we try to look into the conmeths structure. 2005-11-22 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (assert_proper_sizing): * alloc.c (alloc_sized_lrecord_1): * alloc.c (alloc_sized_lrecord): * alloc.c (noseeum_alloc_sized_lrecord): * alloc.c (alloc_lrecord): * alloc.c (old_alloc_sized_lcrecord): * alloc.c (make_vector_internal): * alloc.c (make_bit_vector_internal): * alloc.c (alloc_automanaged_sized_lcrecord): * buffer.c (allocate_buffer): * buffer.c (DEFVAR_BUFFER_LOCAL_1): * buffer.c (common_init_complex_vars_of_buffer): * casetab.c (allocate_case_table): * chartab.c (Fmake_char_table): * chartab.c (make_char_table_entry): * chartab.c (copy_char_table_entry): * chartab.c (Fcopy_char_table): * console.c (allocate_console): * console.c (DEFVAR_CONSOLE_LOCAL_1): * console.c (common_init_complex_vars_of_console): * data.c (make_weak_list): * data.c (make_weak_box): * data.c (make_ephemeron): * database.c (allocate_database): * device-msw.c (allocate_devmode): * device.c (allocate_device): * dialog-msw.c (handle_question_dialog_box): * elhash.c (make_general_lisp_hash_table): * elhash.c (Fcopy_hash_table): * emacs.c (main_1): * event-stream.c: * event-stream.c (allocate_command_builder): * event-stream.c (free_command_builder): * event-stream.c (mark_timeout): * event-stream.c (event_stream_generate_wakeup): * event-stream.c (event_stream_resignal_wakeup): * event-stream.c (event_stream_disable_wakeup): * event-stream.c (reinit_vars_of_event_stream): * extents.c (allocate_extent_auxiliary): * extents.c (allocate_extent_info): * extents.c (copy_extent): * faces.c (allocate_face): * file-coding.c (allocate_coding_system): * frame.c (allocate_frame_core): * glyphs.c (allocate_image_instance): * glyphs.c (allocate_glyph): * gui.c (allocate_gui_item): * keymap.c (make_keymap): * lrecord.h: * lrecord.h (ALLOC_LCRECORD): * lrecord.h (ALLOC_SIZED_LCRECORD): * lrecord.h (struct old_lcrecord_header): * lrecord.h (old_alloc_lcrecord_type): * lrecord.h (alloc_lrecord_type): * lrecord.h (noseeum_alloc_lrecord_type): * lstream.c (Lstream_new): * mule-charset.c (make_charset): * objects.c (Fmake_color_instance): * objects.c (Fmake_font_instance): * objects.c (reinit_vars_of_objects): * opaque.c (make_opaque): * opaque.c (make_opaque_ptr): * process.c (make_process_internal): * rangetab.c (Fmake_range_table): * rangetab.c (Fcopy_range_table): * scrollbar.c (create_scrollbar_instance): * specifier.c (make_specifier_internal): * symbols.c (Fdefvaralias): * toolbar.c (update_toolbar_button): * tooltalk.c (make_tooltalk_message): * tooltalk.c (make_tooltalk_pattern): * ui-gtk.c (allocate_ffi_data): * ui-gtk.c (allocate_emacs_gtk_object_data): * ui-gtk.c (allocate_emacs_gtk_boxed_data): * window.c (allocate_window): * window.c (new_window_mirror): * window.c (make_dummy_parent): Create a simpler interface for allocating/declaring Lisp objects; documented in lrecord.h. ALLOC_LCRECORD_TYPE -> ALLOC_LISP_OBJECT (returns a Lisp object rather than a pointer), BASIC_ALLOC_LCRECORD -> ALLOC_SIZED_LISP_OBJECT DEFINE_LRECORD_IMPLEMENTATION -> DEFINE_*_LISP_OBJECT DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION -> DEFINE_*SIZABLE_*LISP_OBJECT DEFINE_LRECORD_*IMPLEMENTATION_WITH_PROPS -> DEFINE_*GENERAL_LISP_OBJECT DEFINE_BASIC_LRECORD_IMPLEMENTATION -> DEFINE_*FROB_BLOCK_LISP_OBJECT DEFINE_DUMPABLE_*/DEFINE_NODUMP_* instead of a 0 or 1 dumpable flag DEFINE_*INTERNAL_* for "internal" Lisp objects (shouldn't escape to Lisp) DEFINE_EXTERNAL_* -> DEFINE_MODULE_* MAKE_LRECORD_IMPLEMENTATION -> MAKE_LISP_OBJECT MAKE_EXTERNAL_LRECORD_IMPLEMENTATION -> MAKE_MODULE_LISP_OBJECT DECLARE_LRECORD -> DECLARE_LISP_OBJECT INIT_LRECORD_IMPLEMENTATION -> INIT_LISP_OBJECT alloc_lrecord -> alloc_sized_lrecord (since it takes a size) Dynarr_newf, Dynarr_lisp_newf: takes a Bytecount instead of an int 2010-03-05 Ben Wing <ben@xemacs.org> * mule-coding.c: * mule-coding.c (iso2022_encode): Horrible bug: `escape-quoted' was failing to escape-quote special characters in the 0x80 - 0x9F range. Who knows what breakage ensued? SAME BUG IN XEMACS 21.4; MUST BE FIXED THERE TOO. 2010-03-03 Ben Wing <ben@xemacs.org> * lrecord.h: Fix outdated comment. 2010-03-03 Ben Wing <ben@xemacs.org> * emacs.c: * emacs.c (assert_equal_failed): * lisp.h: * lisp.h (assert_equal): New fun assert_equal, asserting that two values == each other, and printing out both values upon failure. * frame-gtk.c (gtk_initialize_frame_size): * frame-impl.h: * frame-impl.h (FRAME_TOP_INTERNAL_BORDER_START): * frame-impl.h (FRAME_BOTTOM_INTERNAL_BORDER_START): * frame-impl.h (FRAME_LEFT_INTERNAL_BORDER_START): * frame-impl.h (FRAME_PANED_TOP_EDGE): * frame-impl.h (FRAME_NONPANED_SIZE): * frame-x.c (x_initialize_frame_size): * frame.c: * gutter.c (get_gutter_coords): * gutter.c (calculate_gutter_size): * gutter.h: * gutter.h (WINDOW_REAL_TOP_GUTTER_BOUNDS): * gutter.h (FRAME_TOP_GUTTER_BOUNDS): * input-method-xlib.c: * input-method-xlib.c (XIM_SetGeometry): * redisplay-output.c (clear_left_border): * redisplay-output.c (clear_right_border): * redisplay-output.c (redisplay_output_pixmap): * redisplay-output.c (redisplay_clear_region): * redisplay-output.c (redisplay_clear_top_of_window): * redisplay-output.c (redisplay_clear_to_window_end): * redisplay-xlike-inc.c (XLIKE_clear_frame): * redisplay.c: * redisplay.c (UPDATE_CACHE_RETURN): * redisplay.c (pixel_to_glyph_translation): * toolbar.c (update_frame_toolbars_geometry): * window.c (Fwindow_pixel_edges): Get rid of some redundant macros. Consistently use the FRAME_TOP_*_START, FRAME_RIGHT_*_END, etc. format. Rename FRAME_*_BORDER_* to FRAME_*_INTERNAL_BORDER_*. Comment out FRAME_BOTTOM_* for gutters and the paned area due to the uncertainty over where the paned area actually begins. (Eventually we should probably move the gutters outside the minibuffer so that the paned area is contiguous.) Use FRAME_PANED_* more often in the code to make things clearer. Update the diagram to show that the bottom gutter is inside the minibuffer (!) and that there are "junk boxes" when you have left and/or right gutters (dead boxes that are mistakenly left uncleared, unlike the corresponding scrollbar dead boxes). Update the text appropriately to cover the bottom gutter position, etc. Rewrite gutter-geometry code to use the FRAME_*_GUTTER_* in place of equivalent expressions referencing other frame elements, to make the code more portable in case we move around the gutter location. Cleanup FRAME_*_GUTTER_BOUNDS() in gutter.h. Add some #### GEOM! comments where I think code is incorrect -- typically, it wasn't fixed up properly when the gutter was added. Some cosmetic changes. 2010-03-02 Ben Wing <ben@xemacs.org> * lisp.h: * text.h: Move inclusion point of text.h earlier in lisp.h -- just before the definition of characters, which needs some of the stuff in text.h. With text.h later, some basic character properties had to be defined in lisp.h -- put them back into text.h where they belong. Move some text in lisp.h at the point of text.h inclusion into text.h -- it serves as a mini-introduction. 2010-03-02 Ben Wing <ben@xemacs.org> * Makefile.in.in: * Makefile.in.in (objs): glyphs-shared.o, glyphs-eimage.o only needed when HAVE_WINDOW_SYSTEM. glyphs-widget.o should be too, but we need a bit of work ifdeffing out the subwindow stuff from redisplay.c et al. * bytecode.c (init_opcode_table_multi_op): Change var name to avoid shadowing with `basename'. * emacs.c (main_1): Don't call init/etc. routines for glyphs-shared, glyphs-eimage unless HAVE_WINDOW_SYSTEM is defined. * linuxplay.c: * linuxplay.c (sighandler): * vdb-posix.c (vdb_fault_handler): Use const for variables holding string constants to avoid C++ warnings. 2010-03-02 Jerry James <james@xemacs.org> * lread.c (read_atom): Signal a read error upon encountering a ratio constant with a zero denominator. 2010-03-03 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fsubstring): Removed. * search.c (Freplace_match): * minibuf.c (Ftry_completion): * lisp.h: * keymap.c (ensure_meta_prefix_char_keymapp): * dired.c (user_name_completion, file_name_completion): * console-x.c (x_canonicalize_console_connection): * bytecode.c (Bsubseq): * bytecode-ops.h (subseq): Move #'substring to Lisp, as an alias for #'subseq; change all C Fsubstring() calls to Fsubseq(), change the Bsubstring bytecode to Bsubseq. Motivation; not accepting vectors in #'substring is incompatible with GNU, and Common Lisp prefers #'subseq, it has no #'substring. 2010-03-02 Aidan Kehoe <kehoea@parhasard.net> * eval.c (print_multiple_value): Say #<INTERNAL OBJECT (XEmacs bug?) ...> when printing these, for consistency with the rest of the print code. 2010-03-01 Aidan Kehoe <kehoea@parhasard.net> * lisp.h (PARSE_KEYWORDS): New macro, for parsing keyword arguments from C subrs. * elhash.c (Fmake_hash_table): Use it. * general-slots.h (Q_allow_other_keys): Add this symbol. * eval.c (non_nil_allow_other_keys_p): (invalid_keyword_argument): New functions, called from the keyword argument parsing code. * data.c (init_errors_once_early): Add the new invalid-keyword-argument error here. 2010-02-26 Aidan Kehoe <kehoea@parhasard.net> * file-coding.c (Fmake_coding_system_internal): Be somewhat clearer in this docstring, especially for the sake of people running non-Mule builds who will see this docstring when they do F1 f make-coding-system RET. 2010-02-25 Didier Verna <didier@xemacs.org> The background-placement face property. * console-x-impl.h (struct x_frame): Add new slots x and y. * console-x-impl.h (FRAME_X_X, FRAME_X_Y): New slot accessors. * console-gtk-impl.h: Fake something similar for potential port. * frame-x.c (x_get_frame_text_position): New function. * frame-x.c (x_init_frame_3): Use it. * event-Xt.c (emacs_Xt_handle_magic_event): Eat spurious ConfigureNotify events, get the frame position and mark frame faces changed. * objects-impl.h: The face_background_placement_specifier structure and its accessors. * objects.c: New symbols Qabsolute and Qrelative. * objects.c (face_background_placement_create): * objects.c (face_background_placement_mark): * objects.c (face_background_placement_instantiate): * objects.c (face_background_placement_validate): * objects.c (face_background_placement_after_change): * objects.c (set_face_background_placement_attached_to): New. * objects.h (set_face_background_palcement_attached_to): Declare the one above. * objects.c (syms_of_objects): * objects.c (specifier_type_create_objects): * objects.c (reinit_specifier_type_create_objects): * objects.c (reinit_vars_of_objects): Update for the modifications above. * console-xlike-inc.h (XLIKE_GC_TS_X_ORIGIN, XLIKE_GC_TS_X_ORIGIN): New X11/Gtk compatibility macros. * redisplay-xlike-inc.c (XLIKE_get_gc): Add a background placement argument and handle it. * gtk-glue.c (face_to_gc): * redisplay-xlike-inc.c (XLIKE_output_string): * redisplay-xlike-inc.c (XLIKE_output_pixmap): * redisplay-xlike-inc.c (XLIKE_output_blank): * redisplay-xlike-inc.c (XLIKE_output_horizontal_line): * redisplay-xlike-inc.c (XLIKE_output_eol_cursor): Update accordingly. * console-impl.h (struct console_methods): Add a background placement (Lisp_Object) argument to the clear_region method. * console-stream.c (stream_clear_region): * redisplay-tty.c (tty_clear_region): * redisplay-msw.c (mswindows_clear_region): * redisplay-xlike-inc.c (XLIKE_clear_region): Update accordingly. * redisplay-output.c (redisplay_clear_region): Handle the background placement property and update the call to the clear_region method. * faces.h (struct Lisp_Face): * faces.h (struct face_cachel): Add a background placement slot. * faces.h (WINDOW_FACE_CACHEL_BACKGROUND_PLACEMENT): New accessor. * faces.c (mark_face): * faces.c (face_equal): * faces.c (face_getprop): * faces.c (face_putprop): * faces.c (face_remprop): * faces.c (face_plist): * faces.c (reset_face): * faces.c (mark_face_cachels): * faces.c (update_face_cachel_data): * faces.c (merge_face_cachel_data): * faces.c (reset_face_cachel): * faces.c (Fmake_face): * faces.c (Fcopy_face): Handle the background placement property. * faces.c (syms_of_faces): * faces.c (vars_of_faces): * faces.c (complex_vars_of_faces): Update accordingly. 2010-02-25 Ben Wing <ben@xemacs.org> * frame-impl.h: Create some new macros for more clearly getting the size/edges of various rectangles surrounding the paned area. * frame.c (change_frame_size_1): Use the new macros. Clean up change_frame_size_1 and make sure the internal border width gets taken into account -- that was what was causing the clipped bottom and right. 2010-02-25 Ben Wing <ben@xemacs.org> * EmacsFrame.c (EmacsFrameSetValues): * frame-impl.h: * frame-impl.h (struct frame): * frame-impl.h (FRAME_THEORETICAL_TOP_TOOLBAR_HEIGHT): * frame-impl.h (FRAME_THEORETICAL_TOP_TOOLBAR_BORDER_WIDTH): * frame-impl.h (FRAME_REAL_TOP_TOOLBAR_HEIGHT): * frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH): * frame-impl.h (FRAME_REAL_TOP_TOOLBAR_VISIBLE): * frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BOUNDS): * frame.h: * frame.h (enum edge_pos): * gutter.c: * gutter.c (get_gutter_coords): * gutter.c (display_boxes_in_gutter_p): * gutter.c (construct_window_gutter_spec): * gutter.c (calculate_gutter_size_from_display_lines): * gutter.c (calculate_gutter_size): * gutter.c (output_gutter): * gutter.c (clear_gutter): * gutter.c (mark_gutters): * gutter.c (gutter_extent_signal_changed_region_maybe): * gutter.c (update_gutter_geometry): * gutter.c (update_frame_gutter_geometry): * gutter.c (update_frame_gutters): * gutter.c (reset_gutter_display_lines): * gutter.c (redraw_exposed_gutter): * gutter.c (redraw_exposed_gutters): * gutter.c (free_frame_gutters): * gutter.c (decode_gutter_position): * gutter.c (Fset_default_gutter_position): * gutter.c (Fgutter_pixel_width): * gutter.c (Fgutter_pixel_height): * gutter.c (recompute_overlaying_specifier): * gutter.c (gutter_specs_changed_1): * gutter.c (gutter_specs_changed): * gutter.c (top_gutter_specs_changed): * gutter.c (bottom_gutter_specs_changed): * gutter.c (left_gutter_specs_changed): * gutter.c (right_gutter_specs_changed): * gutter.c (gutter_geometry_changed_in_window): * gutter.c (init_frame_gutters): * gutter.c (specifier_vars_of_gutter): * gutter.h: * gutter.h (WINDOW_REAL_TOP_GUTTER_BOUNDS): * gutter.h (FRAME_TOP_GUTTER_BOUNDS): * lisp.h (enum edge_style): * native-gtk-toolbar.c: * native-gtk-toolbar.c (gtk_output_toolbar): * native-gtk-toolbar.c (gtk_clear_toolbar): * native-gtk-toolbar.c (gtk_output_frame_toolbars): * native-gtk-toolbar.c (gtk_initialize_frame_toolbars): * toolbar-msw.c: * toolbar-msw.c (TOOLBAR_HANDLE): * toolbar-msw.c (allocate_toolbar_item_id): * toolbar-msw.c (mswindows_clear_toolbar): * toolbar-msw.c (mswindows_output_toolbar): * toolbar-msw.c (mswindows_move_toolbar): * toolbar-msw.c (mswindows_redraw_exposed_toolbars): * toolbar-msw.c (mswindows_initialize_frame_toolbars): * toolbar-msw.c (mswindows_output_frame_toolbars): * toolbar-msw.c (mswindows_clear_frame_toolbars): * toolbar-msw.c (DELETE_TOOLBAR): * toolbar-msw.c (mswindows_free_frame_toolbars): * toolbar-msw.c (mswindows_get_toolbar_button_text): * toolbar-xlike.c: * toolbar-xlike.c (__prepare_button_area): * toolbar-xlike.c (XLIKE_OUTPUT_BUTTONS_LOOP): * toolbar-xlike.c (xlike_output_toolbar): * toolbar-xlike.c (xlike_clear_toolbar): * toolbar-xlike.c (xlike_output_frame_toolbars): * toolbar-xlike.c (xlike_clear_frame_toolbars): * toolbar-xlike.c (xlike_redraw_exposed_toolbar): * toolbar-xlike.c (xlike_redraw_exposed_toolbars): * toolbar-xlike.c (xlike_redraw_frame_toolbars): * toolbar.c: * toolbar.c (decode_toolbar_position): * toolbar.c (Fset_default_toolbar_position): * toolbar.c (mark_frame_toolbar_buttons_dirty): * toolbar.c (compute_frame_toolbar_buttons): * toolbar.c (set_frame_toolbar): * toolbar.c (compute_frame_toolbars_data): * toolbar.c (update_frame_toolbars_geometry): * toolbar.c (init_frame_toolbars): * toolbar.c (get_toolbar_coords): * toolbar.c (CHECK_TOOLBAR): * toolbar.c (toolbar_buttons_at_pixpos): * toolbar.c (CTB_ERROR): * toolbar.c (recompute_overlaying_specifier): * toolbar.c (specifier_vars_of_toolbar): * toolbar.h: * toolbar.h (SET_TOOLBAR_WAS_VISIBLE_FLAG): Create new enum edge_pos with TOP_EDGE, BOTTOM_EDGE, LEFT_EDGE, RIGHT_EDGE; subsume TOP_BORDER, TOP_GUTTER, enum toolbar_pos, enum gutter_pos, etc. Create EDGE_POS_LOOP, subsuming GUTTER_POS_LOOP. Create NUM_EDGES, use in many places instead of hardcoded '4'. Instead of top_toolbar_was_visible, bottom_toolbar_was_visible, etc. make an array toolbar_was_visible[NUM_EDGES]. This increases the frame size by 15 bytes or so (could be 3 if we use Boolbytes) but hardly seems w to matter -- frames are heavy weight objects anyway. Same with top_gutter_was_visible, etc. Remove duplicated SET_TOOLBAR_WAS_VISIBLE_FLAG and put defn in one place (toolbar.h). 2010-02-24 Didier Verna <didier@xemacs.org> Modify XLIKE_get_gc's prototype. * redisplay-xlike-inc.c (XLIKE_get_gc): Take a frame instead of a device as first argument. * redisplay-xlike-inc.c (XLIKE_output_string): Update caller. * redisplay-xlike-inc.c (XLIKE_output_pixmap): Ditto. * redisplay-xlike-inc.c (XLIKE_output_blank): Ditto. * redisplay-xlike-inc.c (XLIKE_output_horizontal_line): Ditto. * redisplay-xlike-inc.c (XLIKE_clear_region): Ditto. * redisplay-xlike-inc.c (XLIKE_output_eol_cursor): Ditto. * console-gtk.h (gtk_get_gc): Take a frame instead of a device as first argument. * gtk-glue.c (face_to_gc): Update caller. 2010-02-24 Didier Verna <didier@xemacs.org> * glyphs.c: Clarify comment about potential_pixmap_file_instantiator. * glyphs.c (xbm_mask_file_munging): Clarify comment, remove unreachable condition and provide a cuple of assertions. * glyphs.c (xbm_normalize): Clarify comments, error on mask file not found. * glyphs.c (xface_normalize): Ditto, and handle inline data properly. 2010-02-22 Ben Wing <ben@xemacs.org> * EmacsFrame.c: * Makefile.in.in (x_objs): * Makefile.in.in (mswindows_objs): * Makefile.in.in (tty_objs): * Makefile.in.in (gtk_objs): * Makefile.in.in (objs): * console-tty.h: * console-x-impl.h: * console-x-impl.h (struct x_device): * console-x.h: * console-xlike-inc.h: * depend: * device-gtk.c: * device-msw.c: * device-x.c: * device-x.c (x_init_device): * device-x.c (x_finish_init_device): * device.c: * devslots.h (MARKED_SLOT): * emacs.c (main_1): * event-Xt.c: * event-gtk.c: * event-msw.c: * faces.c: * font-mgr.c: * fontcolor-gtk-impl.h: * fontcolor-gtk.c: * fontcolor-gtk.c (syms_of_fontcolor_gtk): * fontcolor-gtk.c (console_type_create_fontcolor_gtk): * fontcolor-gtk.c (vars_of_fontcolor_gtk): * fontcolor-gtk.h: * fontcolor-impl.h: * fontcolor-msw-impl.h: * fontcolor-msw.c: * fontcolor-msw.c (syms_of_fontcolor_mswindows): * fontcolor-msw.c (console_type_create_fontcolor_mswindows): * fontcolor-msw.c (reinit_vars_of_fontcolor_mswindows): * fontcolor-msw.c (vars_of_fontcolor_mswindows): * fontcolor-msw.h: * fontcolor-msw.h (mswindows_color_to_string): * fontcolor-tty-impl.h: * fontcolor-tty.c: * fontcolor-tty.c (syms_of_fontcolor_tty): * fontcolor-tty.c (console_type_create_fontcolor_tty): * fontcolor-tty.c (vars_of_fontcolor_tty): * fontcolor-tty.h: * fontcolor-x-impl.h: * fontcolor-x.c: * fontcolor-x.c (syms_of_fontcolor_x): * fontcolor-x.c (console_type_create_fontcolor_x): * fontcolor-x.c (vars_of_fontcolor_x): * fontcolor-x.c (Xatoms_of_fontcolor_x): * fontcolor-x.h: * fontcolor.c: * fontcolor.c (syms_of_fontcolor): * fontcolor.c (specifier_type_create_fontcolor): * fontcolor.c (reinit_specifier_type_create_fontcolor): * fontcolor.c (reinit_vars_of_fontcolor): * fontcolor.c (vars_of_fontcolor): * fontcolor.h: * fontcolor.h (set_face_boolean_attached_to): * frame-gtk.c: * frame-x.c: * glyphs-eimage.c: * glyphs-gtk.c: * glyphs-msw.c: * glyphs-widget.c: * glyphs-x.c: * glyphs.c: * gtk-glue.c: * gtk-glue.c (xemacs_type_register): * gtk-xemacs.c: * inline.c: * intl-win32.c: * lisp.h: * lrecord.h: * mule-charset.c: * native-gtk-toolbar.c: * redisplay-msw.c: * redisplay-tty.c: * redisplay.c: * select-x.c: * select.c: * symsinit.h: * toolbar-msw.c: * toolbar-msw.c (TOOLBAR_ITEM_ID_BITS): * toolbar-x.c: * ui-gtk.c: * window.c: Rename objects*.[ch] -> fontcolor*.[ch]. Fix up all references to the old files (e.g. in #include statements, Makefiles, functions like syms_of_objects_x(), etc.). 2010-02-22 Ben Wing <ben@xemacs.org> * .gdbinit.in.in: * Makefile.in.in (batch_test_emacs): test-harness.el is in lisp directory now so change how we call it. 2010-02-22 Ben Wing <ben@xemacs.org> * alloc.c (object_memory_usage_stats): Remove unused var. 2010-02-21 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC): * alloc.c (struct): * alloc.c (tick_lrecord_stats): * alloc.c (tick_lcrecord_stats): * alloc.c (sweep_lcrecords_1): * alloc.c (COUNT_FROB_BLOCK_USAGE): * alloc.c (SWEEP_FIXED_TYPE_BLOCK_1): * alloc.c (free_cons): * alloc.c (free_key_data): * alloc.c (free_button_data): * alloc.c (free_motion_data): * alloc.c (free_process_data): * alloc.c (free_timeout_data): * alloc.c (free_magic_data): * alloc.c (free_magic_eval_data): * alloc.c (free_eval_data): * alloc.c (free_misc_user_data): * alloc.c (free_marker): * alloc.c (gc_sweep_1): * alloc.c (HACK_O_MATIC): * alloc.c (FROB): * alloc.c (object_memory_usage_stats): * alloc.c (Fgarbage_collect): * dumper.c: * dumper.c (pdump_objects_unmark): * lrecord.h: * lrecord.h (enum lrecord_alloc_status): Fixes to memory-usage-tracking code, etc. (1) Incorporate NEW_GC stuff into FREE_FIXED_TYPE_WHEN_NOT_IN_GC to avoid duplication. (2) Rewrite tick_lcrecord_stats() to include separate tick_lrecord_stats(); use in dumper.c to note pdumped objects. (3) Instead of handling frob-block objects specially in object_memory_usage_stats(), have SWEEP_FIXED_TYPE_BLOCK_1 increment the stats in lrecord_stats[] so that they get handled like other objects. (4) Pluralize entry as entries, etc. 2010-02-21 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (pluralize_word): New function to pluralize a word. * alloc.c (pluralize_and_append): New function. * alloc.c (object_memory_usage_stats): Clean up duplication. 2010-02-21 Vin Shelton <acs@xemacs.org> * events.c (event_pixel_translation): Simplify assertion for Visual C 6. 2010-02-21 Ben Wing <ben@xemacs.org> * gc.c (kkcc_marking): Fix compile error. * mc-alloc.c: #if 0 out some unused functions. 2010-02-21 Ben Wing <ben@xemacs.org> * extents.c (process_extents_for_insertion_mapper): Assertion wasn't quite set up correctly in previous patch. 2010-02-20 Ben Wing <ben@xemacs.org> * EmacsFrame.c: * EmacsFrame.c (EmacsFrameRecomputeCellSize): * alloca.c (i00afunc): * buffer.c: * buffer.c (MARKED_SLOT): * buffer.c (complex_vars_of_buffer): * cm.c: * cm.c (cmcheckmagic): * console.c: * console.c (MARKED_SLOT): * device-x.c: * device-x.c (x_get_visual_depth): * emacs.c (sort_args): * eval.c (throw_or_bomb_out): * event-stream.c: * event-stream.c (Fadd_timeout): * event-stream.c (Fadd_async_timeout): * event-stream.c (Frecent_keys): * events.c: * events.c (Fdeallocate_event): * events.c (event_pixel_translation): * extents.c: * extents.c (process_extents_for_insertion_mapper): * fns.c (Fbase64_encode_region): * fns.c (Fbase64_encode_string): * fns.c (Fbase64_decode_region): * fns.c (Fbase64_decode_string): * font-lock.c: * font-lock.c (find_context): * frame-x.c: * frame-x.c (x_wm_mark_shell_size_user_specified): * frame-x.c (x_wm_mark_shell_position_user_specified): * frame-x.c (x_wm_set_shell_iconic_p): * frame-x.c (x_wm_set_cell_size): * frame-x.c (x_wm_set_variable_size): * frame-x.c (x_wm_store_class_hints): * frame-x.c (x_wm_maybe_store_wm_command): * frame-x.c (x_initialize_frame_size): * frame.c (delete_frame_internal): * frame.c (change_frame_size_1): * free-hook.c (check_free): * free-hook.c (note_block_input): * free-hook.c (log_gcpro): * gccache-gtk.c (gc_cache_lookup): * gccache-x.c: * gccache-x.c (gc_cache_lookup): * glyphs-gtk.c: * glyphs-gtk.c (init_image_instance_from_gdk_pixmap): * glyphs-x.c: * glyphs-x.c (extract_xpm_color_names): * insdel.c: * insdel.c (move_gap): * keymap.c: * keymap.c (keymap_lookup_directly): * keymap.c (keymap_delete_inverse_internal): * keymap.c (accessible_keymaps_mapper_1): * keymap.c (where_is_recursive_mapper): * lisp.h: * lstream.c (make_lisp_buffer_stream_1): * macros.c: * macros.c (pop_kbd_macro_event): * mc-alloc.c (remove_page_from_used_list): * menubar-x.c: * menubar-x.c (set_frame_menubar): * ralloc.c: * ralloc.c (obtain): * ralloc.c (relinquish): * ralloc.c (relocate_blocs): * ralloc.c (resize_bloc): * ralloc.c (r_alloc_free): * ralloc.c (r_re_alloc): * ralloc.c (r_alloc_thaw): * ralloc.c (init_ralloc): * ralloc.c (Free_Addr_Block): * scrollbar-x.c: * scrollbar-x.c (x_update_scrollbar_instance_status): * sunplay.c (init_device): * unexnt.c: * unexnt.c (read_in_bss): * unexnt.c (map_in_heap): * window.c: * window.c (real_window): * window.c (window_display_lines): * window.c (window_display_buffer): * window.c (set_window_display_buffer): * window.c (unshow_buffer): * window.c (Fget_lru_window): if (...) ABORT(); ---> assert(); More specifically: if (x == y) ABORT (); --> assert (x != y); if (x != y) ABORT (); --> assert (x == y); if (x > y) ABORT (); --> assert (x <= y); etc. if (!x) ABORT (); --> assert (x); if (x) ABORT (); --> assert (!x); DeMorgan's Law's applied and manually simplified: if (x && !y) ABORT (); --> assert (!x || y); if (!x || y >= z) ABORT (); --> assert (x && y < z); Checked to make sure that assert() of an expression with side effects ensures that the side effects get executed even when asserts are disabled, and add a comment about this being a requirement of any "disabled assert" expression. * depend: * make-src-depend: * make-src-depend (PrintDeps): Fix broken code in make-src-depend so it does what it was always supposed to do, which was separate out config.h and lisp.h and all the files they include into separate variables in the depend part of Makefile so that quick-build can turn off the lisp.h/config.h/text.h/etc. dependencies of the source files, to speed up recompilation. 2010-02-20 Ben Wing <ben@xemacs.org> * EmacsFrame.c (EmacsFrameRecomputeCellSize): * faces.c (default_face_font_info): * faces.c (default_face_width_and_height): * faces.c (Fface_list): * faces.h: * frame-gtk.c (gtk_set_initial_frame_size): * frame-gtk.c (gtk_set_frame_size): * frame-gtk.c (gtk_recompute_cell_sizes): * frame.c: * frame.c (frame_conversion_internal_1): * frame.c (change_frame_size_1): * frame.c (change_frame_size): * glyphs-msw.c (mswindows_combo_box_instantiate): * glyphs-widget.c (widget_instantiate): * glyphs-widget.c (tree_view_query_geometry): * glyphs-widget.c (Fwidget_logical_to_character_width): * glyphs-widget.c (Fwidget_logical_to_character_height): * indent.c (vmotion_pixels): * redisplay-output.c (get_cursor_size_and_location): * redisplay-xlike-inc.c (XLIKE_output_eol_cursor): * redisplay-xlike-inc.c (XLIKE_flash): * redisplay.c (calculate_baseline): * redisplay.c (start_with_point_on_display_line): * redisplay.c (glyph_to_pixel_translation): * redisplay.c (pixel_to_glyph_translation): * window.c (margin_width_internal): * window.c (frame_size_valid_p): * window.c (frame_pixsize_valid_p): * window.c (check_frame_size): * window.c (set_window_pixsize): * window.c (window_pixel_height_to_char_height): * window.c (window_char_height_to_pixel_height): * window.c (window_displayed_height): * window.c (window_pixel_width_to_char_width): * window.c (window_char_width_to_pixel_width): * window.c (change_window_height): * window.c (window_scroll): * window.h: IMPORTANT: Aidan and Carbon Repo, please pay attention and fix appropriately! Rename: default_face_height_and_width -> default_face_width_and_height and reverse width/height arguments. Reverse width/height arguments to the following functions: -- default_face_font_info -- default_face_height_and_width (see above) -- check_frame_size -- frame_size_valid_p (made into a static function) Fix a redisplay bug where args to default_face_height_and_width were in the wrong order. 2010-02-20 Ben Wing <ben@xemacs.org> * syswindows.h: Add table about GNU Emacs -> XEmacs Windows constants from the internals manual. * frame.c: Shrink size of diagram consistent with internals manual. * alloc.c: * compiler.h: * console.c: * events.c: * gc.c (gc_stat_start_new_gc): * gc.c (gc_stat_resume_gc): * gc.c (kkcc_marking): * gc.c (gc_1): * gc.c (gc): * objects-tty.c: * redisplay-msw.c: * redisplay-msw.c (mswindows_clear_region): * syntax.c: * syntax.c (ST_COMMENT_STYLE): * sysdep.c: Fix various compiler warnings. 2010-02-16 Ben Wing <ben@xemacs.org> * frame-impl.h: * frame-impl.h (FRAME_INTERNAL_BORDER_WIDTH): * frame-impl.h (FRAME_REAL_TOOLBAR_BOUNDS): * frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BOUNDS): * frame-impl.h (FRAME_BOTTOM_BORDER_START): * frame-impl.h (FRAME_LEFT_BORDER_START): * frame-impl.h (FRAME_RIGHT_BORDER_START): * frame.c (frame_conversion_internal_1): * frame.c (change_frame_size_1): * redisplay-output.c (clear_left_border): * redisplay-output.c (clear_right_border): * redisplay-output.c (redisplay_clear_top_of_window): * redisplay-output.c (redisplay_clear_to_window_end): * redisplay-output.c (redisplay_clear_bottom_of_window): Rename FRAME_BORDER_* to FRAME_INTERNAL_BORDER_*. Add general FRAME_INTERNAL_BORDER_SIZE(). Add FRAME_REAL_TOOLBAR_BOUNDS() to encompass the entire size of the toolbar including its border. Add specific top/left/bottom/right versions of this macro. Rewrite FRAME_*_BORDER_START and FRAME_*_BORDER_END to take into use FRAME_REAL_*_TOOLBAR_BOUNDS(). Add some comments about existing problems in frame sizing and how they might be fixed. Simplify change_frame_size_1() using the macros just created. 2010-02-15 Ben Wing <ben@xemacs.org> * frame.c (change_frame_size_1): Simplify the logic in this function. (1) Don't allow 0 as the value of height or width. The old code that tried to allow this was totally broken, anyway, so obviously this never happens any more. (2) Don't duplicate the code in frame_conversion_internal() that converts displayable pixel size to total pixel size -- just call that function. 2010-02-15 Ben Wing <ben@xemacs.org> * EmacsFrame.c: * EmacsFrame.c (EmacsFrameResize): * console-msw-impl.h: * console-msw-impl.h (struct mswindows_frame): * console-msw-impl.h (FRAME_MSWINDOWS_TARGET_RECT): * device-tty.c: * device-tty.c (tty_asynch_device_change): * event-msw.c: * event-msw.c (mswindows_wnd_proc): * faces.c (Fface_list): * faces.h: * frame-gtk.c: * frame-gtk.c (gtk_set_initial_frame_size): * frame-gtk.c (gtk_set_frame_size): * frame-msw.c: * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_frame_size): * frame-msw.c (mswindows_size_frame_internal): * frame-msw.c (msprinter_init_frame_3): * frame.c: * frame.c (enum): * frame.c (Fmake_frame): * frame.c (adjust_frame_size): * frame.c (store_minibuf_frame_prop): * frame.c (Fframe_property): * frame.c (Fframe_properties): * frame.c (Fframe_displayable_pixel_height): * frame.c (Fframe_displayable_pixel_width): * frame.c (internal_set_frame_size): * frame.c (Fset_frame_height): * frame.c (Fset_frame_pixel_height): * frame.c (Fset_frame_displayable_pixel_height): * frame.c (Fset_frame_width): * frame.c (Fset_frame_pixel_width): * frame.c (Fset_frame_displayable_pixel_width): * frame.c (Fset_frame_size): * frame.c (Fset_frame_pixel_size): * frame.c (Fset_frame_displayable_pixel_size): * frame.c (frame_conversion_internal_1): * frame.c (get_frame_displayable_pixel_size): * frame.c (change_frame_size_1): * frame.c (change_frame_size): * frame.c (generate_title_string): * frame.h: * gtk-xemacs.c: * gtk-xemacs.c (gtk_xemacs_size_request): * gtk-xemacs.c (gtk_xemacs_size_allocate): * gtk-xemacs.c (gtk_xemacs_paint): * gutter.c: * gutter.c (update_gutter_geometry): * redisplay.c (end_hold_frame_size_changes): * redisplay.c (redisplay_frame): * toolbar.c: * toolbar.c (update_frame_toolbars_geometry): * window.c: * window.c (frame_pixsize_valid_p): * window.c (check_frame_size): Various fixes to frame geometry to make it a bit easier to understand and fix some bugs. 1. IMPORTANT: Some renamings. Will need to be applied carefully to the carbon repository, in the following order: -- pixel_to_char_size -> pixel_to_frame_unit_size -- char_to_pixel_size -> frame_unit_to_pixel_size -- pixel_to_real_char_size -> pixel_to_char_size -- char_to_real_pixel_size -> char_to_pixel_size -- Reverse second and third arguments of change_frame_size() and change_frame_size_1() to try to make functions consistent in putting width before height. -- Eliminate old round_size_to_char, because it didn't really do anything differently from round_size_to_real_char() -- round_size_to_real_char -> round_size_to_char; any places that called the old round_size_to_char should just call the new one. 2. IMPORTANT FOR CARBON: The set_frame_size() method is now passed sizes in "frame units", like all other frame-sizing functions, rather than some hacked-up combination of char-cell units and total pixel size. This only affects window systems that use "pixelated geometry", and I'm not sure if Carbon is one of them. MS Windows is pixelated, X and GTK are not. For pixelated-geometry systems, the size in set_frame_size() is in displayable pixels rather than total pixels and needs to be converted appropriately; take a look at the changes made to mswindows_set_frame_size() method if necessary. 3. Add a big long comment in frame.c describing how frame geometry works. 4. Remove MS Windows-specific character height and width fields, duplicative and unused. 5. frame-displayable-pixel-* and set-frame-displayable-pixel-* didn't use to work on MS Windows, but they do now. 6. In general, clean up the handling of "pixelated geometry" so that fewer functions have to worry about this. This is really an abomination that should be removed entirely but that will have to happen later. Fix some buggy code in frame_conversion_internal() that happened to "work" because it was countered by oppositely buggy code in change_frame_size(). 7. Clean up some frame-size code in toolbar.c and use functions already provided in frame.c instead of rolling its own. 8. Fix check_frame_size() in window.c, which formerly didn't take pixelated geometry into account. 2010-02-15 Ben Wing <ben@xemacs.org> * mc-alloc.c: * mc-alloc.c (mc_realloc_1): * mc-alloc.c (set_dirty_bit): * mc-alloc.c (set_dirty_bit_for_address): * mc-alloc.c (get_dirty_bit): * mc-alloc.c (get_dirty_bit_for_address): * mc-alloc.c (set_protection_bit): * mc-alloc.c (set_protection_bit_for_address): * mc-alloc.c (get_protection_bit): * mc-alloc.c (get_protection_bit_for_address): * mc-alloc.c (get_page_start): * vdb-win32.c (win32_fault_handler): * vdb.c: Fix some compile warnings, make vdb test code conditional on DEBUG_XEMACS. 2010-02-15 Ben Wing <ben@xemacs.org> * regex.c: * regex.c (DEBUG_FAIL_PRINT1): * regex.c (PUSH_FAILURE_POINT): * regex.c (POP_FAILURE_POINT): * regex.c (regex_compile): * regex.c (re_match_2_internal): * regex.h: * search.c: * search.c (search_buffer): * search.c (debug_regexps_changed): * search.c (vars_of_search): Add an internal variable debug_regexps and a corresponding Lisp variable `debug-regexps' that takes a list of areas in which to display debugging info about regex compilation and matching (currently three areas exist). Use existing debugging code already in regex.c and modify it so that it recognizes the debug_regexps variable and the flags in it. Rename variable `debug-xemacs-searches' to just `debug-searches', consistent with other debug vars. 2010-02-20 Ben Wing <ben@xemacs.org> * device-x.c (Fx_get_resource): * dynarr.c: * dynarr.c (Dynarr_realloc): * dynarr.c (Dynarr_newf): * dynarr.c (Dynarr_lisp_realloc): * dynarr.c (Dynarr_lisp_newf): * dynarr.c (Dynarr_resize): * dynarr.c (Dynarr_insert_many): * dynarr.c (Dynarr_delete_many): * dynarr.c (Dynarr_memory_usage): * dynarr.c (stack_like_free): * file-coding.c (coding_reader): * file-coding.c (gzip_convert): * gutter.c (output_gutter): * lisp.h: * lisp.h (Dynarr_declare): * lisp.h (DYNARR_SET_LISP_IMP): * lisp.h (CHECK_NATNUM): * profile.c (create_timing_profile_table): * redisplay-output.c (sync_rune_structs): * redisplay-output.c (sync_display_line_structs): * redisplay-output.c (redisplay_output_window): * redisplay.c: * redisplay.c (get_display_block_from_line): * redisplay.c (add_ichar_rune_1): * redisplay.c (ensure_modeline_generated): * redisplay.c (generate_displayable_area): * redisplay.c (regenerate_window): * redisplay.c (update_line_start_cache): * signal.c: * signal.c (check_quit): Lots of rewriting of dynarr code. (1) Lots of documentation added. Also fix places that referenced a now-bogus internals node concerning redisplay critical sections. (2) Rename: Dynarr_add_lisp_string -> Dynarr_add_ext_lisp_string Dynarr_set_length -> Dynarr_set_lengthr ("restricted") Dynarr_increment -> Dynarr_incrementr Dynarr_resize_if -> Dynarr_resize_to_add (3) New functions: Dynarr_elsize = dy->elsize_ Dynarr_set_length(): Set length, resizing as necessary Dynarr_set_length_and_zero(): Set length, resizing as necessary, zeroing out new elements Dynarr_increase_length(), Dynarr_increase_length_and_zero(): Optimization of Dynarr_set_length(), Dynarr_set_length_and_zero() when size is known to increase Dynarr_resize_to_fit(): Resize as necessary to fit a given length. Dynarr_set(): Set element at a given position, increasing length as necessary and setting any newly created positions to 0 (4) Use Elemcount, Bytecount. (5) Rewrite many macros as inline functions. 2010-02-20 Ben Wing <ben@xemacs.org> * tests.c: Fix operation of c-tests. 2010-02-19 Aidan Kehoe <kehoea@parhasard.net> * fns.c (split_string_by_ichar_1): Use better types (e.g., not an Ichar for a buffer size) in this function when dealing with ESCAPECHAR. 2010-02-19 Aidan Kehoe <kehoea@parhasard.net> * fns.c (mapcarX): Correct this function, discarding multiple values when one SEQUENCE is supplied, choosing a better label name. Correct the comment describing the SOME_OR_EVERY argument. 2010-02-12 Aidan Kehoe <kehoea@parhasard.net> * syswindows.h: Remove the PDWORD_PTR typedef; it's not used in intl-auto-encap-win32.h , and it breaks the build with Visual C++ 2005 Express Edition and a 2005 copy of the SDK. 2010-02-10 Ben Wing <ben@xemacs.org> * text.h: * text.h (VALIDATE_IBYTEPTR_BACKWARD): * text.h (EI_ALLOC): * text.h (eicpyout_alloca_fmt): * text.h (eifree): * text.h (eito_alloca): * text.h (eito_external): * text.h (DFC_LISP_STRING_USE_CONVERTED_DATA): * text.h (EXTERNAL_TO_ITEXT): (1) Fix up long comment about the internal-external conversion macros to reflect the recent changes to the macros. (2) Reformat the macros in text.h so they line up properly. 2010-02-09 Jerry James <james@xemacs.org> * s/hpux11-shr.h: Add license information from Marcus Thiessel. 2010-02-09 Ben Wing <ben@xemacs.org> * dynarr.c (Dynarr_insert_many): * dynarr.c (Dynarr_delete_many): * emacs.c: * emacs.c (pause_so_user_can_read_messages): * emacs.c (Fkill_emacs): * emacs.c (guts_of_fatal_error_signal): * lisp.h: * lisp.h (INLINE_ERROR_CHECK_ARGS): * lisp.h (Dynarr_set_length_1): * lisp.h (Dynarr_set_length): * lisp.h (Dynarr_pop): Add ERROR_CHECK_DYNARR, dynarr_checking_assert(). Use it. Sort existing error-check categories in lisp.h, remove most of the (unused) assert variations from most categories. Add a long comment about reorganizing the system by categories and subcategories. Create ERROR_CHECK_ANY if any error-checking categories defined, and use it in emacs.c to define USER_IS_DEVELOPING_XEMACS. In emacs.c and cmdloop.c, don't display a message at early shutdown or fatal shutdown when on Cygwin, only Windows native -- Cygwin has a working stderr that shows error output. Update comment in Dynarr_verify_pos_atp(). 2010-02-09 Ben Wing <ben@xemacs.org> * syswindows.h: Create a long comment about build flags such as WIN32_NATIVE, HAVE_MS_WINDOWS. 2010-02-09 Ben Wing <ben@xemacs.org> * lisp.h: Disabled inline assert should just use disabled_assert() not disabled_assert_at_line() otherwise you get compile errors. (Hasn't bitten us only because no one is currently using inline asserts -- but this is different in the Unicode-internal repo.) 2010-02-08 Ben Wing <ben@xemacs.org> * charset.h: * charset.h (Fget_charset): Declare some fake charset defs so we can compile when non-Mule. * depend: Rebuild. 2010-02-08 Ben Wing <ben@xemacs.org> * event-Xt.c: Add comment about simultaneous window-system consoles/devices. 2010-02-08 Ben Wing <ben@xemacs.org> * alloc.c: Add prototypes for debugging functions. * alloc.c (compact_string_chars): Make static. * console-x.c (x_initially_selected_for_input): * console-x.h: * console-x.h (X_ERROR_OCCURRED): Delete x_has_keysym() prototype from console-x.c, move to console-x.h. * eval.c (multiple_value_call): Real bug: Fix shadowing local vars. * event-unixoid.c (read_event_from_tty_or_stream_desc): * event-unixoid.c (signal_fake_event): * lread.c (check_if_suppressed): * strftime.c (strftime): Fix stupid global shadowing warnings. * event-unixoid.c (signal_fake_event): * event-unixoid.c (drain_signal_event_pipe): Use Rawbyte, not char. * frame.h: Remove old prototype. * gc.c: * gc.c (show_gc_cursor_and_message): * gc.c (remove_gc_cursor_and_message): * gc.c (gc_prepare): * gc.c (gc_finish_mark): * gc.c (gc_finalize): * gc.c (gc_sweep): * gc.c (gc_finish): * gc.c (gc_suspend_mark_phase): * gc.c (gc_resume_mark_phase): * gc.c (gc_mark): * gc.c (gc_resume_mark): Make fns static. * glyphs-eimage.c (gif_decode_error_string): Fix non-prototype. * lisp.h: Hack around global shadowing warnings involving `index'. * intl-win32.c (wcsncpy): * number-gmp.c (bigfloat_to_string): * objects-msw.c (mswindows_font_spec_matches_charset_stage_2): * specifier.c (call_charset_predicate): * specifier.c (DEFINE_SPECIFIER_TAG_FROB): Declarations cannot follow statements in standard C. * search.c (search_buffer): Fix local shadowing warnings. 2010-02-08 Ben Wing <ben@xemacs.org> * faces.c: * faces.c (face_property_matching_instance): * faces.c (ensure_face_cachel_contains_charset): * faces.h (FACE_FONT): * lisp.h: * lisp.h (enum font_specifier_matchspec_stages): * objects-msw.c: * objects-msw.c (mswindows_font_spec_matches_charset): * objects-msw.c (mswindows_find_charset_font): * objects-tty.c: * objects-tty.c (tty_font_spec_matches_charset): * objects-tty.c (tty_find_charset_font): * objects-xlike-inc.c: * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xft_find_charset_font): * objects.c: * objects.c (font_instantiate): * objects.c (FROB): * specifier.c: * specifier.c (charset_matches_specifier_tag_set_p): * specifier.c (call_charset_predicate): * specifier.c (define_specifier_tag): * specifier.c (Fdefine_specifier_tag): * specifier.c (setup_charset_initial_specifier_tags): * specifier.c (specifier_instance_from_inst_list): * specifier.c (FROB): * specifier.c (vars_of_specifier): * specifier.h: Rename the specifier-font-matching stages in preparation for eliminating shadowed warnings, some other related fixes from ben-unicode-internal. 1. Rename raw enums: initial -> STAGE_INITIAL final -> STAGE_FINAL impossible -> NUM_MATCHSPEC_STAGES 2. Move `enum font_specifier_matchspec_stages' from specifier.h to lisp.h. 3. Whitespace changes to match coding standards. 4. Eliminate unused second argument STAGE in charset predicates that don't use it -- the code that calls the charset predicates is now smart enough to supply the right number of arguments automatically. 5. Add some long(ish) comments and authorial notices, esp. in objects.c. 6. In specifier.c, change Vcharset_tag_lists from a vector over leading bytes to a hash table over charsets. This change is unnecessary currently but doesn't hurt and will be required when we merge in Unicode-internal. 7. In specifier.c, extract out the code that calls charset predicates into a function call_charset_predicate(). 2010-02-08 Ben Wing <ben@xemacs.org> * emacs.c: * emacs.c (assert_failed): Fix comments about when inhibit_non_essential_printing_operations is set and how used. Increment/decrement in assert_failed rather than just setting/resetting to avoid hosing things in case we're called when the value is already non-zero. Similarly increment/ decrement in_assert_failed. * gc.c (gc_prepare): * gc.c (gc_finish): Increment/decrement inhibit_non_essential_printing_operations rather than setting/resetting. * print.c: * print.c (debug_out): * print.c (write_string_to_alternate_debugging_output): * print.c (restore_inhibit_non_essential_conversion_operations): * print.c (debug_print_exit): * print.c (debug_print_enter): * print.c (debug_prin1): * print.c (debug_p4): * print.c (ext_print_begin): * print.c (ext_print_end): * print.c (external_debug_print): * print.c (debug_p3): * print.c (debug_backtrace): * print.c (debug_short_backtrace): * print.c (vars_of_print): Lots of cleanup. Fix debug_out() so it binds inhibit_non_essential_printing_operations around it to ensure no conversion. Remove many other places that set the same var since the lower-level functions now all do it. A few other places, add inhibit_non_essential_printing_operations bindings.Extract the code out that sets up and resets lots of bindings in debug_prin1() so that debug_backtrace() can use it, and rewrite it to use the new STORE_VOID_IN_LISP() rather than having to have a single static opaque structure holding all the bindings (and not handling reentrancy). Fix raw `char' to be `CIbyte' in the declaration of `alternate_do_string'. * signal.c (check_what_happened): Fix bug: Don't try to check for QUIT when inhibit_non_essential_printing_operations or we may screw things up if QUIT happens during debug printing. 2010-02-08 Ben Wing <ben@xemacs.org> * casetab.c (compute_canon_mapper): * casetab.c (initialize_identity_mapper): * casetab.c (compute_up_or_eqv_mapper): * casetab.c (recompute_case_table): * casetab.c (set_case_table): * chartab.c (copy_mapper): * chartab.c (copy_char_table_range): * chartab.c (get_range_char_table_1): * console.c (find_nonminibuffer_frame_not_on_console_predicate): * console.c (find_nonminibuffer_frame_not_on_console): * console.c (nuke_all_console_slots): * device.c: * device.c (find_nonminibuffer_frame_not_on_device_predicate): * device.c (find_nonminibuffer_frame_not_on_device): * dialog-msw.c (dialog_proc): * dialog-msw.c (handle_question_dialog_box): * dialog-x.c (maybe_run_dbox_text_callback): * eval.c: * eval.c (safe_run_hook_trapping_problems_1): * eval.c (safe_run_hook_trapping_problems): * event-msw.c: * event-msw.c (mswindows_wnd_proc): * event-msw.c (mswindows_find_frame): * faces.c (update_face_inheritance_mapper): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_get_mouse_position): * frame-msw.c (mswindows_get_frame_parent): * glade.c (connector): * glade.c (Fglade_xml_signal_connect): * glade.c (Fglade_xml_signal_autoconnect): * glade.c (Fglade_xml_textdomain): * glyphs-msw.c (mswindows_subwindow_instantiate): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs.c (check_instance_cache_mapper): * glyphs.c (check_window_subwindow_cache): * glyphs.c (check_image_instance_structure): * gui-x.c (snarf_widget_value_mapper): * gui-x.c (popup_selection_callback): * gui-x.c (button_item_to_widget_value): * keymap.c (map_keymap_mapper): * keymap.c (Fmap_keymap): * menubar-gtk.c (__torn_off_sir): * menubar-gtk.c (__activate_menu): * menubar-gtk.c (menu_convert): * menubar-gtk.c (__generic_button_callback): * menubar-gtk.c (menu_descriptor_to_widget_1): * menubar-msw.c: * menubar-msw.c (EMPTY_ITEM_ID): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * menubar-x.c (pre_activate_callback): * menubar-x.c (command_builder_operate_menu_accelerator): * menubar-x.c (command_builder_find_menu_accelerator): * print.c (print_internal): * process-unix.c (close_process_descs_mapfun): * process.c (get_process_from_usid): * process.c (init_process_io_handles): * profile.c (sigprof_handler): * profile.c (get_profiling_info_timing_maphash): * profile.c (Fget_profiling_info): * profile.c (set_profiling_info_timing_maphash): * profile.c (mark_profiling_info_maphash): * scrollbar-msw.c (mswindows_create_scrollbar_instance): * scrollbar-msw.c (mswindows_free_scrollbar_instance): * scrollbar-msw.c (mswindows_handle_scrollbar_event): * specifier.c (recompute_cached_specifier_everywhere_mapfun): * specifier.c (recompute_cached_specifier_everywhere): * syntax.c (copy_to_mirrortab): * syntax.c (copy_if_not_already_present): * syntax.c (update_just_this_syntax_table): * text.c (new_dfc_convert_now_damn_it): * text.h (LISP_STRING_TO_EXTERNAL): * tooltalk.c: * tooltalk.c (tooltalk_message_callback): * tooltalk.c (tooltalk_pattern_callback): * tooltalk.c (Fcreate_tooltalk_message): * tooltalk.c (Fcreate_tooltalk_pattern): * ui-byhand.c (__generic_toolbar_callback): * ui-byhand.c (generic_toolbar_insert_item): * ui-byhand.c (__emacs_gtk_ctree_recurse_internal): * ui-byhand.c (Fgtk_ctree_recurse): * ui-gtk.c (__internal_callback_destroy): * ui-gtk.c (__internal_callback_marshal): * ui-gtk.c (Fgtk_signal_connect): * ui-gtk.c (gtk_type_to_lisp): * ui-gtk.c (lisp_to_gtk_type): * ui-gtk.c (lisp_to_gtk_ret_type): * lisp-disunion.h: * lisp-disunion.h (NON_LVALUE): * lisp-union.h: * lisp.h (LISP_HASH): Rename: LISP_TO_VOID -> STORE_LISP_IN_VOID VOID_TO_LISP -> GET_LISP_FROM_VOID These new names are meant to clearly identify that the Lisp object is the source and void the sink, and that they can't be used the other way around -- they aren't exact opposites despite the old names. The names are also important given the new functions created just below. Also, clarify comments in lisp-union.h and lisp-disunion.h about the use of the functions. * lisp.h: New functions STORE_VOID_IN_LISP and GET_VOID_FROM_LISP. These are different from the above in that the source is a void * (previously, you had to use make_opaque_ptr()). * eval.c (restore_lisp_object): * eval.c (record_unwind_protect_restoring_lisp_object): * eval.c (struct restore_int): * eval.c (restore_int): * eval.c (record_unwind_protect_restoring_int): * eval.c (free_pointer): * eval.c (record_unwind_protect_freeing): * eval.c (free_dynarr): * eval.c (record_unwind_protect_freeing_dynarr): * eval.c (unbind_to_1): Use STORE_VOID_IN_LISP and GET_VOID_FROM_LISP to eliminate the use of make_opaque_ptr() and mostly eliminate Lisp consing entirely in the use of these various record_unwind_protect_* functions as well as internal_bind_* (e.g. internal_bind_int). * tests.c: * tests.c (Ftest_store_void_in_lisp): * tests.c (syms_of_tests): * tests.c (vars_of_tests): Add an C-assert-style test to test STORE_VOID_IN_LISP and GET_VOID_FROM_LISP to make sure the same value comes back that was put in. 2010-02-09 Vin Shelton <acs@xemacs.org> * objects-msw.c (mswindows_font_spec_matches_charset_stage_2): Declare hfont at start of a code block. * glyphs-eimage.c: Undefine and then redefine FAR around the jpeg header. 2010-02-08 Vin Shelton <acs@xemacs.org> * nt.c (open_unc_volume): lpRemoteName is an XELPTSTR. 2010-02-07 Aidan Kehoe <kehoea@parhasard.net> * lisp.h (Dynarr_verify, Dynarr_verify_mod): If ERROR_CHECK_STRUCTURES is not defined, cast the argument in these two macros; fixes the g++ build. 2010-02-07 Aidan Kehoe <kehoea@parhasard.net> * fileio.c (Finsert_file_contents_internal): Only call format-decode if it has a function binding. (build_annotations): Only call format-annotate-function if it has a function binding; incidentally only calling #'car-less-than-car if *it* has a function binding. (syms_of_fileio): #'car-less-than-car and #'cdr-less-than-cdr are now in Lisp. 2010-02-07 Ben Wing <ben@xemacs.org> * fns.c: Qlist, Qstring mistakenly declared twice. * fns.c (mapcarX): (void) cast needed to avoid compile problem. 2010-02-07 Ben Wing <ben@xemacs.org> * emacs.c (make_argc_argv): Cast to Wexttext * to fix compile error. * nt.c (init_user_info): Cast to CIbyte * to fix compile error. * nt.c (open_unc_volume): To fix compile error, store pathname into an Extbyte * variable then write into the dest, casting to LPTSTR. * emacs.c (debug_can_access_memory): * fileio.c (Fmake_temp_name): * fileio.c (a_write): * fns.c: * fns.c (check_losing_bytecode): * fns.c (plists_differ): * fns.c (internal_equal_trapping_problems): * fns.c (base64_value_to_char): * fns.c (base64_conversion_error): * fns.c (STORE_BYTE): * fns.c (vars_of_fns): * lisp.h: * nt.c (init_user_info): * nt.c (mswindows_readdir): * nt.c (mswindows_executable_type): Replace raw `char *' or `unsigned char *' with characterized type -- Rawbyte, Binbyte, Boolbyte, Ibyte or Ascbyte. This should fix at least one real bug -- in a_write(), the "speedy insert" code that checks for an unchanged region declared the file data read in as char[] but then compared the value to an Ichar. Hence, any chars in the range 128-255 would always appear changed -- in particular, this algorithm would fail completely with binary data. 2010-02-07 Ben Wing <ben@xemacs.org> * fns.c (mapcarX): C++ requires explicit cast to enum lrecord_type. 2010-02-06 Ben Wing <ben@xemacs.org> * mule-wnnfns.c: Convert file to utf-8. 2010-02-03 Aidan Kehoe <kehoea@parhasard.net> * fns.c (mapcarX): Accept a new argument, indicating whether the function is being called from #'some or #'every. Implement it. Discard any multiple values where that is appropriate. (Fmapconcat, FmapcarX, Fmapvector, Fmapcan, Fmapc, Fmap) (Fmap_into): Pass the new flag to mapcarX. (Fsome, Fevery): Move these functions here from cl-extra.el; implement them in terms of mapcarX. (maplist): Discard multiple values where appropriate. 2010-02-06 Ben Wing <ben@xemacs.org> * config.h.in: Add undef for TRUST_NDBM_H_PROTOTYPES. * database.c: * database.c (struct): Use TRUST_NDBM_H_PROTOTYPES to determine whether to include ndbm.h or to specify our own prototypes, in place of CYGWIN_HEADERS (or more generally, any random list of systems). * depend: Regenerate. 2010-02-05 Ben Wing <ben@xemacs.org> * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): Cast pointer when storing value to avoid problems because some store vars are Extbyte * and some are LPTSTR. 2010-02-05 Jerry James <james@xemacs.org> * s/sco7.h: Add copyright and license header with the permission of Ron Record, the author. 2010-02-05 Ben Wing <ben@xemacs.org> * depend: Regenerate. * make-src-depend (PrintPatternDeps): Remove refs to xgccache, no longer existent. * select-gtk.c (THIS_IS_GTK): * select-gtk.c (gtk_decline_selection_request): * select-x.c (THIS_IS_X): * select-xlike-inc.c: * select-xlike-inc.c (selection_data_to_lisp_data): Rename PROCESSING_X_CODE to THIS_IS_X and PROCESSING_GTK_CODE to THIS_SI_GTK for consistency with other xlike code. Rename select-xlike-inc.c from select-common.h, in keeping with xlike terminology. 2010-02-05 Ben Wing <ben@xemacs.org> * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.c (Fmswindows_message_box): * console-x.c (x_perhaps_init_unseen_key_defaults): * console.c: * database.c (dbm_get): * database.c (dbm_put): * database.c (dbm_remove): * database.c (berkdb_get): * database.c (berkdb_put): * database.c (berkdb_remove): * database.c (Fopen_database): * device-gtk.c (gtk_init_device): * device-msw.c (msprinter_init_device_internal): * device-msw.c (msprinter_default_printer): * device-msw.c (msprinter_init_device): * device-msw.c (sync_printer_with_devmode): * device-msw.c (Fmsprinter_select_settings): * device-x.c (sanity_check_geometry_resource): * device-x.c (Dynarr_add_validified_lisp_string): * device-x.c (x_init_device): * device-x.c (Fx_put_resource): * device-x.c (Fx_valid_keysym_name_p): * device-x.c (Fx_set_font_path): * dialog-msw.c (push_lisp_string_as_unicode): * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * dialog-x.c (dbox_descriptor_to_widget_value): * editfns.c (Fformat_time_string): * editfns.c (Fencode_time): * editfns.c (Fset_time_zone_rule): * emacs.c (make_argc_argv): * emacs.c (Fdump_emacs): * emodules.c (emodules_load): * eval.c: * eval.c (maybe_signal_error_1): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * fileio.c (report_error_with_errno): * fileio.c (Fsysnetunam): * fileio.c (Fdo_auto_save): * font-mgr.c (extract_fcapi_string): * font-mgr.c (Ffc_config_app_font_add_file): * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_filename): * frame-gtk.c (gtk_set_frame_text_value): * frame-gtk.c (gtk_create_widgets): * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_title_from_ibyte): * frame-msw.c (msprinter_init_frame_3): * frame-x.c (x_set_frame_text_value): * frame-x.c (x_set_frame_properties): * frame-x.c (start_drag_internal_1): * frame-x.c (x_cde_transfer_callback): * frame-x.c (x_create_widgets): * glyphs-eimage.c (my_jpeg_output_message): * glyphs-eimage.c (jpeg_instantiate): * glyphs-eimage.c (gif_instantiate): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (xbm_instantiate_1): * glyphs-gtk.c (gtk_xbm_instantiate): * glyphs-gtk.c (gtk_xpm_instantiate): * glyphs-gtk.c (gtk_xface_instantiate): * glyphs-gtk.c (cursor_font_instantiate): * glyphs-gtk.c (gtk_redisplay_widget): * glyphs-gtk.c (gtk_widget_instantiate_1): * glyphs-gtk.c (gtk_add_tab_item): * glyphs-msw.c (mswindows_xpm_instantiate): * glyphs-msw.c (bmp_instantiate): * glyphs-msw.c (mswindows_resource_instantiate): * glyphs-msw.c (xbm_instantiate_1): * glyphs-msw.c (mswindows_xbm_instantiate): * glyphs-msw.c (mswindows_xface_instantiate): * glyphs-msw.c (mswindows_redisplay_widget): * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-msw.c (add_tree_item): * glyphs-msw.c (add_tab_item): * glyphs-msw.c (mswindows_combo_box_instantiate): * glyphs-msw.c (mswindows_widget_query_string_geometry): * glyphs-x.c (x_locate_pixmap_file): * glyphs-x.c (xbm_instantiate_1): * glyphs-x.c (x_xbm_instantiate): * glyphs-x.c (extract_xpm_color_names): * glyphs-x.c (x_xpm_instantiate): * glyphs-x.c (x_xface_instantiate): * glyphs-x.c (autodetect_instantiate): * glyphs-x.c (safe_XLoadFont): * glyphs-x.c (cursor_font_instantiate): * glyphs-x.c (x_redisplay_widget): * glyphs-x.c (Fchange_subwindow_property): * glyphs-x.c (x_widget_instantiate): * glyphs-x.c (x_tab_control_redisplay): * glyphs.c (pixmap_to_lisp_data): * gui-x.c (menu_separator_style_and_to_external): * gui-x.c (add_accel_and_to_external): * gui-x.c (button_item_to_widget_value): * hpplay.c (player_error_internal): * hpplay.c (play_sound_file): * hpplay.c (play_sound_data): * intl.c (Fset_current_locale): * lisp.h: * menubar-gtk.c (gtk_xemacs_set_accel_keys): * menubar-msw.c (populate_menu_add_item): * menubar-msw.c (populate_or_checksum_helper): * menubar-x.c (menu_item_descriptor_to_widget_value_1): * nt.c (init_user_info): * nt.c (get_long_basename): * nt.c (nt_get_resource): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_readdir): * nt.c (read_unc_volume): * nt.c (mswindows_stat): * nt.c (mswindows_getdcwd): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * ntplay.c (nt_play_sound_file): * objects-gtk.c: * objects-gtk.c (gtk_valid_color_name_p): * objects-gtk.c (gtk_initialize_font_instance): * objects-gtk.c (gtk_font_list): * objects-msw.c (font_enum_callback_2): * objects-msw.c (parse_font_spec): * objects-x.c (x_parse_nearest_color): * objects-x.c (x_valid_color_name_p): * objects-x.c (x_initialize_font_instance): * objects-x.c (x_font_instance_truename): * objects-x.c (x_font_list): * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xft_find_charset_font): * process-nt.c (mswindows_report_winsock_error): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-nt.c (nt_open_network_stream): * process-unix.c: * process-unix.c (allocate_pty): * process-unix.c (get_internet_address): * process-unix.c (unix_canonicalize_host_name): * process-unix.c (unix_open_network_stream): * realpath.c: * select-common.h (lisp_data_to_selection_data): * select-gtk.c (symbol_to_gtk_atom): * select-gtk.c (atom_to_symbol): * select-msw.c (symbol_to_ms_cf): * select-msw.c (mswindows_register_selection_data_type): * select-x.c (symbol_to_x_atom): * select-x.c (x_atom_to_symbol): * select-x.c (hack_motif_clipboard_selection): * select-x.c (Fx_store_cutbuffer_internal): * sound.c (Fplay_sound_file): * sound.c (Fplay_sound): * sound.h (sound_perror): * sysdep.c: * sysdep.c (qxe_allocating_getcwd): * sysdep.c (qxe_execve): * sysdep.c (copy_in_passwd): * sysdep.c (qxe_getpwnam): * sysdep.c (qxe_ctime): * sysdll.c (dll_open): * sysdll.c (dll_function): * sysdll.c (dll_variable): * sysdll.c (search_linked_libs): * sysdll.c (dll_error): * sysfile.h: * sysfile.h (PATHNAME_CONVERT_OUT_TSTR): * sysfile.h (PATHNAME_CONVERT_OUT_UTF_8): * sysfile.h (PATHNAME_CONVERT_OUT): * sysfile.h (LISP_PATHNAME_CONVERT_OUT): * syswindows.h (ITEXT_TO_TSTR): * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT): * syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * text.h: * text.h (eicpy_ext_len): * text.h (enum new_dfc_src_type): * text.h (EXTERNAL_TO_ITEXT): * text.h (GET_STRERROR): * tooltalk.c (check_status): * tooltalk.c (Fadd_tooltalk_message_arg): * tooltalk.c (Fadd_tooltalk_pattern_attribute): * tooltalk.c (Fadd_tooltalk_pattern_arg): * win32.c (tstr_to_local_file_format): * win32.c (mswindows_lisp_error_1): * win32.c (mswindows_report_process_error): * win32.c (Fmswindows_shell_execute): * win32.c (mswindows_read_link_1): Changes involving external/internal format conversion, mostly code cleanup and renaming. 1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL that stored its result in a parameter. The new version of LISP_STRING_TO_EXTERNAL returns its result through the return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL. Use the new-style macros throughout the code. 2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL, in keeping with overall naming rationalization involving Itext and related types. Macros involved in previous two: EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC LISP_STRING_TO_EXTERNAL LISP_STRING_TO_EXTERNAL_MALLOC LISP_STRING_TO_TSTR C_STRING_TO_TSTR -> ITEXT_TO_TSTR TSTR_TO_C_STRING -> TSTR_TO_ITEXT The following four still return their values through parameters, since they have more than one value to return: C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL LISP_STRING_TO_SIZED_EXTERNAL C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC LISP_STRING_TO_SIZED_EXTERNAL_MALLOC Sometimes additional casts had to be inserted, since the old macros played strange games and completely defeated the type system of the store params. 3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT occurred with calls to one of the convenience macros listed above, or to make_extstring(). 4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway) and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT. 4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something like LISP_STRING_TO_EXTERNAL(..., Qfile_name). 5. Eliminate some temporary variables that are no longer necessary now that we return a value rather than storing it into a variable. 6. Some Mule-izing in database.c. 7. Error functions: -- A bit of code cleanup in maybe_signal_error_1. -- Eliminate report_file_type_error; it's just an alias for signal_error_2 with params in a different order. -- Fix some places in the hostname-handling code that directly inserted externally-retrieved error strings into the supposed ASCII "reason" param instead of doing the right thing and sticking text descriptive of what was going on in "reason" and putting the external message in a frob. 8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one or two other places. 9. Some code cleanup in copy_in_passwd() in sysdep.c. 10. Fix a real bug due to accidental variable shadowing in tstr_to_local_file_format() in win32.c. 2010-02-05 Ben Wing <ben@xemacs.org> * lisp.h: * lisp.h (staticpro_nodump_1): Define staticpro_1 and staticpro_nodump_1 when not XEMACS_DEBUG. * symbols.c (defsymbol_massage_name_1): * symbols.c (defsymbol_massage_multiword_predicate): Cosmetic fixes. 2010-02-05 Ben Wing <ben@xemacs.org> * bytecode.c (bytecode_assert): Use 0 instead of x in disabled_assert calls to avoid errors due to using undefined vars/params (they are defined only when ERROR_CHECK_BYTE_CODE, which also turns on/off the asserts). 2010-02-04 Ben Wing <ben@xemacs.org> * alloc.c (release_breathing_space): * alloc.c (resize_string): * alloc.c (sweep_lcrecords_1): * alloc.c (SWEEP_FIXED_TYPE_BLOCK_1): * alloc.c (ADDITIONAL_FREE_compiled_function): * alloc.c (compact_string_chars): * alloc.c (ADDITIONAL_FREE_string): * alloc.c (sweep_strings): * alloca.c (xemacs_c_alloca): * alsaplay.c (alsa_play_sound_file): * buffer.c (init_initial_directory): * buffer.h: * buffer.h (BUFFER_FREE): * console-stream.c (stream_delete_console): * console-tty.c (free_tty_console_struct): * data.c (Fnumber_to_string): * device-gtk.c (gtk_init_device): * device-gtk.c (free_gtk_device_struct): * device-gtk.c (gtk_delete_device): * device-msw.c (mswindows_delete_device): * device-msw.c (msprinter_delete_device): * device-tty.c (free_tty_device_struct): * device-tty.c (tty_delete_device): * device-x.c (x_init_device): * device-x.c (free_x_device_struct): * device-x.c (x_delete_device): * dialog-msw.c (handle_directory_dialog_box): * dialog-x.c (dbox_descriptor_to_widget_value): * dired-msw.c (Fmswindows_insert_directory): * dired.c (free_user_cache): * dired.c (user_name_completion_unwind): * doc.c (unparesseuxify_doc_string): * doc.c (Fsubstitute_command_keys): * doprnt.c (emacs_doprnt_1): * dumper.c (pdump_load_finish): * dumper.c (pdump_file_free): * dumper.c (pdump_file_unmap): * dynarr.c: * dynarr.c (Dynarr_free): * editfns.c (uncache_home_directory): * editfns.c (Fset_time_zone_rule): * elhash.c: * elhash.c (pdump_reorganize_hash_table): * elhash.c (maphash_unwind): * emacs.c (make_arg_list_1): * emacs.c (free_argc_argv): * emacs.c (sort_args): * emacs.c (Frunning_temacs_p): * emodules.c (attempt_module_delete): * eval.c (free_pointer): * event-Xt.c (unselect_filedesc): * event-Xt.c (emacs_Xt_select_process): * event-gtk.c (unselect_filedesc): * event-gtk.c (dragndrop_data_received): * event-msw.c (winsock_closer): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * event-stream.c (finalize_command_builder): * event-stream.c (free_command_builder): * extents.c (free_gap_array): * extents.c (free_extent_list): * extents.c (free_soe): * extents.c (extent_fragment_delete): * extents.c (extent_priority_sort_function): * file-coding.c (make_coding_system_1): * file-coding.c (coding_finalizer): * file-coding.c (set_coding_stream_coding_system): * file-coding.c (chain_finalize_coding_stream_1): * file-coding.c (chain_finalize): * file-coding.c (free_detection_state): * file-coding.c (coding_category_symbol_to_id): * fileio.c: * fileio.c (Ffile_name_directory): * fileio.c (if): * fileio.c (Ffile_symlink_p): * filelock.c (FREE_LOCK_INFO): * filelock.c (current_lock_owner): * font-mgr.c (Ffc_name_unparse): * font-mgr.c (Ffc_pattern_duplicate): * frame-gtk.c (gtk_delete_frame): * frame-msw.c (mswindows_delete_frame): * frame-msw.c (msprinter_delete_frame): * frame-x.c (x_cde_destroy_callback): * frame-x.c (Fcde_start_drag_internal): * frame-x.c (x_cde_transfer_callback): * frame-x.c (x_delete_frame): * frame.c (update_frame_title): * frame.c (Fset_frame_pointer): * gc.c (register_for_finalization): * gccache-gtk.c (free_gc_cache): * gccache-gtk.c (gc_cache_lookup): * gccache-x.c (free_gc_cache): * gccache-x.c (gc_cache_lookup): * glyphs-eimage.c: * glyphs-eimage.c (jpeg_instantiate_unwind): * glyphs-eimage.c (gif_instantiate_unwind): * glyphs-eimage.c (png_instantiate_unwind): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate_unwind): * glyphs-gtk.c (convert_EImage_to_GDKImage): * glyphs-gtk.c (gtk_finalize_image_instance): * glyphs-gtk.c (gtk_init_image_instance_from_eimage): * glyphs-gtk.c (gtk_xpm_instantiate): * glyphs-msw.c (convert_EImage_to_DIBitmap): * glyphs-msw.c (mswindows_init_image_instance_from_eimage): * glyphs-msw.c (mswindows_initialize_image_instance_mask): * glyphs-msw.c (xpm_to_eimage): * glyphs-msw.c (mswindows_xpm_instantiate): * glyphs-msw.c (xbm_create_bitmap_from_data): * glyphs-msw.c (mswindows_finalize_image_instance): * glyphs-x.c (convert_EImage_to_XImage): * glyphs-x.c (x_finalize_image_instance): * glyphs-x.c (x_init_image_instance_from_eimage): * glyphs-x.c (x_xpm_instantiate): * gui-x.c (free_popup_widget_value_tree): * hash.c (free_hash_table): * hash.c (grow_hash_table): * hash.c (pregrow_hash_table_if_necessary): * imgproc.c (build_EImage_quantable): * insdel.c (uninit_buffer_text): * intl-win32.c (convert_multibyte_to_internal_malloc): * intl.c: * intl.c (Fset_current_locale): * keymap.c: * keymap.c (where_is_recursive_mapper): * keymap.c (where_is_internal): * lisp.h: * lisp.h (xfree): * lstream.c (Lstream_close): * lstream.c (resizing_buffer_closer): * mule-coding.c: * mule-coding.c (iso2022_finalize_detection_state): * nt.c: * nt.c (mswindows_get_long_filename): * nt.c (nt_get_resource): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_opendir): * nt.c (mswindows_closedir): * nt.c (mswindows_readdir): * nt.c (mswindows_stat): * nt.c (mswindows_getdcwd): * nt.c (Fmswindows_long_file_name): * ntplay.c (nt_play_sound_file): * ntplay.c (play_sound_data_1): * number-gmp.c (gmp_free): * number-gmp.c (init_number_gmp): * number-mp.c (bignum_to_string): * number-mp.c (BIGNUM_TO_TYPE): * number.c (bignum_print): * number.c (bignum_convfree): * number.c (ratio_print): * number.c (bigfloat_print): * number.c (bigfloat_finalize): * objects-gtk.c (gtk_finalize_color_instance): * objects-gtk.c (gtk_finalize_font_instance): * objects-msw.c (mswindows_finalize_color_instance): * objects-msw.c (mswindows_finalize_font_instance): * objects-tty.c (tty_finalize_color_instance): * objects-tty.c (tty_finalize_font_instance): * objects-tty.c (tty_font_list): * objects-x.c (x_finalize_color_instance): * objects-x.c (x_finalize_font_instance): * process.c: * process.c (finalize_process): * realpath.c: * redisplay.c (add_propagation_runes): * regex.c: * regex.c (xfree): * regex.c (REGEX_FREE_STACK): * regex.c (FREE_STACK_RETURN): * regex.c (regex_compile): * regex.c (regexec): * regex.c (regfree): * scrollbar-gtk.c (gtk_free_scrollbar_instance): * scrollbar-gtk.c (gtk_release_scrollbar_instance): * scrollbar-msw.c (mswindows_free_scrollbar_instance): * scrollbar-msw.c (unshow_that_mofo): * scrollbar-x.c (x_free_scrollbar_instance): * scrollbar-x.c (x_release_scrollbar_instance): * select-gtk.c (emacs_gtk_selection_handle): * select-msw.c (mswindows_own_selection): * select-x.c: * select-x.c (x_handle_selection_request): * select-x.c (unexpect_property_change): * select-x.c (x_handle_property_notify): * select-x.c (receive_incremental_selection): * select-x.c (x_get_window_property_as_lisp_data): * select-x.c (Fx_get_cutbuffer_internal): * specifier.c (finalize_specifier): * syntax.c (uninit_buffer_syntax_cache): * sysdep.c (qxe_allocating_getcwd): * sysdep.c (qxe_lstat): * sysdep.c (copy_in_passwd): * sysdep.c (qxe_ctime): * sysdep.c (closedir): * sysdep.c (DIRSIZ): * termcap.c (tgetent): * termcap.c (tprint): * tests.c (Ftest_data_format_conversion): * text.c (new_dfc_convert_copy_data): * text.h (eifree): * text.h (eito_alloca): * text.h (eito_external): * toolbar-msw.c (mswindows_output_toolbar): * ui-gtk.c (CONVERT_RETVAL): * ui-gtk.c (__allocate_object_storage): * unicode.c (free_from_unicode_table): * unicode.c (free_to_unicode_table): * unicode.c (free_charset_unicode_tables): * win32.c (mswindows_read_link_1): Rename: xfree(VAL, TYPE)->xfree(VAL) Command used: gr 'xfree *\((.*),.*\);' 'xfree (\1);' *.[ch] Followed by grepping for 'xfree.*,' and fixing anything left. Rationale: Having to specify the TYPE argument is annoying and error-prone. It was originally put in to work around warnings due to strict aliasing but years and years ago I rewrote it in a way that doesn't use the TYPE argument at all and no one has complained since then. (And anyway, XEmacs is far from ever being in compliance with strict aliasing and would require far-reaching changes to get that way.) 2010-02-04 Ben Wing <ben@xemacs.org> * emacs.c (SHEBANG_EXE_PROGNAME_LENGTH): * emacs.c (main_1): Restore old definition of SHEBANG_EXE_PROGNAME_LENGTH; not possible to ANSI-concatenate wide and narrow strings. * print.c (write_msg_istring): * print.c (write_msg_cistring): * print.c (write_msg_ascstring): Can't return a value in a void-declared function. 2010-02-04 Ben Wing <ben@xemacs.org> * filelock.c: * filelock.c (fill_in_lock_file_name): Name the lock symlink file .#FN# instead of .#FN for file FN, so that the link file doesn't have a .c or .el or whatever extension, which confuses programs/functions that search by extension (e.g. etags, byte-recompile-directory, etc.). 2010-02-04 Ben Wing <ben@xemacs.org> * symbols.c (defsymbol_massage_name_1): * symbols.c (defsymbol_nodump): * symbols.c (defsymbol): * symbols.c (defkeyword): * symeval.h (DEFVAR_SYMVAL_FWD_OBJECT): Put this back again: Make the various calls to staticpro() instead call staticpro_1(), passing in the name of the C var being staticpro'ed, so that it shows up in staticpro_names. Otherwise staticpro_names just has 1000+ copies of the word `location'. 2010-02-04 Ben Wing <ben@xemacs.org> * bytecode.c (assert_failed_with_remembered_ops): * bytecode.c (init_opcode_table_multi_op): Declare some things const to shut up G++ v4 warnings. * redisplay.c (add_ibyte_string_runes): * redisplay.c (add_string_to_fstring_db_runes): * redisplay.c (generate_fstring_runes): * redisplay.c (window_line_number): * redisplay.c (decode_mode_spec): Use Ascbyte instead of char in various places. 2010-02-03 Ben Wing <ben@xemacs.org> * frame.c (Fmake_frame): * glyphs.c: * glyphs.c (NUM_PRECACHED_GLYPHS): * glyphs.c (get_glyph_cachel_index): * glyphs.c (FROB): * glyphs.c (mark_glyph_cachels_as_not_updated): * redisplay.c (regenerate_window): * redisplay.c (redisplay_window): When creating a frame, call reset_glyph_cachels on the minibuffer window as well as the root window. Fixes a crash due to other glyphs (e.g. the gutter glyph) getting in the glyph cachel before the pre-cached glyphs that are supposed to have fixed indices (continuation-glyph, truncation-glyph, etc.). Add a bunch of asserts to make sure that the glyph cachels always properly contain the pre-cached glyphs. 2010-02-03 Ben Wing <ben@xemacs.org> * device-x.c (x_get_resource_prefix): * device-x.c (Fx_get_resource): * device-x.c (Fx_get_resource_prefix): * device-x.c (Fx_put_resource): * dialog-msw.c: * dialog-msw.c (handle_question_dialog_box): * dired-msw.c (mswindows_sort_files): * dired-msw.c (mswindows_get_files): * extents.c (extent_fragment_sort_by_priority): * extents.c (Fset_extent_parent): * file-coding.c (coding_reader): * file-coding.c (coding_writer): * file-coding.c (gzip_convert): * frame.c (generate_title_string): * gutter.c (calculate_gutter_size_from_display_lines): * indent.c (vmotion_1): * lread.c (read_bit_vector): * mule-coding.c (iso2022_decode): * rangetab.c: * rangetab.c (Fcopy_range_table): * rangetab.c (Fget_range_table): * rangetab.c (unified_range_table_copy_data): * redisplay-msw.c (mswindows_output_string): * redisplay-output.c (output_display_line): * redisplay-output.c (redisplay_move_cursor): * redisplay-output.c (redisplay_clear_bottom_of_window): * redisplay-tty.c (tty_output_ichar_dynarr): * redisplay-tty.c (set_foreground_to): * redisplay-tty.c (set_background_to): * redisplay-xlike-inc.c (XLIKE_output_string): * redisplay.c (redisplay_window_text_width_string): * redisplay.c (redisplay_text_width_string): * redisplay.c (create_text_block): * redisplay.c (SET_CURRENT_MODE_CHARS_PIXSIZE): * redisplay.c (generate_fstring_runes): * redisplay.c (regenerate_modeline): * redisplay.c (ensure_modeline_generated): * redisplay.c (real_current_modeline_height): * redisplay.c (create_string_text_block): * redisplay.c (regenerate_window): * redisplay.c (REGEN_INC_FIND_START_END): * redisplay.c (point_visible): * redisplay.c (redisplay_window): * redisplay.c (mark_glyph_block_dynarr): * redisplay.c (line_start_cache_start): * redisplay.c (start_with_line_at_pixpos): * redisplay.c (update_line_start_cache): * redisplay.c (glyph_to_pixel_translation): * redisplay.c (pixel_to_glyph_translation): * sysdep.c (qxe_readdir): * text.c (dfc_convert_to_external_format): * text.c (dfc_convert_to_internal_format): * toolbar-common.c (common_output_toolbar_button): * window.c (window_modeline_height): * window.c (Fwindow_last_line_visible_height): * window.c (window_displayed_height): * window.c (window_scroll): * window.c (get_current_pixel_pos): Use Dynarr_begin() in place of Dynarr_atp (foo, 0). * dynarr.c (Dynarr_realloc): * dynarr.c (Dynarr_lisp_realloc): * dynarr.c (Dynarr_resize): * dynarr.c (Dynarr_insert_many): * dynarr.c (Dynarr_delete_many): * dynarr.c (Dynarr_memory_usage): * dynarr.c (stack_like_malloc): * dynarr.c (stack_like_free): * lisp.h: * lisp.h (DECLARE_DYNARR_LISP_IMP): * lisp.h (XD_DYNARR_DESC): * lisp.h (Dynarr_pop): * gutter.c (output_gutter): * redisplay-output.c (sync_rune_structs): * redisplay-output.c (redisplay_output_window): Redo the dynarr code, add greater checks. Rename the `len', `largest' and `max' members to `len_', `largest_' and `max_' to try and catch existing places that might directly modify these values. Make new accessors Dynarr_largest() and Dynarr_max() and make them and existing Dynarr_length() be non-lvalues by adding '+ 0' to them; fix a couple of places in the redisplay code that tried to modify the length directly by setting Dynarr_length(). Use the accessors whenever possible even in the dynarr code itself. The accessors also verify that 0 <= len <= largest <= max. Rename settor function Dynarr_set_size() to Dynarr_set_length() and use it more consistently; also create lower-level Dynarr_set_length_1(). This latter function should be the only function that directly modifies the `len_' member of a Dynarr, and in the process makes sure that the `largest' value is kept correct. Consistently use ERROR_CHECK_STRUCTURES instead of ERROR_CHECK_TYPES for error-checking code. Reintroduce the temporarily disabled verification code on the positions of Dynarr_at(), Dynarr_atp() and Dynarr_atp_past_end(). Also create Dynarr_resize_if() in place of a repeated code fragment. Clean up all the functions that modify Dynarrs to use the new macros and functions and verify the correctness of the Dynarr both before and after the change. Note that there are two kinds of verification -- one for accessing and one for modifying. The difference is that the modify verification additionally checks to make sure that the Dynarr isn't locked. (This is used in redisplay to check for problems with reentrancy.) * lrecord.h: Move XD_DYNARR_DESC to lisp.h, grouping with the dynarr code. 2010-02-03 Jerry James <james@xemacs.org> * s/mach-bsd4-3.h: Add historical copyright and license information, unearthed by Ben Wing. 2010-02-03 Ben Wing <ben@xemacs.org> * bytecode.c: Fix minor compile problem. 2010-02-03 Ben Wing <ben@xemacs.org> * symbols.c (defsymbol_massage_name_1): * symbols.c (defsymbol_nodump): * symbols.c (defsymbol): * symbols.c (defkeyword): * symeval.h (DEFVAR_SYMVAL_FWD_OBJECT): Temporarily back out staticpro-related changes in symbols.c and symeval.h to fix compile problems, will put back when `latest-fix' workspace gets merged in. 2010-02-03 Ben Wing <ben@xemacs.org> * alloc.c (Fmake_byte_code): * lread.c: * lread.c (readevalloop): * lread.c (Fread): * lread.c (Fread_from_string): * lread.c (read_list_conser): * lread.c (read_list): * lread.c (vars_of_lread): Remove the old kludgy stuff bracketed by `#ifdef COMPILED_FUNCTION_ANNOTATION_HACK_OLD_WAY'. 2010-02-03 Ben Wing <ben@xemacs.org> * alloc.c (Fmake_byte_code): * bytecode.h: * lisp.h: * lread.c: * lread.c (readevalloop): * lread.c (Fread): * lread.c (Fread_from_string): * lread.c (read_list_conser): * lread.c (read_list): * lread.c (vars_of_lread): * symbols.c: * symbols.c (Fdefine_function): Turn on the "compiled-function annotation hack". Implement it properly by hooking into Fdefalias(). Note in the docstring to `defalias' that we do this. Remove some old broken code and change code that implemented the old kludgy way of hooking into the Lisp reader into bracketed by `#ifdef COMPILED_FUNCTION_ANNOTATION_HACK_OLD_WAY', which is not enabled. Also enable byte-code metering when DEBUG_XEMACS -- this is a form of profiling for computing histograms of which sequences of two bytecodes are used most often. * bytecode-ops.h: * bytecode-ops.h (OPCODE): New file. Extract out all the opcodes and declare them using OPCODE(), a bit like frame slots and such. This way the file can be included multiple times if necessary to iterate multiple times over the byte opcodes. * bytecode.c: * bytecode.c (NUM_REMEMBERED_BYTE_OPS): * bytecode.c (OPCODE): * bytecode.c (assert_failed_with_remembered_ops): * bytecode.c (READ_UINT_2): * bytecode.c (READ_INT_1): * bytecode.c (READ_INT_2): * bytecode.c (PEEK_INT_1): * bytecode.c (PEEK_INT_2): * bytecode.c (JUMP_RELATIVE): * bytecode.c (JUMP_NEXT): * bytecode.c (PUSH): * bytecode.c (POP_WITH_MULTIPLE_VALUES): * bytecode.c (DISCARD): * bytecode.c (UNUSED): * bytecode.c (optimize_byte_code): * bytecode.c (optimize_compiled_function): * bytecode.c (Fbyte_code): * bytecode.c (vars_of_bytecode): * bytecode.c (init_opcode_table_multi_op): * bytecode.c (reinit_vars_of_bytecode): * emacs.c (main_1): * eval.c (funcall_compiled_function): * symsinit.h: Any time we change either the instruction pointer or the stack pointer, assert that we're going to move it to a valid location. This should catch failures right when they occur rather than sometime later. This requires that we pass in another couple of parameters into some functions (only with error-checking enabled, see below). Also keep track, using a circular queue, of the last 100 byte opcodes seen, and when we hit an assert failure during byte-code execution, output the contents of the queue in a nice readable fashion. This requires that bytecode-ops.h be included a second time so that a table mapping opcodes to the name of their operation can be constructed. This table is constructed in new function reinit_vars_of_bytecode(). Everything in the last two paras happens only when ERROR_CHECK_BYTE_CODE. Add some longish comments describing how the arrays that hold the stack and instructions, and the pointers used to access them, work. * gc.c: Import some code from my `latest-fix' workspace to mark the staticpro's in order from lowest to highest, rather than highest to lowest, so it's easier to debug when something goes wrong. * lisp.h (abort_with_message): Renamed from abort_with_msg(). * symbols.c (defsymbol_massage_name_1): * symbols.c (defsymbol_nodump): * symbols.c (defsymbol): * symbols.c (defkeyword): * symeval.h (DEFVAR_SYMVAL_FWD_OBJECT): Make the various calls to staticpro() instead call staticpro_1(), passing in the name of the C var being staticpro'ed, so that it shows up in staticpro_names. Otherwise staticpro_names just has 1000+ copies of the word `location'. 2010-02-02 Ben Wing <ben@xemacs.org> * bytecode.c (execute_rare_opcode): * lisp.h (abort_with_msg): New. When aborting due to unknown opcode, output more descriptive msg. 2010-02-01 Vin Shelton <acs@xemacs.org> * intl-encap-win32.c: Added description of override keyword. Fix 2nd arg to CreateMDIWindowW. * intl-auto-encap-win32.c: * intl-auto-encap-win32.h: Fix 2nd arg to qxeCreateMDIWindow. 2010-02-01 Aidan Kehoe <kehoea@parhasard.net> * fns.c (internal_equalp): Use bytecode_arithcompare, which takes two args, instead of passing a stack pointer to Feqlsign. Use CANONCASE(), not DOWNCASE(), for case-insensitive character comparison. Correct a comment here. * casefiddle.c (casify_object): New operation in this function, CASE_CANONICALIZE. (Fcanoncase): New function, used for case-insensitive comparison. * lisp.h: Make Fcanoncase, bytecode_arithcompare visible here. * bytecode.c (bytecode_arithcompare): Make this visible to other files. 2010-02-03 Ben Wing <ben@xemacs.org> * Makefile.in.in: * Makefile.in.in (x_objs): * Makefile.in.in (gtk_gui_objs): * console-xlike-inc.h: * depend: * device-x.c: * emacs.c: * gccache-gtk.h: * gccache-gtk.h (gc_cache_lookup): * gccache-x.c: * gccache-x.c (GCCACHE_HASH): * gccache-x.h: * toolbar-gtk.c: * toolbar-gtk.c (gtk_initialize_frame_toolbars): * toolbar-x.c: * toolbar-x.c (x_initialize_frame_toolbars): * toolbar-xlike.c: * toolbar-xlike.c (xlike_draw_blank_toolbar_button): * toolbar-xlike.c (xlike_output_toolbar_button): * toolbar-xlike.c (xlike_get_button_size): * toolbar-xlike.c (XLIKE_OUTPUT_BUTTONS_LOOP): * toolbar-xlike.c (xlike_output_toolbar): * toolbar-xlike.c (xlike_clear_toolbar): * toolbar-xlike.c (xlike_output_frame_toolbars): * toolbar-xlike.c (xlike_clear_frame_toolbars): * toolbar-xlike.c (xlike_redraw_exposed_toolbar): * toolbar-xlike.c (xlike_redraw_exposed_toolbars): * toolbar-xlike.c (xlike_redraw_frame_toolbars): * toolbar-xlike.h: * toolbar-xlike.h (xlike_clear_frame_toolbars): Rename some files to make them consistent with general naming rules: xgccache.c -> gccache-x.c xgccache.h -> gccache-x.h toolbar-common.c -> toolbar-xlike.c toolbar-common.h -> toolbar-xlike.h Fix include-file references. Also change the names of functions in now-named toolbar-xlike.c to be xlike_foo() instead of common_foo(). Add a longish comment in console-xlike-inc.h describing the "xlike" system, how it works and what the various files are used for. 2010-02-01 Ben Wing <ben@xemacs.org> * Makefile.in.in: * compiler.h: * config.h.in: * console-x-impl.h: * console-x-impl.h (struct x_frame): * console-x-impl.h (FRAME_X_TOTALLY_VISIBLE_P): * console-x.h: * console-xlike-inc.h: * emacs.c (main_1): * faces.c (complex_vars_of_faces): * font-mgr.h: * frame-x.c (x_delete_frame): * frame-x.c (x_update_frame_external_traits): * glyphs-x.c (update_widget_face): * inline.c: * objects-x-impl.h: * objects-x-impl.h (struct x_color_instance_data): * objects-x-impl.h (struct x_font_instance_data): * objects-x.c: * objects-x.c (x_initialize_color_instance): * objects-x.c (x_initialize_font_instance): * objects-x.c (x_print_font_instance): * objects-x.c (x_finalize_font_instance): * objects-x.c (x_font_instance_truename): * objects-x.c (vars_of_objects_x): * objects-x.h: USE_XFT* -> HAVE_XFT*. But in objects-xlike-inc.c and redisplay-xlike-inc.c, continue to use USE_XFT, and define it appropriately in console-xlike-inc.h when both HAVE_XFT and THIS_IS_X -- even if HAVE_XFT, we don't want to enable XFT code when included in a *-gtk.c file. 2010-02-01 Ben Wing <ben@xemacs.org> * alloc.c (common_init_alloc_early): Fix compiler breakage. 2010-02-01 Ben Wing <ben@xemacs.org> * objects-gtk-impl.h: * objects-gtk-impl.h (XCOLOR_INSTANCE_GTK_COLOR): * objects-gtk-impl.h (XFONT_INSTANCE_GTK_FONT): * objects-x-impl.h (XCOLOR_INSTANCE_X_COLOR): * objects-x-impl.h (XFONT_INSTANCE_X_FONT): Define XCOLOR_INSTANCE_X_COLOR, XCOLOR_INSTANCE_GTK_COLOR, XFONT_INSTANCE_X_FONT, XFONT_INSTANCE_GTK_FONT for convenience purposes. Fixes compile bug in redisplay-xlike-inc.c. 2010-01-29 Ben Wing <ben@xemacs.org> * lisp.h: * objects.h (set_face_boolean_attached_to): Use lisp.h for EXFUN of Fregexp_quote, that's what it's for. 2010-02-01 Ben Wing <ben@xemacs.org> * compiler.h: Create a USED() macro to force unused-var warnings to go away, in certain cases where it's inconvenient to do otherwise (e.g. when THIS_IS_GTK in redisplay-xlike-inc.c). * console-x.h: Remove unneeded decls, make some static. * redisplay-xlike-inc.c: * console-xlike-inc.h: New file. Include defns from redisplay-xlike-inc.c that may be useful in other XLIKE files. Correct the handling of colors and font-style setting functions in the xlike defns. Lots of fixes in the GTK-specific defns. * depend: Regenerate. * event-xlike-inc.c: * event-xlike-inc.c (USE_UNICODE_MAP): * event-xlike-inc.c (endif): * gccache-gtk.c: * gtk-glue.c (xemacs_list_to_gtklist): * gtk-glue.c (xemacs_gtklist_to_list): * gtk-glue.c (FROB): * gtk-glue.c (face_to_gc): * gtk-glue.c (face_to_style): * gtk-glue.c (gdk_event_to_emacs_event): * gtk-xemacs.h (struct _GtkXEmacs): * gtk-xemacs.h (struct _GtkXEmacsClass): * objects-xlike-inc.c: Cosmetic, comment fixes. * glyphs.c (pixmap_to_lisp_data): Unused var fixes. * gtk-glue.c: * gccache-gtk.c: * gtk-xemacs.c: * gtk-xemacs.h: * objects-xlike-inc.c: * ui-gtk.c: * ui-gtk.h: * xgccache.c: * xgccache.c (GC_CACHE_SIZE): * xgccache.h: Misc include-file fixes. * objects-xlike-inc.c (XFUN): * objects-xlike-inc.c (xlistfonts_checking_charset): Combine some ifdeffed stuff using defs in console-xlike-inc.h. * redisplay-gtk.c: * redisplay-gtk.c (THIS_IS_GTK): * redisplay-gtk.c (XLIKE_bevel_area): * redisplay-gtk.c (XLIKE_ring_bell): * redisplay-gtk.c (gdk_draw_text_image): Fix numerous compile problems. Delete gtk_output_shadows(), which mostly duplicates generic bevel_modeline(). Fix up gtk_bevel_modeline() into XLIKE_bevel_area() and make use of the style var properly to set the appropriate GTK constant. * redisplay-x.c: * redisplay-x.c (XLIKE_window_output_begin): * redisplay-x.c (XLIKE_window_output_end): * redisplay-x.c (XLIKE_bevel_area): * redisplay-x.c (x_output_shadows): * redisplay-x.c (XLIKE_ring_bell): Make x_output_shadows be static. Change the defn of various functions to look like XLIKE_foo() so it matches the calling convention elsewhere. * redisplay-xlike-inc.c: * redisplay-xlike-inc.c (NEED_GCCACHE_H): * redisplay-xlike-inc.c (XLIKE_text_width): * redisplay-xlike-inc.c (XLIKE_get_gc): * redisplay-xlike-inc.c (XLIKE_text_width_single_run): * redisplay-xlike-inc.c (XFT_FROB_LISP_COLOR): * redisplay-xlike-inc.c (XLIKE_output_xlike_pixmap): * redisplay-xlike-inc.c (XLIKE_output_pixmap): * redisplay-xlike-inc.c (XLIKE_output_vertical_divider): * redisplay-xlike-inc.c (XLIKE_flash): Lots of header fixes. Lots of stuff moved to console-xlike-inc.h. Use XFUN() to generate function names instead of directly calling XLIKE_PASTE(). Remove unnecessary prototypes. Unify calls to text_width funs. Make XLIKE_get_gc non-static since it's called from gtk. Change the color-function calls and fill-style-setting calls to match the changes in console-xlike-inc.h. Use USED() to avoid some warnings. * symsinit.h: Sort the prototypes, and add a fun `sort-symsinit' in a comment that does the sorting (using sort-regexp-fields). * symsinit.h (init_number): * sysgtk.h: New file, wraps the various GTK headers. * sysgdkx.h: New file, wraps <gtk/gdkx.h>. Keep this separate to * event-gtk.h: Delete. Combine stuff into console-gtk.h. help isolate X-specific code from GTK. * device-gtk.c: * event-gtk.c: * console-gtk.h: * frame-gtk.c: * gccache-gtk.c: * gccache-gtk.h: * glyphs-gtk.c (gtk_colorize_image_instance): * glyphs-gtk.h: * gtk-xemacs.h: * objects-gtk.c: * objects-gtk.c (MAX_FONT_COUNT): * ui-gtk.h: Use sysgtk.h or sysgdkx.h instead of directly including GTK headers. Don't include event-gtk.h. 2010-02-01 Ben Wing <ben@xemacs.org> * abbrev.c (abbrev_match_mapper): * buffer.h (CANON_TABLE_OF): * buffer.h: * editfns.c (Fchar_equal): * minibuf.c (scmp_1): * text.c (qxestrcasecmp_i18n): * text.c (qxestrncasecmp_i18n): * text.c (qxetextcasecmp): * text.c (qxetextcasecmp_matching): Create new macro CANONCASE that converts to a canonical mapping and use it to do caseless comparisons instead of DOWNCASE. * alloc.c: * alloc.c (cons_equal): * alloc.c (vector_equal): * alloc.c (string_equal): * bytecode.c (compiled_function_equal): * chartab.c (char_table_entry_equal): * chartab.c (char_table_equal): * data.c (weak_list_equal): * data.c (weak_box_equal): * data.c (ephemeron_equal): * device-msw.c (equal_devmode): * elhash.c (hash_table_equal): * events.c (event_equal): * extents.c (properties_equal): * extents.c (extent_equal): * faces.c: * faces.c (face_equal): * faces.c (face_hash): * floatfns.c (float_equal): * fns.c: * fns.c (bit_vector_equal): * fns.c (plists_differ): * fns.c (Fplists_eq): * fns.c (Fplists_equal): * fns.c (Flax_plists_eq): * fns.c (Flax_plists_equal): * fns.c (internal_equal): * fns.c (internal_equalp): * fns.c (internal_equal_0): * fns.c (syms_of_fns): * glyphs.c (image_instance_equal): * glyphs.c (glyph_equal): * glyphs.c (glyph_hash): * gui.c (gui_item_equal): * lisp.h: * lrecord.h (struct lrecord_implementation): * marker.c (marker_equal): * number.c (bignum_equal): * number.c (ratio_equal): * number.c (bigfloat_equal): * objects.c (color_instance_equal): * objects.c (font_instance_equal): * opaque.c (equal_opaque): * opaque.c (equal_opaque_ptr): * rangetab.c (range_table_equal): * specifier.c (specifier_equal): Add a `foldcase' param to the equal() method and use it to implement `equalp' comparisons. Also add to plists_differ(), although we don't currently use it here. Rewrite internal_equalp(). Implement cross-type vector comparisons. Don't implement our own handling of numeric promotion -- just use the `=' primitive. Add internal_equal_0(), which takes a `foldcase' param and calls either internal_equal() or internal_equalp(). * buffer.h: When given a 0 for buffer (which is the norm when functions don't have a specific buffer available), use the current buffer's table, not `standard-case-table'; otherwise the current settings are ignored. * casetab.c: * casetab.c (set_case_table): When handling old-style vectors of 256 in `set-case-table' don't overwrite the existing table! Instead create a new table and populate. * device-msw.c (sync_printer_with_devmode): * lisp.h: * text.c (lisp_strcasecmp_ascii): Rename lisp_strcasecmp to lisp_strcasecmp_ascii and use lisp_strcasecmp_i18n for caseless comparisons in some places. * elhash.c: Delete unused lisp_string_hash and lisp_string_equal(). * events.h: * keymap-buttons.h: * keymap.h: * keymap.c (keymap_lookup_directly): * keymap.c (keymap_store): * keymap.c (FROB): * keymap.c (key_desc_list_to_event): * keymap.c (describe_map_mapper): * keymap.c (INCLUDE_BUTTON_ZERO): New file keymap-buttons.h; use to handle buttons 1-26 in place of duplicating code 26 times. * frame-gtk.c (allocate_gtk_frame_struct): * frame-msw.c (mswindows_init_frame_1): Fix some comments about internal_equal() in redisplay that don't apply any more. * keymap-slots.h: * keymap.c: New file keymap-slots.h. Use it to notate the slots in a keymap structure, similar to frameslots.h or coding-system-slots.h. * keymap.c (MARKED_SLOT): * keymap.c (keymap_equal): * keymap.c (keymap_hash): Implement. 2010-02-01 Ben Wing <ben@xemacs.org> * syntax.c: * syntax.c (scan_lists): * syntax.c (syms_of_syntax): Declare `scan-error' as a type of `syntax-error'. In `scan-lists' et al., don't signal a syntax error but instead a `scan-error', and pass a couple of integer arguments, for GNU compatibility. Fixes problems with typing double-quote in texinfo.el. 2010-01-31 Aidan Kehoe <kehoea@parhasard.net> * symbols.c (Fspecial_operator_p, syms_of_symbols): * eval.c (print_subr, Finteractive_p, Ffuncall) (Ffunction_min_args, Ffunction_max_args, vars_of_eval): * editfns.c: * data.c (Fsubr_max_args): * doc.c (Fbuilt_in_symbol_file): Change "special form" to "special operator" in our sources. 2010-01-31 Aidan Kehoe <kehoea@parhasard.net> * search.c (search_buffer): When checking the octets of c for identity, don't compare the same octet with itself. Thank you Ben Wing! 2010-01-30 Ben Wing <ben@xemacs.org> * intl-auto-encap-win32.c: * intl-auto-encap-win32.c (qxeExtractAssociatedIcon): * intl-auto-encap-win32.c (qxeExtractIconEx): * intl-auto-encap-win32.c (qxeCreateMDIWindow): * intl-auto-encap-win32.c (qxeCreateWindowStation): * intl-auto-encap-win32.c (qxeDdeCreateStringHandle): * intl-auto-encap-win32.c (qxeAbortSystemShutdown): * intl-auto-encap-win32.c (qxeRegConnectRegistry): * intl-auto-encap-win32.c (qxeGetICMProfile): * intl-auto-encap-win32.h: Rebuild. * intl-encap-win32.c: * intl-encap-win32.c (qxeUpdateICMRegKey): Delete manual definitions of functions with former errors in Cygwin headers but no longer. Use "override" with some functions where Cygwin or VS6 accidentally omits a const declaration or includes an extra one. Use "no" on SendMessageTimeout, which has an error in the VS6 prototype (you could manually fix this with an ifdef to split the Cygwin vs. VS6 calls, if we ever actually used this function). 2010-01-30 Aidan Kehoe <kehoea@parhasard.net> * search.c (search_buffer): Don't use Boyer-Moore for case-insensitive search if the search pattern contains repeated Ibytes and the corresponding character has case information (or, equivalently, if one of its case equivalents would contain repeated Ibytes). 2010-01-31 Aidan Kehoe <kehoea@parhasard.net> Move #'mapcar*, #'mapcan, #'mapc, #'map, #'mapl, #'mapcon to C; extend #'mapvector, #'mapconcat, #'mapcar to support more SEQUENCES; have them all error with circular lists. * fns.c (Fsubseq): Call CHECK_SEQUENCE here; Flength can return from the debugger if it errors with a non-sequence, leading to a crash in Fsubseq if sequence really is *not* a sequence. (mapcarX): Rename mapcar1 to mapcarX; rework it comprehensively to take an optional lisp output argument, and a varying number of sequences. Special-case a single list argument, as we used to, saving its elements in the stack space for the results before calling FUNCTION, so FUNCTION can corrupt the list all it wants. dead_wrong_type_argument() in the other cases if we encounter a non-cons where we expected a cons. (Fmapconcat): Accept further SEQUENCES after separator here. Special-case the idiom (mapconcat 'identity SEQUENCE), don't even funcall. (FmapcarX): Rename this from Fmapcar. Accept optional SEQUENCES. (Fmapvector): Accept optional SEQUENCES. (Fmapcan, Fmapc, Fmap): Move these here from cl-extra.el. (Fmap_into): New function, as specified by Common Lisp. (maplist): New function, the guts of the implementation of Fmaplist and Fmapl. (Fmaplist, Fmapl, Fmapcon): Move these from cl-extra.el. (syms_of_fns): Add a few needed symbols here, for the type tests used by #'map. Add the new subrs, with aliases for #'mapc-internal and #'mapcar. * general-slots.h: Declare Qcoerce here, now it's used in both indent.c and fns.c * indent.c (syms_of_indent): Qcoerce is gone from here. * lisp.h: Add ARRAYP(), SEQUENCEP(), and the corresponding CHECK_* macros. Declare Fbit_vector, Fstring, FmapcarX, now other files need to use them. * data.c (Farrayp, Fsequencep): Use ARRAYP and SEQUENCEP, just added to lisp.h * buffer.c (Fbuffer_list): Now Fmapcar has been renamed FmapcarX and takes MANY arguments, update this function to reflect that. 2010-01-28 Jerry James <james@xemacs.org> * Makefile.in.in: Remove internationalization rules, since the lib-src programs they invoke are now gone. 2010-01-29 Ben Wing <ben@xemacs.org> * search.c (boyer_moore): Fix longstanding bug involving searching for Control-1 chars; code was trying to directly extract the last byte in the textual representation of a char from an Ichar (and doing it in a buggy fashion) rather than just converting the Ichar to text and looking at the last byte. 2010-01-28 Ben Wing <ben@xemacs.org> * syswindows.h: Add typedefs for PCVOID and PDWORD_PTR for non-Cygwin-headers folks (i.e. Visual Studio et al.). 2010-01-27 Aidan Kehoe <kehoea@parhasard.net> * number.c (Fdenominator): Oops, change #else to #endif here; thank you Vin Shelton, thank you Robert Delius Royar. 2010-01-28 Ben Wing <ben@xemacs.org> * device-x.c (x_init_device): * emodules.c (emodules_load): * emodules.c (emodules_doc_subr): * emodules.c (emodules_doc_sym): * emodules.h: Make the externally-called functions emodules_doc_sym() and emodules_doc_subr() take Ascbyte * pointers since they're usually passed string constants and we can't guarantee the encoding if it's not ASCII. Fix pointer type in calls to dll_variable(), etc. 2010-01-27 Ben Wing <ben@xemacs.org> * lread.c (vars_of_lread): Turn on load-ignore-out-of-date-elc-files by default. 2010-01-27 Ben Wing <ben@xemacs.org> * event-unixoid.c (read_event_from_tty_or_stream_desc): Don't try to write one byte into a four-byte variable, leaving the rest undefined. This is a recipe for crashing. 2010-01-27 Ben Wing <ben@xemacs.org> * .gdbinit.in.in: * README: * abbrev.c (write_abbrev): * abbrev.c (describe_abbrev): * alloc.c (make_extstring): * alloc.c (build_istring): * alloc.c (build_cistring): * alloc.c (build_ascstring): * alloc.c (build_extstring): * alloc.c (build_msg_istring): * alloc.c (build_defer_istring): * buffer.c (Fgenerate_new_buffer_name): * buffer.c (init_buffer_2): * console-tty.c (tty_init_console): * console-x.c (get_display_arg_connection): * console-x.c (x_perhaps_init_unseen_key_defaults): * database.c (dbm_map): * database.c (dbm_get): * database.c (berkdb_get): * database.c (berkdb_map): * device-gtk.c (FROB_PIXMAP): * device-gtk.c (Fgtk_style_info): * device-msw.c (msprinter_default_printer): * device-msw.c (sync_printer_with_devmode): * device-x.c (coding_system_of_xrm_database): * device-x.c (x_init_device): * device-x.c (signal_if_x_error): * device-x.c (Fx_get_resource): * device-x.c (Fx_server_vendor): * device-x.c (Fx_get_font_path): * dialog-x.c (maybe_run_dbox_text_callback): * doc.c (extract_object_file_name): * doc.c (unparesseuxify_doc_string): * doc.c (get_doc_string): * doc.c (get_object_file_name): * doc.c (Fdocumentation): * doc.c (Fsnarf_documentation): * doc.c (Fsubstitute_command_keys): * editfns.c (init_editfns): * editfns.c (Ftemp_directory): * editfns.c (Fuser_login_name): * editfns.c (Fuser_real_login_name): * editfns.c (Fuser_home_directory): * editfns.c (Fformat_time_string): * editfns.c (Fcurrent_time_string): * editfns.c (Fcurrent_time_zone): * emacs.c: * emacs.c (main_1): * emodules.c (Flist_modules): * emodules.c (emodules_load): * emodules.c (emodules_doc_sym): * emodules.c (vars_of_module): * event-Xt.c (x_has_keysym): * event-gtk.c (emacs_gtk_format_magic_event): * event-gtk.c (dragndrop_data_received): * event-gtk.c (gtk_reset_key_mapping): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * faces.c (complex_vars_of_faces): * file-coding.c (find_coding_system): * file-coding.c (setup_eol_coding_systems): * file-coding.c (make_coding_system_1): * file-coding.c (snarf_coding_system): * fileio.c: * fileio.c (lisp_strerror): * fileio.c (Ffile_name_directory): * fileio.c (Ffile_name_as_directory): * fileio.c (Fdirectory_file_name): * fileio.c (if): * fileio.c (Ffile_symlink_p): * fileio.c (Fencrypt_string): * fileio.c (Fdecrypt_string): * filelock.c (lock_file): * filelock.c (Ffile_locked_p): * floatfns.c (matherr): * font-mgr.c (build_fcapi_string): * font-mgr.c (make_xlfd_font_regexp): * frame-msw.c (mswindows_window_id): * frame-msw.c (mswindows_frame_property): * frame-x.c: * frame-x.c (color_to_string): * frame-x.c (maybe_set_frame_title_format): * frame-x.c (x_cde_transfer_callback): * frame-x.c (Fx_window_id): * glade.c (connector): * glade.c (Fglade_xml_textdomain): * glade.c (syms_of_glade): * glyphs-eimage.c (jpeg_instantiate): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (font_instantiate): * glyphs-gtk.c (BUILD_GLYPH_INST): * glyphs-x.c (x_locate_pixmap_file): * glyphs-x.c (font_instantiate): * glyphs-x.c (x_widget_property): * glyphs-x.c (BUILD_GLYPH_INST): * glyphs.c (print_image_instance): * glyphs.c (bitmap_to_lisp_data): * glyphs.c (pixmap_to_lisp_data): * gpmevent.c (turn_off_gpm): * gpmevent.c (Fgpm_enabled_p): * gpmevent.c (Fgpm_enable): * gtk-glue.c (__make_string_mapper): * gtk-glue.c (xemacs_gtklist_to_list): * gtk-xemacs.c (FROB_FACE): * gtk-xemacs.c (xemacs_gtk_convert_color): * hpplay.c (player_error_internal): * hpplay.c (myHandler): * insdel.c (buffer_insert_ascstring_1): * insdel.h: * insdel.h (buffer_insert_ascstring): * intl.c (Fcurrent_locale): * intl.c (Fset_current_locale): * keymap.c (make_key_description): * keymap.c (Ftext_char_description): * keymap.c (describe_command): * keymap.c (describe_map): * lisp.h: * lread.c: * lread.c (locate_file_in_directory_mapper): * lread.c (locate_file_construct_suffixed_files_mapper): * mule-charset.c (Fmake_charset): * nt.c (Fmswindows_short_file_name): * nt.c (Fmswindows_long_file_name): * objects-gtk.c (__get_gtk_font_truename): * objects-gtk.c (__gtk_font_list_internal): * objects-msw.c (font_enum_callback_2): * objects-msw.c (create_hfont_from_font_spec): * objects-msw.c (mswindows_font_list): * objects-msw.c (mswindows_font_spec_matches_charset_stage_2): * objects-tty.c (tty_initialize_font_instance): * objects-x.c (x_font_truename): * objects-x.c (x_font_instance_truename): * objects-x.c (x_font_instance_properties): * objects-x.c (x_font_list): * print.c (write_cistring): * print.c (print_vector_internal): * print.c (print_cons): * process-nt.c (nt_canonicalize_host_name): * process-unix.c (unix_create_process): * process-unix.c (unix_canonicalize_host_name): * process.c (status_message): * process.c (status_notify): * process.c (init_xemacs_process): * process.c (syms_of_process): * redisplay-tty.c (term_get_fkeys_1): * redisplay-tty.c (CONDITIONAL_REASSIGN): * search.c (compile_pattern_1): * select-common.h (selection_data_to_lisp_data): * select-gtk.c (atom_to_symbol): * select-gtk.c (PROCESSING_GTK_CODE): * select-msw.c (mswindows_get_foreign_selection): * select-x.c (x_atom_to_symbol): * select-x.c (Fx_get_cutbuffer_internal): * symbols.c (intern_istring): * symbols.c (intern): * symbols.c (intern_converting_underscores_to_dashes): * symbols.c (Fintern): * sysdep.c (init_system_name): * sysdll.c (dll_error): * sysdll.c (dll_open): * syswindows.h: * syswindows.h (build_tstr_string): * tests.c (DFC_CHECK_LENGTH): * tests.c (DFC_CHECK_CONTENT): * tests.c (DFC_RESULT_PASS): * tests.c (Ftest_data_format_conversion): * text.c: * text.c (new_dfc_convert_now_damn_it): * text.h: * text.h (build_wext_string): * tooltalk.c (tt_build_c_string): * tooltalk.c (Ftooltalk_default_procid): * tooltalk.c (Ftooltalk_default_session): * tooltalk.c (init_tooltalk): * ui-byhand.c (Fgtk_clist_get_text): * ui-byhand.c (Fgtk_clist_get_pixtext): * ui-byhand.c (Fgtk_label_get): * ui-byhand.c (Fgtk_notebook_query_tab_label_packing): * ui-gtk.c (emacs_gtk_object_printer): * ui-gtk.c (emacs_gtk_boxed_printer): * ui-gtk.c (gtk_type_to_lisp): * ui-gtk.c (symbol_to_enum): * ui-gtk.c (enum_to_symbol): * unexaix.c (report_error): * unexaix.c (ERROR0): * unexec.c (report_error): * unexec.c (ERROR0): * unicode.c (unicode_to_ichar): * win32.c (tstr_to_local_file_format): * win32.c (Fmswindows_cygwin_to_win32_path): * win32.c (struct read_link_hash): * xemacs.def.in.in: Rename: write_c_string -> write_cistring build_intstring -> build_istring build_string -> build_cistring build_ext_string -> build_extstring make_ext_string -> make_extstring buffer_insert_c_string -> buffer_insert_ascstring intern_int -> intern_istring These functions have been renamed so that the naming harmonizes with the typedefs for strings: `cistring' along with CIbyte *, `istring' along with Ibyte *, `extstring' along with Extbyte *, `ascstring' along with Ascbyte *. Also make buffer_insert_ascstring take Ascbyte * and assert that its argument is ASCII. 2010-01-26 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (build_ascstring): * alloc.c (build_msg_cistring): * alloc.c (staticpro_1): * alloc.c (staticpro_name): * alloc.c (staticpro_nodump_1): * alloc.c (staticpro_nodump_name): * alloc.c (unstaticpro_nodump_1): * alloc.c (mcpro_1): * alloc.c (mcpro_name): * alloc.c (object_memory_usage_stats): * alloc.c (common_init_alloc_early): * alloc.c (init_alloc_once_early): * buffer.c (print_buffer): * buffer.c (vars_of_buffer): * buffer.c (common_init_complex_vars_of_buffer): * buffer.c (init_initial_directory): * bytecode.c (invalid_byte_code): * bytecode.c (print_compiled_function): * bytecode.c (mark_compiled_function): * chartab.c (print_table_entry): * chartab.c (print_char_table): * config.h.in: * console-gtk.c: * console-gtk.c (gtk_device_to_console_connection): * console-gtk.c (gtk_semi_canonicalize_console_connection): * console-gtk.c (gtk_canonicalize_console_connection): * console-gtk.c (gtk_semi_canonicalize_device_connection): * console-gtk.c (gtk_canonicalize_device_connection): * console-stream.c (stream_init_frame_1): * console-stream.c (vars_of_console_stream): * console-stream.c (init_console_stream): * console-x.c (x_semi_canonicalize_console_connection): * console-x.c (x_semi_canonicalize_device_connection): * console-x.c (x_canonicalize_device_connection): * console-x.h: * data.c (eq_with_ebola_notice): * data.c (Fsubr_interactive): * data.c (Fnumber_to_string): * data.c (digit_to_number): * device-gtk.c (gtk_init_device): * device-msw.c (print_devmode): * device-x.c (x_event_name): * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * dialog-msw.c (vars_of_dialog_mswindows): * doc.c (weird_doc): * doc.c (Fsnarf_documentation): * doc.c (vars_of_doc): * dumper.c (pdump): * dynarr.c: * dynarr.c (Dynarr_realloc): * editfns.c (Fuser_real_login_name): * editfns.c (get_home_directory): * elhash.c (print_hash_table_data): * elhash.c (print_hash_table): * emacs.c (main_1): * emacs.c (vars_of_emacs): * emodules.c: * emodules.c (_emodules_list): * emodules.c (Fload_module): * emodules.c (Funload_module): * emodules.c (Flist_modules): * emodules.c (find_make_module): * emodules.c (attempt_module_delete): * emodules.c (emodules_load): * emodules.c (emodules_doc_subr): * emodules.c (emodules_doc_sym): * emodules.c (syms_of_module): * emodules.c (vars_of_module): * emodules.h: * eval.c (print_subr): * eval.c (signal_call_debugger): * eval.c (build_error_data): * eval.c (signal_error): * eval.c (maybe_signal_error): * eval.c (signal_continuable_error): * eval.c (maybe_signal_continuable_error): * eval.c (signal_error_2): * eval.c (maybe_signal_error_2): * eval.c (signal_continuable_error_2): * eval.c (maybe_signal_continuable_error_2): * eval.c (signal_ferror): * eval.c (maybe_signal_ferror): * eval.c (signal_continuable_ferror): * eval.c (maybe_signal_continuable_ferror): * eval.c (signal_ferror_with_frob): * eval.c (maybe_signal_ferror_with_frob): * eval.c (signal_continuable_ferror_with_frob): * eval.c (maybe_signal_continuable_ferror_with_frob): * eval.c (syntax_error): * eval.c (syntax_error_2): * eval.c (maybe_syntax_error): * eval.c (sferror): * eval.c (sferror_2): * eval.c (maybe_sferror): * eval.c (invalid_argument): * eval.c (invalid_argument_2): * eval.c (maybe_invalid_argument): * eval.c (invalid_constant): * eval.c (invalid_constant_2): * eval.c (maybe_invalid_constant): * eval.c (invalid_operation): * eval.c (invalid_operation_2): * eval.c (maybe_invalid_operation): * eval.c (invalid_change): * eval.c (invalid_change_2): * eval.c (maybe_invalid_change): * eval.c (invalid_state): * eval.c (invalid_state_2): * eval.c (maybe_invalid_state): * eval.c (wtaerror): * eval.c (stack_overflow): * eval.c (out_of_memory): * eval.c (print_multiple_value): * eval.c (issue_call_trapping_problems_warning): * eval.c (backtrace_specials): * eval.c (backtrace_unevalled_args): * eval.c (Fbacktrace): * eval.c (warn_when_safe): * event-Xt.c (modwarn): * event-Xt.c (modbarf): * event-Xt.c (check_modifier): * event-Xt.c (store_modifier): * event-Xt.c (emacs_Xt_format_magic_event): * event-Xt.c (describe_event): * event-gtk.c (dragndrop_data_received): * event-gtk.c (store_modifier): * event-gtk.c (gtk_reset_modifier_mapping): * event-msw.c (dde_eval_string): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (FROB): * event-msw.c (emacs_mswindows_format_magic_event): * event-stream.c (external_debugging_print_event): * event-stream.c (execute_help_form): * event-stream.c (vars_of_event_stream): * events.c (print_event_1): * events.c (print_event): * events.c (event_equal): * extents.c (print_extent_1): * extents.c (print_extent): * extents.c (vars_of_extents): * faces.c (print_face): * faces.c (complex_vars_of_faces): * file-coding.c: * file-coding.c (print_coding_system): * file-coding.c (print_coding_system_in_print_method): * file-coding.c (default_query_method): * file-coding.c (find_coding_system): * file-coding.c (make_coding_system_1): * file-coding.c (chain_print): * file-coding.c (undecided_print): * file-coding.c (gzip_print): * file-coding.c (vars_of_file_coding): * file-coding.c (complex_vars_of_file_coding): * fileio.c: * fileio.c (report_file_type_error): * fileio.c (report_error_with_errno): * fileio.c (report_file_error): * fileio.c (barf_or_query_if_file_exists): * fileio.c (vars_of_fileio): * floatfns.c (matherr): * fns.c (print_bit_vector): * fns.c (Fmapconcat): * fns.c (add_suffix_to_symbol): * fns.c (add_prefix_to_symbol): * frame-gtk.c: * frame-gtk.c (Fgtk_window_id): * frame-x.c (def): * frame-x.c (x_cde_transfer_callback): * frame.c: * frame.c (Fmake_frame): * gc.c (show_gc_cursor_and_message): * gc.c (vars_of_gc): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (gtk_print_image_instance): * glyphs-msw.c (mswindows_print_image_instance): * glyphs-x.c (x_print_image_instance): * glyphs-x.c (update_widget_face): * glyphs.c (make_string_from_file): * glyphs.c (print_image_instance): * glyphs.c (signal_image_error): * glyphs.c (signal_image_error_2): * glyphs.c (signal_double_image_error): * glyphs.c (signal_double_image_error_2): * glyphs.c (xbm_mask_file_munging): * glyphs.c (pixmap_to_lisp_data): * glyphs.h: * gui.c (gui_item_display_flush_left): * hpplay.c (player_error_internal): * hpplay.c (myHandler): * intl-win32.c: * intl-win32.c (langcode_to_lang): * intl-win32.c (sublangcode_to_lang): * intl-win32.c (Fmswindows_get_locale_info): * intl-win32.c (lcid_to_locale_mule_or_no): * intl-win32.c (mswindows_multibyte_to_unicode_print): * intl-win32.c (complex_vars_of_intl_win32): * keymap.c: * keymap.c (print_keymap): * keymap.c (ensure_meta_prefix_char_keymapp): * keymap.c (Fkey_description): * keymap.c (Ftext_char_description): * lisp.h: * lisp.h (struct): * lisp.h (DECLARE_INLINE_HEADER): * lread.c (Fload_internal): * lread.c (locate_file): * lread.c (read_escape): * lread.c (read_raw_string): * lread.c (read1): * lread.c (read_list): * lread.c (read_compiled_function): * lread.c (init_lread): * lrecord.h: * marker.c (print_marker): * marker.c (marker_equal): * menubar-msw.c (displayable_menu_item): * menubar-x.c (command_builder_operate_menu_accelerator): * menubar.c (vars_of_menubar): * minibuf.c (reinit_complex_vars_of_minibuf): * minibuf.c (complex_vars_of_minibuf): * mule-charset.c (Fmake_charset): * mule-charset.c (complex_vars_of_mule_charset): * mule-coding.c (iso2022_print): * mule-coding.c (fixed_width_query): * number.c (bignum_print): * number.c (ratio_print): * number.c (bigfloat_print): * number.c (bigfloat_finalize): * objects-msw.c: * objects-msw.c (mswindows_color_to_string): * objects-msw.c (mswindows_color_list): * objects-tty.c: * objects-tty.c (tty_font_list): * objects-tty.c (tty_find_charset_font): * objects-xlike-inc.c (xft_find_charset_font): * objects-xlike-inc.c (endif): * print.c: * print.c (write_istring): * print.c (write_ascstring): * print.c (Fterpri): * print.c (Fprint): * print.c (print_error_message): * print.c (print_vector_internal): * print.c (print_cons): * print.c (print_string): * print.c (printing_unreadable_object): * print.c (print_internal): * print.c (print_float): * print.c (print_symbol): * process-nt.c (mswindows_report_winsock_error): * process-nt.c (nt_canonicalize_host_name): * process-unix.c (unix_canonicalize_host_name): * process.c (print_process): * process.c (report_process_error): * process.c (report_network_error): * process.c (make_process_internal): * process.c (Fstart_process_internal): * process.c (status_message): * process.c (putenv_internal): * process.c (vars_of_process): * process.h: * profile.c (vars_of_profile): * rangetab.c (print_range_table): * realpath.c (vars_of_realpath): * redisplay.c (vars_of_redisplay): * search.c (wordify): * search.c (Freplace_match): * sheap.c (sheap_adjust_h): * sound.c (report_sound_error): * sound.c (Fplay_sound_file): * specifier.c (print_specifier): * symbols.c (Fsubr_name): * symbols.c (do_symval_forwarding): * symbols.c (set_default_buffer_slot_variable): * symbols.c (set_default_console_slot_variable): * symbols.c (store_symval_forwarding): * symbols.c (default_value): * symbols.c (defsymbol_massage_name_1): * symbols.c (defsymbol_massage_name_nodump): * symbols.c (defsymbol_massage_name): * symbols.c (defsymbol_massage_multiword_predicate_nodump): * symbols.c (defsymbol_massage_multiword_predicate): * symbols.c (defsymbol_nodump): * symbols.c (defsymbol): * symbols.c (defkeyword): * symbols.c (defkeyword_massage_name): * symbols.c (check_module_subr): * symbols.c (deferror_1): * symbols.c (deferror): * symbols.c (deferror_massage_name): * symbols.c (deferror_massage_name_and_message): * symbols.c (defvar_magic): * symeval.h: * symeval.h (DEFVAR_SYMVAL_FWD): * sysdep.c: * sysdep.c (init_system_name): * sysdll.c: * sysdll.c (MAYBE_PREPEND_UNDERSCORE): * sysdll.c (dll_function): * sysdll.c (dll_variable): * sysdll.c (dll_error): * sysdll.c (dll_open): * sysdll.c (dll_close): * sysdll.c (image_for_address): * sysdll.c (my_find_image): * sysdll.c (search_linked_libs): * sysdll.h: * sysfile.h: * sysfile.h (DEFAULT_DIRECTORY_FALLBACK): * syswindows.h: * tests.c (DFC_CHECK_LENGTH): * tests.c (DFC_CHECK_CONTENT): * tests.c (Ftest_hash_tables): * text.c (vars_of_text): * text.h: * tooltalk.c (tt_opnum_string): * tooltalk.c (tt_message_arg_ival_string): * tooltalk.c (Ftooltalk_default_procid): * tooltalk.c (Ftooltalk_default_session): * tooltalk.c (init_tooltalk): * tooltalk.c (vars_of_tooltalk): * ui-gtk.c (Fdll_load): * ui-gtk.c (type_to_marshaller_type): * ui-gtk.c (Fgtk_import_function_internal): * ui-gtk.c (emacs_gtk_object_printer): * ui-gtk.c (emacs_gtk_boxed_printer): * unicode.c (unicode_to_ichar): * unicode.c (unicode_print): * unicode.c (unicode_query): * unicode.c (vars_of_unicode): * unicode.c (complex_vars_of_unicode): * win32.c: * win32.c (mswindows_report_process_error): * window.c (print_window): * xemacs.def.in.in: BASIC IDEA: Further fixing up uses of char * and CIbyte * to reflect their actual semantics; Mule-izing some code; redoing of the not-yet-working code to handle message translation. Clean up code to handle message-translation (not yet working). Create separate versions of build_msg_string() for working with Ibyte *, CIbyte *, and Ascbyte * arguments. Assert that Ascbyte * arguments are pure-ASCII. Make build_msg_string() be the same as build_msg_ascstring(). Create same three versions of GETTEXT() and DEFER_GETTEXT(). Also create build_defer_string() and variants for the equivalent of DEFER_GETTEXT() when building a string. Remove old CGETTEXT(). Clean up code where GETTEXT(), DEFER_GETTEXT(), build_msg_string(), etc. was being called and introduce some new calls to build_msg_string(), etc. Remove GETTEXT() from calls to weird_doc() -- we assume that the message snarfer knows about weird_doc(). Remove uses of DEFER_GETTEXT() from error messages in sysdep.c and instead use special comments /* @@@begin-snarf@@@ */ and /* @@@end-snarf@@@ */ that the message snarfer presumably knows about. Create build_ascstring() and use it in many instances in place of build_string(). The purpose of having Ascbyte * variants is to make the code more self-documenting in terms of what sort of semantics is expected for char * strings. In fact in the process of looking for uses of build_string(), much improperly Mule-ized was discovered. Mule-ize a lot of code as described in previous paragraph, e.g. in sysdep.c. Make the error functions take Ascbyte * strings and fix up a couple of places where non-pure-ASCII strings were being passed in (file-coding.c, mule-coding.c, unicode.c). (It's debatable whether we really need to make the error functions work this way. It helps catch places where code is written in a way that message translation won't work, but we may well never implement message translation.) Make staticpro() and friends take Ascbyte * strings instead of raw char * strings. Create a const_Ascbyte_ptr dynarr type to describe what's held by staticpro_names[] and friends, create pdump descriptions for const_Ascbyte_ptr dynarrs, and use them in place of specially-crafted staticpro descriptions. Mule-ize certain other functions (e.g. x_event_name) by correcting raw use of char * to Ascbyte *, Rawbyte * or another such type, and raw use of char[] buffers to another type (usually Ascbyte[]). Change many uses of write_c_string() to write_msg_string(), write_ascstring(), etc. Mule-ize emodules.c, emodules.h, sysdll.h. Fix some un-Mule-ized code in intl-win32.c. A comment in event-Xt.c and the limitations of the message snarfer (make-msgfile or whatever) is presumably incorrect -- it should be smart enough to handle function calls spread over more than one line. Clean up code in event-Xt.c that was written awkwardly for this reason. In config.h.in, instead of NEED_ERROR_CHECK_TYPES_INLINES, create a more general XEMACS_DEFS_NEEDS_INLINE_DECLS to indicate when inlined functions need to be declared in xemacs.defs.in.in, and make use of it in xemacs.defs.in.in. We need to do this because postgresql.c now calls qxestrdup(), which is an inline function. Make nconc2() and other such functions MODULE_API and put them in xemacs.defs.in.in since postgresql.c now uses them. Clean up indentation in lread.c and a few other places. In text.h, document ASSERT_ASCTEXT_ASCII() and ASSERT_ASCTEXT_ASCII_LEN(), group together the stand-in encodings and add some more for DLL symbols, function and variable names, etc. 2010-01-26 Ben Wing <ben@xemacs.org> * .gdbinit.in.in: Allow an argument to check-xemacs and check-temacs to check a specific file. 2010-01-24 Ben Wing <ben@xemacs.org> * chartab.c (decode_char_table_range): * extents.c (extent_fragment_update): * objects-msw.c (initialize_font_instance): * process.c (Fgetenv): * redisplay-output.c (get_next_display_block): Fix warnings about possible use of uninitialized vars. * compiler.h: * compiler.h (REGISTER): * event-stream.c (is_scrollbar_event): * window.c (window_scrollbar_width): * window.c (window_scrollbar_height): * window.c (window_left_window_gutter_width): * window.c (window_right_window_gutter_width): Add USED_IF_SCROLLBARS. Use it to fix warnings about unused vars when --with-scrollbars=no. * config.h.in: Change comment to explain better why DECLARE_INLINE_HEADER is needed. * dialog-msw.c: * emacs.c (SHEBANG_EXE_PROGNAME_LENGTH): * emacs.c (main_1): * event-msw.c (struct mswin_message_debug): * event-msw.c (debug_output_mswin_message): * font-mgr.c: * font-mgr.c (Ffc_config_filename): * glyphs-msw.c (struct): * glyphs-msw.c (bitmap_table): * glyphs-x.c (update_widget_face): * intl-win32.c (struct lang_to_string): * intl-win32.c (lang_to_string_table): * nas.c: * objects-xlike-inc.c: * objects-xlike-inc.c (xft_find_charset_font): * syswindows.h: * win32.c (mswindows_output_last_error): Fix g++ 4.3 complaints about implicit conversions of string literals (const char *) to char *. * lisp.h: G++ 4.3 needs #include <limits> to avoid errors about min/max. * lisp.h (disabled_assert_with_message): Use disabled_assert* whenever asserts are disabled. Rewrite disabled_assert* to avoid complaints about unused vars by pretending to use the vars but casting them to (void). Remove code that defined assert() weirdly if DEBUG_XEMACS but not USE_ASSERTIONS -- configure sets USE_ASSERTIONS automatically when DEBUG_XEMACS, and if the user has forced it off, then so be it. * lisp.h (SYMBOL_KEYWORD): Put some of the combined `extern Lisp_Object's back under the file they are declared in. Cosmetic fix. * number.h: Remove `extern Lisp_Object' decls that duplicate lisp.h, since they have different C vs. C++ linkage. 2010-01-21 Ben Wing <ben@xemacs.org> * Makefile.in.in: Oops. Use two hashes for comments in Makefile.in.in. 2010-01-20 Ben Wing <ben@xemacs.org> * symbols.c: Add long comment about the types of magic symbols, and the various declarations that go along with them. 2010-01-20 Ben Wing <ben@xemacs.org> * .gdbinit.in.in: Moved here from etc/.gdbinit.in. Put @srcdir@ in various places rather than just `..' whenever Makefile.in.in does so. Fixes various strange crashes and errors than occur when using `..'. * Makefile.in.in (config-changed): Add target, useful when building both Unicode-internal and old-Mule workspaces using --srcdir and don't run configure before switching from one to the other. 2010-01-20 Ben Wing <ben@xemacs.org> * lrecord.h: * lrecord.h (enum lrecord_type): * lrecord.h (struct lrecord_implementation): Clean up description of finalizer methods. Clean up and expand the long comment at the top of lrecord.h. Add a section about why New-GC requires a bunch of new internal objects to be created (not completely understood). 2010-01-20 Ben Wing <ben@xemacs.org> * lisp.h: Disable error-checking code in Dynarr_at and related lookup functions. It leads to a crash in the glyph-cachels code under Cygwin 1.7 and GCC 3.4.4. I assume this is a compiler bug since the code in question doesn't (or shouldn't) modify anything. Changing the code from inline to non-inline didn't help. 2010-01-19 Ben Wing <ben@xemacs.org> * console-impl.h (struct console_methods): * console-stream.c (stream_text_width): * redisplay-msw.c (mswindows_output_string): * redisplay-msw.c (mswindows_text_width): * redisplay-tty.c (tty_text_width): * redisplay-xlike-inc.c (XLIKE_text_width): * redisplay-xlike-inc.c (XLIKE_output_string): * redisplay.c: * redisplay.c (redisplay_window_text_width_ichar_string): * redisplay.c (redisplay_text_width_string): Change the text_width method to take a window instead of a frame. Needed for Unicode-internal. 2010-01-18 Ben Wing <ben@xemacs.org> * redisplay-gtk.c: * redisplay-gtk.c (gtk_bevel_area): * redisplay-x.c: * redisplay-x.c (THIS_IS_X): * redisplay-xlike-inc.c: * redisplay-xlike-inc.c (XLIKE_text_width_single_run): * redisplay-xlike-inc.c (XLIKE_text_width): * redisplay-xlike-inc.c (XLIKE_output_display_block): * redisplay-xlike-inc.c (XLIKE_get_gc): * redisplay-xlike-inc.c (XLIKE_output_string): * redisplay-xlike-inc.c (XLIKE_OUTPUT_XLIKE_PIXMAP): * redisplay-xlike-inc.c (XLIKE_output_pixmap): * redisplay-xlike-inc.c (XLIKE_output_vertical_divider): * redisplay-xlike-inc.c (XLIKE_output_blank): * redisplay-xlike-inc.c (XLIKE_output_horizontal_line): * redisplay-xlike-inc.c (XLIKE_clear_region): * redisplay-xlike-inc.c (XLIKE_output_eol_cursor): * redisplay-xlike-inc.c (XLIKE_clear_frame_window): * redisplay-xlike-inc.c (XLIKE_clear_frame): * redisplay-xlike-inc.c (XLIKE_flash): * redisplay-xlike-inc.c (console_type_create_redisplay_XLIKE): Move lots more code into redisplay-xlike-inc.c. Use macros to isolate the code that differs among X vs. GTK, to reduce the need for ifdefs in the middle of the code. Now, redisplay-x.c and redisplay-gtk.c only contain a few functions whose implementation is completely different from one to the other, or which are not present at all in one of them. GTK code not currently tested, but it has bitrotted somewhat any. Doing this will help keep it less bitrotty. * depend: Regenerate. 2010-01-18 Ben Wing <ben@xemacs.org> * redisplay-xlike-inc.c: * redisplay-xlike-inc.c (separate_textual_runs_nomule): * redisplay-xlike-inc.c (separate_textual_runs_xft_nomule): * redisplay-xlike-inc.c (separate_textual_runs_xft_mule): * redisplay-xlike-inc.c (separate_textual_runs_mule): Break separate_textual_runs_* functions from redisplay-x.c. (Code in redisplay-gtk.c should have been identical but was bit-rotted.) * redisplay-gtk.c: * redisplay-x.c: Delete code, replace with include statement. * depend: Regenerate. 2010-01-18 Ben Wing <ben@xemacs.org> * lisp.h: * print.c: New variable `in_debug_print'. * alloc.c: * alloc.c (free_managed_lcrecord): If gc_in_progress and in_debug_print, just return instead of crashing. This only happens when the programmer calls debug_print() or a variation inside of a debugger, and is probably already diagnosing a crash. * print.c (struct debug_bindings): * print.c (debug_prin1_exit): * print.c (debug_prin1): At entrance, record the old value of in_debug_print in the debug_bindings, set up an unwind-protect to restore the old value, and set in_debug_print to 1. In the unwind-protect, restore the old value. 2010-01-16 Ben Wing <ben@xemacs.org> * win32.c (mswindows_read_link_1): Conditionalize COM support on HAVE_MS_WINDOWS because otherwise we haven't linked with the appropriate libraries. 2010-01-15 Ben Wing <ben@xemacs.org> * doprnt.c (emacs_doprnt_1): Cosmetic: Use Qunbound, not Qnil as second arg to call to syntax_error() to get cleaner error message. 2010-01-15 Ben Wing <ben@xemacs.org> * intl-encap-win32.c: Add `review' lines for all functions seen in the headers that we process but not yet associated with an encapsulation command. These will cause an error to be signaled if these functions are used. * intl-auto-encap-win32.c: * intl-auto-encap-win32.h: Regenerate. 2010-01-15 Ben Wing <ben@xemacs.org> * intl-auto-encap-win32.c: * intl-auto-encap-win32.c (qxeExtractAssociatedIcon): * intl-auto-encap-win32.c (qxeShellExecuteEx): * intl-auto-encap-win32.c (qxeSHFileOperation): * intl-auto-encap-win32.c (qxeSHQueryRecycleBin): * intl-auto-encap-win32.c (qxeSHEmptyRecycleBin): * intl-auto-encap-win32.c (qxeWNetAddConnection): * intl-auto-encap-win32.c (qxeWNetAddConnection2): * intl-auto-encap-win32.c (qxeWNetAddConnection3): * intl-auto-encap-win32.c (qxeWNetCancelConnection): * intl-auto-encap-win32.c (qxeWNetCancelConnection2): * intl-auto-encap-win32.c (qxeWNetGetConnection): * intl-auto-encap-win32.c (qxeWNetUseConnection): * intl-auto-encap-win32.c (qxeWNetConnectionDialog1): * intl-auto-encap-win32.c (qxeWNetDisconnectDialog1): * intl-auto-encap-win32.c (qxeWNetOpenEnum): * intl-auto-encap-win32.c (qxeWNetEnumResource): * intl-auto-encap-win32.c (qxeWNetGetUniversalName): * intl-auto-encap-win32.c (qxeWNetGetUser): * intl-auto-encap-win32.c (qxeWNetGetProviderName): * intl-auto-encap-win32.c (qxeWNetGetNetworkInformation): * intl-auto-encap-win32.c (qxeWNetGetLastError): * intl-auto-encap-win32.c (qxeMultinetGetConnectionPerformance): * intl-auto-encap-win32.c (qxeAppendMenu): * intl-auto-encap-win32.c (qxeCopyAcceleratorTable): * intl-auto-encap-win32.c (qxeDlgDirSelectComboBoxEx): * intl-auto-encap-win32.c (qxeEnumDesktops): * intl-auto-encap-win32.c (qxeEnumWindowStations): * intl-auto-encap-win32.c (qxeGetClassInfo): * intl-auto-encap-win32.c (qxeGetClassLong): * intl-auto-encap-win32.c (qxeGetClassName): * intl-auto-encap-win32.c (qxeGetKeyboardLayoutName): * intl-auto-encap-win32.c (qxeGetWindowLong): * intl-auto-encap-win32.c (qxeGetUserObjectInformation): * intl-auto-encap-win32.c (qxeGetWindowTextLength): * intl-auto-encap-win32.c (qxeGrayString): * intl-auto-encap-win32.c (qxeInsertMenu): * intl-auto-encap-win32.c (qxeSetProp): * intl-auto-encap-win32.c (qxeEnumICMProfiles): * intl-auto-encap-win32.c (qxeExtTextOut): * intl-auto-encap-win32.c (qxeSetICMProfile): * intl-auto-encap-win32.c (qxeTextOut): * intl-auto-encap-win32.c (qxeSHGetPathFromIDList): * intl-auto-encap-win32.c (qxeFindText): * intl-auto-encap-win32.c (qxeReplaceText): * intl-auto-encap-win32.c (qxeImmInstallIME): * intl-auto-encap-win32.c (qxeImmGetDescription): * intl-auto-encap-win32.c (qxeImmGetIMEFileName): * intl-auto-encap-win32.c (qxeImmGetCompositionString): * intl-auto-encap-win32.c (qxeImmGetCandidateListCount): * intl-auto-encap-win32.c (qxeImmGetCandidateList): * intl-auto-encap-win32.c (qxeImmGetGuideLine): * intl-auto-encap-win32.c (qxeImmConfigureIME): * intl-auto-encap-win32.c (qxeImmEscape): * intl-auto-encap-win32.c (qxeImmGetConversionList): * intl-auto-encap-win32.c (qxeImmRegisterWord): * intl-auto-encap-win32.c (qxeImmUnregisterWord): * intl-auto-encap-win32.c (qxeImmEnumRegisterWord): * intl-auto-encap-win32.c (qxesndPlaySound): * intl-auto-encap-win32.c (qxePlaySound): * intl-auto-encap-win32.c (qxewaveOutGetErrorText): * intl-auto-encap-win32.c (qxewaveInGetErrorText): * intl-auto-encap-win32.c (qxemidiOutGetErrorText): * intl-auto-encap-win32.c (qxemidiInGetErrorText): * intl-auto-encap-win32.c (qxemmioStringToFOURCC): * intl-auto-encap-win32.c (qxemmioInstallIOProc): * intl-auto-encap-win32.c (qxemmioOpen): * intl-auto-encap-win32.c (qxemmioRename): * intl-auto-encap-win32.c (qxemciSendCommand): * intl-auto-encap-win32.c (qxemciSendString): * intl-auto-encap-win32.c (qxemciGetDeviceID): * intl-auto-encap-win32.c (qxemciGetErrorString): * intl-auto-encap-win32.h: * intl-auto-encap-win32.h (qxemciGetErrorString): Regenerate these files from Cygwin headers. * intl-encap-win32.c: Bracket more functions in HAVE_MS_WINDOWS, to fix build problems when building --with-msw=no on Cygwin. Fixes for Cygwin headers: -- Comment out IME.H, non-existent in Cygwin. -- Make MessageBoxIndirect a `no' (don't encapsulate but generate error if used) because it has a structure parameter that needs to be A/W split but is declared as FOO*, and our parser can't split this. 2010-01-15 Ben Wing <ben@xemacs.org> * Makefile.in.in: Build xemacs-export.o whenever we're on any Windows OS (WIN32_ANY) instead of only when we build support for the GUI portion of MS-Windows (HAVE_MS_WINDOWS). Cosmetic: Use WIN32_ANY in place of equivalent (WIN32_NATIVE or CYGWIN). 2010-01-15 Ben Wing <ben@xemacs.org> * emacs.c: * emacs.c (debug_can_access_memory): When checking for bad memory, we need to read all bytes from memory; try even harder to avoid the possibility that a super-optimizing compiler will optimize away the memory reads. 2010-01-15 Ben Wing <ben@xemacs.org> * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN): * syswindows.h (INTERNAL_MSWIN_TO_LOCAL_FILE_FORMAT): Declare some temporary pointer variables const to avoid compile errors under C++ and/or Visual Studio 6. 2010-01-27 Ben Wing <ben@xemacs.org> * casetab.c: Typo in comment. 2010-01-24 Aidan Kehoe <kehoea@parhasard.net> * number.c (Fnumerator, Fdenominator, Fcanonicalize_number): Be more careful to return integers in their canonical forms here, and to give the same answer all the time when treating a rational that is itself is an integer as a ratio. 2010-01-24 Aidan Kehoe <kehoea@parhasard.net> Fix problems with #'eql, extended number types, and the hash table implementation; change the Bintegerp bytecode to fixnump semantics even on bignum builds, since #'integerp can have a fast implementation in terms of #'fixnump for most of its extant uses, but not vice-versa. * lisp.h: Always #include number.h; we want the macros provided in it, even if the various number types are not available. * number.h (NON_FIXNUM_NUMBER_P): New macro, giving 1 when its argument is of non-immediate number type. Equivalent to FLOATP if WITH_NUMBER_TYPES is not defined. * elhash.c (lisp_object_eql_equal, lisp_object_eql_hash): Use NON_FIXNUM_NUMBER_P in these functions, instead of FLOATP, giving more correct behaviour in the presence of the extended number types. * bytecode.c (Bfixnump, execute_optimized_program): Rename Bintegerp to Bfixnump; change its semantics to reflect the new name on builds with bignum support. * data.c (Ffixnump, Fintegerp, syms_of_data, vars_of_data): Always make #'fixnump available, even on non-BIGNUM builds; always implement #'integerp in this file, even on BIGNUM builds. Move most-positive-fixnum, most-negative-fixnum here from number.c, so they are Lisp constants even on builds without number types, and attempts to change or bind them error. Use the NUMBERP and INTEGERP macros even on builds without extended number types. * data.c (fixnum_char_or_marker_to_int): Rename this function from integer_char_or_marker_to_int, to better reflect the arguments it accepts. * number.c (Fevenp, Foddp, syms_of_number): Never provide #'integerp in this file. Remove #'oddp, #'evenp; their implementations are overridden by those in cl.el. * number.c (vars_of_number): most-positive-fixnum, most-negative-fixnum are no longer here. 2010-01-17 Vin Shelton <acs@xemacs.org> * fileio.c (check_writable): Remove cast from 2010-01-14 * syswindows.h: Use consts in macros where appropriate in lieu of cast in check_writable(). Patch from Ben Wing. 2010-01-16 Aidan Kehoe <kehoea@parhasard.net> * config.h.in: * floatfns.c (emacs_rint): Don't look for rint in configure, always use our own implementation that rounds to the even number in the case of ambiguity, for consistency with the bignum code. 2010-01-14 Vin Shelton <acs@xemacs.org> * fileio.c (check_writable): Fix compilation error under Visual Studio 6. * sysfile.h: Add conditional definition for EOVERFLOW, which isn't defined under Visual Studio 6. 2010-01-14 Didier Verna <didier@xemacs.org> * faces.c (complex_vars_of_faces): change X11 bgcolor fallback of default face to match that of gui element face. 2010-01-14 Ben Wing <ben@xemacs.org> * buffer.h: * compiler.h: Don't use USED_IF_MULE_OR_CHECK_TEXT in buffer.h. Eliminate since not used anywhere any more. * font-mgr.c (fontset_to_list): * font-mgr.c (Ffc_config_substitute): Don't use Fsignal() as it may return. Use signal_error() instead or a more specific function such as invalid_state() or wtaerror(). 2010-01-14 Ben Wing <ben@xemacs.org> * syswindows.h: Don't define CYGWIN_HEADERS here. 2010-01-14 Ben Wing <ben@xemacs.org> * s/cygwin32.h: * s/mingw32.h: Define here instead so it's available in all files. Fixes compile problems in database.c in some cases. 2010-01-14 Ben Wing <ben@xemacs.org> * glyphs-eimage.c: Turn on fixes for conflicts between jmorecfg.h and windows.h on Cygwin, too. * emacs.c (debug_can_access_memory): * lisp.h: Declare function const void * to avoid warnings. * sysfile.h: Include syswindows.h on Windows to avoid problems using things like PATHNAME_CONVERT_OUT. * sysfile.h (X_OK): * dialog-msw.c (handle_directory_proc): * dialog-msw.c (handle_directory_dialog_box): * nt.c (Fmswindows_short_file_name): * sysdep.c (qxe_allocating_getcwd): * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * unexcw.c (unexec): * unexnt.c (_start): * win32.c (mswindows_read_link_1): Rename PATH_MAX_EXTERNAL to PATH_MAX_TSTR to reflect its actual semantics. * unexcw.c: Remove include of syswindows.h that had been added because sysfile.h didn't include it. 2010-01-13 Ben Wing <ben@xemacs.org> * specifier.c (specifier_instance_from_inst_list): Don't declare an unused variable, (void) 0 is enough. * text.h: Don't use USED_IF_MULE_OR_CHECK_TEXT(). 2010-01-13 Ben Wing <ben@xemacs.org> * debug.c (vars_of_debug): Provide `debug-xemacs' to signal we have a debug build; must do this to get previoug `debug-on-error' change to work. 2010-01-13 Jerry James <james@xemacs.org> * font-mgr.c (Ffc_config_app_font_add_file): Fix parentheses. (Ffc_config_app_font_add_dir): Ditto. 2010-01-13 Jerry James <james@xemacs.org> * Makefile.in.in: Remove CYGWIN && !PDUMP section. * depend: Regenerated. * s/cygwin.sc: Removed. * s/cygwin32.h (UNEXEC): Do not define. 2010-01-13 Ben Wing <ben@xemacs.org> * print.c: * print.c (internal_object_printer): * print.c (enum printing_badness): * print.c (printing_major_badness): * print.c (print_internal): Clean up the part of the code that looks for things that might lead to crashing in the print code: -- Make the "badness" messages more consistent. -- Move the checks for circularities after the checks for bad memory, since the checks for circularities involve accessing memory (which could be bad). -- Add an extra check to see if the object's implementation structure is bad memory. -- Add extra check for object itself being a null pointer or implementation pointer being null. -- Add some extra comments to help in maintaining the code. 2010-01-13 Ben Wing <ben@xemacs.org> * casetab.c (print_case_table): * console.c (print_console): * data.c (print_weak_list): * data.c (print_weak_box): * data.c (print_ephemeron): * data.c (ephemeron_equal): * database.c (print_database): * device-msw.c (print_devmode): * device.c (print_device): * eval.c: * file-coding.c (print_coding_system): * frame.c (print_frame): * glyphs.c (print_image_instance): * glyphs.c (print_glyph): * gui.c: * gui.c (print_gui_item): * keymap.c (print_keymap): * lisp.h: * mule-charset.c (print_charset): * objects.c (print_color_instance): * objects.c (print_font_instance): * print.c: * print.c (printing_unreadable_object): * print.c (printing_unreadable_lcrecord): * print.c (default_object_printer): * process.c (print_process): * tooltalk.c: * tooltalk.c (print_tooltalk_message): * tooltalk.c (print_tooltalk_pattern): * ui-gtk.c (ffi_object_printer): * ui-gtk.c (emacs_gtk_object_printer): * ui-gtk.c (emacs_gtk_boxed_printer): * window.c (print_window): New function printing_unreadable_lcrecord(). Automatically prints the type name and pointer value of the object. Use it instead of printing_unreadable_object(); make that latter function local to print.c. * window.c (print_window): During creation, window may have Qt as its buffer. Don't crash if trying to print such a window. 2010-01-13 Ben Wing <ben@xemacs.org> * dynarr.c: Add comment explaining Dynarr_largest() use. * dynarr.c (Dynarr_insert_many): In Dynarr_insert_many(), don't call Dynarr_resize() unless we actually need to resize, and note that an assert() that we are inserting at or below the current end could be wrong if code wants to access stuff between `len' and `largest'. * dynarr.c (stack_like_malloc): Don't just Dynarr_resize() to the right size; instead use Dynarr_reset() then Dynarr_add_many(), so that the 'len' and 'largest' and such get set properly. * dynarr.c (Dynarr_insert_many): * dynarr.c (Dynarr_delete_many): * dynarr.c (Dynarr_memory_usage): * dynarr.c (stack_like_free): * faces.c (add_face_cachel): * gutter.c (output_gutter): * lisp.h: * lisp.h (Dynarr_declare): * lisp.h (Dynarr_length): * lisp.h (Dynarr_add): * lisp.h (Dynarr_increment): * lisp.h (Dynarr_pop): * lread.c (define_structure_type): * lread.c (define_structure_type_keyword): * lrecord.h: * lrecord.h (XD_DYNARR_DESC): * lrecord.h (XD_LISP_DYNARR_DESC): * redisplay-output.c (compare_display_blocks): * redisplay-output.c (output_display_line): * redisplay.c (add_ichar_rune_1): * redisplay.c (create_text_block): * redisplay.c (generate_formatted_string_db): * redisplay.c (create_string_text_block): * redisplay.c (point_visible): * redisplay.c (mark_glyph_block_dynarr): * redisplay.c (mark_redisplay_structs): * redisplay.c (line_start_cache_end): * redisplay.c (update_line_start_cache): * redisplay.c (glyph_to_pixel_translation): * redisplay.c (pixel_to_glyph_translation): Rename Dynarr member 'cur' to 'len' since it's the length of the dynarr, not really a pointer to a "current insertion point". Use type_checking_assert() instead of just assert() in some places. Add additional assertions (Dynarr_verify*()) to check that we're being given positions within range. Use them in Dynarr_at, Dynarr_atp, etc. New Dynarr_atp_allow_end() for retrieving a pointer to a position that might be the element past the last one. New Dynarr_past_lastp() to retrieve a pointer to the position past the last one, using Dynarr_atp_allow_end(). Change code appropriately to use it. Rename Dynarr_end() to Dynarr_lastp() (pointer to the last element) for clarity, and change code appropriately to use it. Change code appropriately to use Dynarr_begin(). Rewrite Dynarr_add_many(). New version can accept a NULL pointer to mean "reserve space but don't put anything in it". Used by stack_like_malloc(). 2010-01-13 Ben Wing <ben@xemacs.org> * lisp.h: * lisp.h (inline_type_checking_assert): Add structure_checking_assert(), gc_checking_assert(), etc. for all types of error-checking. Also FOO_checking_assert_with_message() and inline_FOO_checking_assert() -- the latter for use in an inline function where you want the calling function's line/file to be reported (requires some conspiracy with the function itself). Add disabled_assert(), disabled_assert_at_line(), disabled_assert_with_message(), for what to do when an assert is disabled. Formerly, we used to do ((void) 0), but now we do ((void) x), so the variable appears used and any side effects of the expression do get done. In Unicode-internal, the standard assert() uses this, but not yet in this workspace. 2010-01-13 Ben Wing <ben@xemacs.org> * cmdloop.c: During really-early-error-handler, exit to the debugger and abort if an error occurs and * lisp.h: extern Vdebug_on_error. 2010-01-12 Ben Wing <ben@xemacs.org> * sheap.c: * sheap.c (more_static_core): Increase STATIC_HEAP_SLOP. Change heap-exhausted error message to mention the computed static heap size. * unexcw.c: Include syswindows.h to avoid compile error. * file-coding.c (default_query_method): Single = is intended. Rewrite using comma operator to make this clearer and avoid dependency on the value of an enum. 2010-01-11 Ben Wing <ben@xemacs.org> * database.c: * intl-encap-win32.c (qxeUpdateICMRegKey): Cosmetic fixes. * device-x.c (signal_if_x_error): * editfns.c (Fformat_time_string): * editfns.c (Fencode_time): * editfns.c (Fcurrent_time_zone): * editfns.c (Fset_time_zone_rule): * event-gtk.c (gtk_reset_key_mapping): * fileio.c (Fsysnetunam): * font-mgr.c: * font-mgr.c (Ffc_config_app_font_add_dir): * font-mgr.c (Ffc_config_filename): * glyphs-eimage.c (my_jpeg_output_message): * glyphs-eimage.c (jpeg_instantiate): * glyphs-shared.c (read_bitmap_data_from_file): * glyphs-x.c (x_redisplay_widget): * glyphs-x.c (x_widget_instantiate): * glyphs-x.c (x_widget_property): * glyphs-x.c (x_tab_control_redisplay): * hpplay.c (player_error_internal): * hpplay.c (play_sound_file): * hpplay.c (play_sound_data): * process-unix.c: * process-unix.c (unix_canonicalize_host_name): * process.c (init_xemacs_process): * sound.h (sound_perror): * sysdep.c: * sysdep.c (qxe_execve): * sysdep.c (copy_in_passwd): * sysdep.c (qxe_getpwnam): * sysdep.c (qxe_ctime): * sysdll.c (dll_error): * sysdll.c (dll_open): * tooltalk.c (check_status): * tooltalk.c (Fadd_tooltalk_message_arg): * tooltalk.c (Fadd_tooltalk_pattern_attribute): * tooltalk.c (Fadd_tooltalk_pattern_arg): Change all occurrences of Qnative to some more specific encoding. Create Qtime_function_encoding, Qtime_zone_encoding, Quser_name_encoding, Qerror_message_encoding, Qjpeg_error_message_encoding, Qtooltalk_encoding, Qgtk_encoding, Qx_error_message_encoding. * intl-win32.c (init_intl_win32): Provide cygwin-use-utf-8 if this is the case. * fileio.c (Ffile_truename): * realpath.c: * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT): * syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN): * syswindows.h (INTERNAL_MSWIN_TO_LOCAL_FILE_FORMAT): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * win32.c (urlify_filename): * win32.c (tstr_to_local_file_format): * win32.c (Fmswindows_cygwin_to_win32_path): Rename LOCAL_FILE_FORMAT_TO_INTERNAL_WIN32 and INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT to LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN and INTERNAL_MSWIN_TO_LOCAL_FILE_FORMAT, since "win32" is a misnomer. 2010-01-11 Ben Wing <ben@xemacs.org> * config.h.in: Add def for HAVE_CYGWIN_CONV_PATH. * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * fileio.c: * fileio.c (Ffile_truename): * syswindows.h: * syswindows.h (CCP_POSIX_TO_WIN_T): * syswindows.h (LISP_LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * win32.c (urlify_filename): * win32.c (tstr_to_local_file_format): * win32.c (Fmswindows_shell_execute): * win32.c (Fmswindows_cygwin_to_win32_path): Rename LOCAL_FILE_FORMAT_TO_TSTR to LISP_LOCAL_FILE_FORMAT_TO_TSTR. Rename LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR to LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR. Both of these renames reflect the fact that their 'in' argument is a Lisp object. Create new LOCAL_FILE_FORMAT_TO_TSTR that accepts an Ibyte *. Rename LOCAL_TO_WIN32_FILE_FORMAT to LOCAL_FILE_FORMAT_TO_INTERNAL_WIN32; rename WIN32_TO_LOCAL_FILE_FORMAT to INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT similarly. This clarifies the fact that the result is a file in MS-Windows format rather than POSIX format, but still in internal-format instead of UTF-16. Fix up the *LOCAL_FILE_FORMAT* functions to use cygwin_conv_path() if available. This converts between a UTF-8 POSIX path and a UTF-16 Windows path (or ANSI Windows path, in the increasingly unlikely situation that we're using Windows 9x). Previously, we used an old API and operated on internal-format data, because the external format was unpredictable. This doesn't work any more, even with the old API (it tries to convert to UTF-8). So instead, when the new API is available we use the new API and operate on external-format data. This necessitates that if we want to convert to/from internal-format Windows-style paths, we need to first convert to external format, do the conversion, and convert back to internal format. To avoid this, we change some callers of the macros to use the right version (internal or external format destination) and avoid doing the internal/external conversions themselves. * realpath.c: * fileio.c (check_writable): Cosmetic fixes to check_writable. Avoid directly calling cygwin_conv_to_full_win32_path (fileio.c:check_writable did this) or cygwin_posix_to_win32_path_list (realpath.c:readlink_or_correct_case did this); use the *LOCAL_FILE_FORMAT* macros instead. * fileio.c (Ffile_exists_p): * glyphs-msw.c (mswindows_resource_instantiate): * sysdll.c (dll_open): * sysfile.h: * sysfile.h (PATHNAME_CONVERT_OUT_TSTR): Add PATHNAME_CONVERT_OUT_TSTR and PATHNAME_CONVERT_OUT_UTF_8 for conversion involving specified coding systems rather than `file-name'. Use them in *LOCAL_FILE_FORMAT* macros. * emacs.c (main_1): * symsinit.h: * unicode.c: New function complex_vars_of_unicode(). In it, create the utf-8 coding system. Call it appropriately in emacs.c. Sort the prototypes of complex_vars_of_*() in symsinit.h, for cosmetic reasons. 2010-01-11 Ben Wing <ben@xemacs.org> * regex.c (re_compile_fastmap): The code to compute the fastmap in charset_mule_not was totally messed up. I'm surprised it hasn't led to more visible bugs. 2010-01-11 Ben Wing <ben@xemacs.org> * rangetab.c: * rangetab.c (external_to_internal_adjust_ends): * rangetab.c (put_range_table): * rangetab.c (Fmap_range_table): * rangetab.c (struct unified_range_table): * rangetab.c (unified_range_table_copy_data): * rangetab.c (unified_range_table_get_range): Add an entry to unified range tables to keep track of their type. Factor out code to adjust the endpoints of ranges between the external format (either end can be open or closed) and internal format (always closed/open). Use code also when returning ranges out of unified range tables. Fixes an off-by-one error in regex.c where it was getting ranges with an end one greater than expected, since it creates closed-closed range tables and was getting passed the internal-format ranges. 2010-01-11 Ben Wing <ben@xemacs.org> * config.h.in: * config.h.in (ERROR_CHECK_GLYPHS): Trying to avoid link errors referring to the ERROR_CHECK_TYPES functions, either in eldap.o (if we don't include references to ERROR_CHECK_TYPES in xemacs.def.in.in) or xemacs-export.o (if we do include such references): Add line for USE_GPLUSPLUS, set by configure. Define INLINE_HEADERS_ARE_STATIC when we add static to inline headers. (Possibly used when setting NEED_ERROR_CHECK_TYPES_INLINES.) Currently, set NEED_ERROR_CHECK_TYPES_INLINES when ERROR_CHECK_TYPES and USE_GPLUSPLUS. * xemacs.def.in.in: Use NEED_ERROR_CHECK_TYPES_INLINES here to bracket things like `error_check_cons' instead of just ERROR_CHECK_TYPES. * faces.c (complex_vars_of_faces): Bracket various font variables with defined(USE_XFT or MULE) to avoid warnings. * fileio.c: Make sure the `expand-file-name' handler returns a string, to avoid a potential crash. * floatfns.c (round_one_bigfloat_1): #if-0 out an assert that can never be triggered and which generates warnings "dereferencing type-punned pointer will break strict-aliasing rules". * redisplay-x.c (separate_textual_runs_nomule): Remove unused variable in non-Mule case. * specifier.c (charset_matches_specifier_tag_set_p): Variable CHARSET is unused when not Mule. * specifier.c (specifier_instance_from_inst_list): Add a comment questioning why font-specific stuff is littering specifier.c. * syswindows.h: Expand on the comments on a #if 0 I added in a previous patch. * vdb-win32.c: * vdb-win32.c (win32_fault_handler): * vdb-win32.c (vdb_install_signal_handler): Change return type to LONG instead of DWORD to avoid warning or error. 2010-01-11 Ben Wing <ben@xemacs.org> * database.c: Cygwin prototypes in ndbm.h are incomplete and cause C++ compile errors; fix them. * fileio.c (check_writable): Fix compile errors. Also move the call to C_STRING_TO_TSTR earlier, which is probably wrong, but fixed in a later patch. * intl-encap-win32.c (qxeGetICMProfile): Ifdef out a fix to work around a previous bogosity in Cygwin header files which has now been fixed. Keeping in the fix led to compile errors. #### Proper way to do it is to figure out when it got fixed, perhaps put in a configure test, but it seems not worth it. * intl-encap-win32.c (qxeUpdateICMRegKey): Cosmetic change, undone in a later patch. * mule-charset.c (Fset_charset_ccl_program): Remove unused variable. * nas.c: #if-0 out some unused static code to avoid a warning. * syswindows.h: Don't declare prototypes for GetCurrentFiber and GetFiberData, it causes a compile error. * unicode.c (unicode_query): invalid_lower_limit might have been used uninitted, so initialize it. 2010-01-11 Ben Wing <ben@xemacs.org> * config.h.in: Add def for HAVE_CYGWIN_CONV_PATH. * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * fileio.c: * fileio.c (Ffile_truename): * syswindows.h: * syswindows.h (CCP_POSIX_TO_WIN_T): * syswindows.h (LISP_LOCAL_FILE_FORMAT_TO_TSTR): * syswindows.h (INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT): * syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR): * win32.c (urlify_filename): * win32.c (tstr_to_local_file_format): * win32.c (Fmswindows_shell_execute): * win32.c (Fmswindows_cygwin_to_win32_path): Rename LOCAL_FILE_FORMAT_TO_TSTR to LISP_LOCAL_FILE_FORMAT_TO_TSTR. Rename LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR to LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR. Both of these renames reflect the fact that their 'in' argument is a Lisp object. Create new LOCAL_FILE_FORMAT_TO_TSTR that accepts an Ibyte *. Rename LOCAL_TO_WIN32_FILE_FORMAT to LOCAL_FILE_FORMAT_TO_INTERNAL_WIN32; rename WIN32_TO_LOCAL_FILE_FORMAT to INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT similarly. This clarifies the fact that the result is a file in MS-Windows format rather than POSIX format, but still in internal-format instead of UTF-16. Fix up the *LOCAL_FILE_FORMAT* functions to use cygwin_conv_path() if available. This converts between a UTF-8 POSIX path and a UTF-16 Windows path (or ANSI Windows path, in the increasingly unlikely situation that we're using Windows 9x). Previously, we used an old API and operated on internal-format data, because the external format was unpredictable. This doesn't work any more, even with the old API (it tries to convert to UTF-8). So instead, when the new API is available we use the new API and operate on external-format data. This necessitates that if we want to convert to/from internal-format Windows-style paths, we need to first convert to external format, do the conversion, and convert back to internal format. To avoid this, we change some callers of the macros to use the right version (internal or external format destination) and avoid doing the internal/external conversions themselves. * realpath.c: * fileio.c (check_writable): Cosmetic fixes to check_writable. Avoid directly calling cygwin_conv_to_full_win32_path (fileio.c:check_writable did this) or cygwin_posix_to_win32_path_list (realpath.c:readlink_or_correct_case did this); use the *LOCAL_FILE_FORMAT* macros instead. * fileio.c (Ffile_exists_p): * glyphs-msw.c (mswindows_resource_instantiate): * sysdll.c (dll_open): * sysfile.h: * sysfile.h (PATHNAME_CONVERT_OUT_TSTR): Add PATHNAME_CONVERT_OUT_TSTR and PATHNAME_CONVERT_OUT_UTF_8 for conversion involving specified coding systems rather than `file-name'. Use them in *LOCAL_FILE_FORMAT* macros. * emacs.c (main_1): * symsinit.h: * unicode.c: New function complex_vars_of_unicode(). In it, create the utf-8 coding system. Call it appropriately in emacs.c. Sort the prototypes of complex_vars_of_*() in symsinit.h, for cosmetic reasons. 2010-02-07 Aidan Kehoe <kehoea@parhasard.net> * fns.c (split_string_by_ichar_1): Extend this to take UNESCAPE and ESCAPECHAR arguments. (split_external_path, split_env_path, Fsplit_string_by_char) (Fsplit_path): Pass the new arguments to split_string_by_ichar_1(); take a new optional argument, ESCAPE-CHAR, in #'split-string-by-char, allowing SEPCHAR to be escaped. 2010-01-09 Didier Verna <didier@xemacs.org> * glyphs.c (query_string_font): Use proper domain for cachel updating. 2010-01-09 Didier Verna <didier@xemacs.org> Fix query_string_geometry lookup domain. * redisplay.c (redisplay_window_text_width_ichar_string): Formerly named redisplay_text_width_ichar_string. * redisplay.c (redisplay_window_text_width_string): Formerly named redisplay_text_width_string. Make static. * redisplay.c (redisplay_text_width_string): Formerly named redisplay_frame_text_width_string. Generalize to accept any Lisp_Object domain argument (instead of only frames). * redisplay.c (add_ichar_rune_1): Update funcalls for the above renaming. * redisplay.c (generate_fstring_runes): Ditto. * redisplay.h: Ditto. * glyphs.c (query_string_geometry): Use proper domain for cachel updating and in generalized version of redisplay_text_width_string. 2010-01-08 Aidan Kehoe <kehoea@parhasard.net> * mule-charset.c (Fmake_charset): Change build_string with an Ibyte argument to build_intstring, fixing the build on Visual C++. Thank you for the report, Vin. 2010-01-07 Jerry James <james@xemacs.org> * font-mgr.c (Ffc_font_match): Initialize result to FcResultMatch before calling FcFontMatch. * objects-xlike-inc.c (xft_find_charset_font): Ditto. 2010-01-07 Henrique Martins <xemacs@martins.cc> * dired.c (file_name_completion): If a file is too big to stat(), ignore the error, since we don't use the size. 2010-01-07 Aidan Kehoe <kehoea@parhasard.net> * mule-charset.c: (syms_of_mule_charset, complex_vars_of_mule_charset): * lisp.h: Restore the creation of arabic-iso8859-6 in C, having it in Lisp isn't sufficient for X11 input to work. 2010-01-06 Jerry James <james@xemacs.org> * emacs.c (main_1): Only call reinit_vars_of_number if WITH_NUMBER_TYPES. 2010-01-06 Jerry James <james@xemacs.org> * alloc.c: Include valgrind header if USE_VALGRIND. (Fvalgrind_leak_check): New function. (Fvalgrind_quick_leak_check): New function. (syms_of_alloc): Declare the new functions. * config.h.in (USE_VALGRIND): New define. 2010-01-06 Jerry James <james@xemacs.org> * emacs.c: Fix FSF address. (main_1): Call reinit_vars_of_number. * number-gmp.c: Fix FSF address. * number-gmp.h: Ditto. * number-mp.c: Ditto. * number-mp.h: Ditto. * number.h: Ditto. * number.c: Ditto. (bignum_finalize): New function. (ratio_finalize): New function. (bigfloat_finalize): New function. (vars_of_number): Don't create a bignum here. (reinit_vars_of_number): New function; create a bignum here. (init_number): Call reinit_vars_of_number if !PDUMP. * symsinit.h: Fix FSF address. Declare reinit_vars_of_number. 2010-01-05 Jerry James <james@xemacs.org> * font-mgr.c (Ffc_name_unparse): Return value of FcNameUnparse must be freed. 2009-12-31 Aidan Kehoe <kehoea@parhasard.net> * eval.c (Ffunctionp): Special forms no longer give t in this function, in accordance with recent GNU Emacs and with Common Lisp. 2009-12-21 Jerry James <james@xemacs.org> * config.h.in: Remove OffiX support. * device-x.c: Ditto. * dragdrop.c: Ditto. (vars_of_dragrop): Ditto * event-Xt.c: Ditto. (x_event_to_emacs_event): Ditto. * frame.c (vars_of_frame): Ditto * frame-x.c: Ditto. (Foffix_start_drag_internal): Remove. (syms_of_frame_x): Remove OffiX support.. * Makefile.in.in: Ditto. * event-gtk.c: Don't include OffiX headers. * offix.c: Remove. * offic.h: Remove. * offix-cursors.h: Remove. * offix-types.h: Remove. * text.h (Qoffix_dnd_encoding): Remove, twice. * depend: Regenerate. 2009-11-27 Adrian Aichner <adrian@xemacs.org> * nt.c (mswindows_getdcwd): Check first whether drive is valid with _getdrives() to avoid crash in _wgetdcwd(...) when linking against msvcrt8. This fix was taken from the Mozilla project which experienced the same problem. 2009-12-19 Aidan Kehoe <kehoea@parhasard.net> * symbols.c (reject_constant_symbols): Indicate that accepting attempted modification of keywords is a temporary thing. 2009-12-23 Stephen J. Turnbull <stephen@xemacs.org> * fns.c (Fcompare_strings): Coerce bounds to be within strings. 2009-12-18 Jerry James <james@xemacs.org> * ppc.ldscript: Remove, obsolete. 2009-12-17 Aidan Kehoe <kehoea@parhasard.net> * events.h (character_to_event_meta_behavior): New enumeration, describing what character_to_event should do with characters in the range ?\x80-?\xFF, and passed as the third argument to character_to_event instead of the binary use_console_meta_flag. * events.c (character_to_event, Fcharacter_to_event): * event-unixoid.c (read_event_from_tty_or_stream_desc): * event-stream.c (maybe_kbd_translate, maybe_kbd_translate): * event-msw.c (mswindows_need_event): Use the new enumeration. * event-Xt.c (x_to_emacs_keysym): Call character_to_event when we receive XLookupChars events, passing latin_1_maps_to_itself as the meta_behavior flag, addressing the problem FKtPp sees in 87bpi9mwpu.fsf@yahoo.com.cn 2009-12-17 Aidan Kehoe <kehoea@parhasard.net> * elhash.c (HASH_TABLE_DEFAULT_REHASH_THRESHOLD): That last change was wrong in theory though not in practice; we're comparing function pointers, not enumeration values. 2009-12-17 Aidan Kehoe <kehoea@parhasard.net> * elhash.c (HASH_TABLE_DEFAULT_REHASH_THRESHOLD): Cast the enumeration values here to integers before comparing them, fixing the build on VC++. Thank you Vin! 2009-12-17 Aidan Kehoe <kehoea@parhasard.net> * elhash.c (HASH_TABLE_DEFAULT_REHASH_THRESHOLD): New macro, giving a default value for a hash table's rehash threshold given its size and test function. (print_hash_table): Print the hash table's rehash threshold if it has a non-default value. Ditto for its rehash size. (Fmake_hash_table): Supply the keyword arguments in a format understood by #'function-arglist. 2009-12-17 Aidan Kehoe <kehoea@parhasard.net> * alloc.c (resize_string): Don't attempt to free dumped data in this function, avoiding an assertion failure. 2009-12-13 Stephen J. Turnbull <stephen@xemacs.org> * unicode.c (unicode_query): Add missing return type. Thanks to 'mnewsam' on the tracker. 2009-12-09 Jerry James <james@xemacs.org> * config.h.in: Remove HAVE_XMU. * s/windowsnt.h: Ditto. * device-x.c: Include needed Xmu headers instead of obsolete xmu.h. * EmacsFrame.c: Ditto. * glyphs-x.c: Ditto. * frame-x.c: Ditto. Always include editres code. * xmu.c: Removed, obsolete. * xmu.h: Ditto. * depend: Regenerate. 2010-01-01 Aidan Kehoe <kehoea@parhasard.net> * mule-charset.c (Fmake_charset): Don't intern the symbols used to refer to temporary character sets, that doesn't bring us anything. 2009-12-05 Stephen J. Turnbull <stephen@xemacs.org> * faces.c (complex_vars_of_faces): Explain why "*" isn't rewritten as a full XLFD. 2010-01-09 Aidan Kehoe <kehoea@parhasard.net> * elhash.c: (print_hash_table, print_hash_table_data) (hash_table_instantiate) (structure_type_create_hash_table_structure_name): (syms_of_elhash): Use keywords, not ordinary symbols, in the hash table read syntax, for compatibility with Common Lisp and recent GNU Emacs. Accept the non-keyword syntax, but don't allow mixing of the two styles. 2009-11-19 Vin Shelton <acs@xemacs.org> * sysdep.c (sys_subshell): Restore sys_subshell(); it's necessary on Windows native builds. 2009-11-10 Jerry James <james@xemacs.org> * Makefile.in.in: Drop support for dynodump and OSF1. * alloca.s: Drop support for old systems, namely hp9000s300, wicat, ns16000, ns32000, sequent, pyramid, att3b5, and Xenix. * broken-sun.h: Remove, unused. * compiler.h: Drop support for OSF1. * config.h.in: Modify comments about obsolete systems. Drop NeXTstep and SunOS4 support. (DYNODUMP): Removed. * console.h: Remove reference to NeXTstep in a comment. * data.c (sign_extend_temp): Removed, unused. (sign_extend_lisp_int): Ditto. * depend: Regenerate. * ecrt0.c: Remove reference to DONT_NEED_ENVIRON, which is not defined by any supported system. Remove support for obsolete systems. Remove comments that refer to obsolete systems. * emacs.c (main_1): Remove NeXT support. Remove references to EXTRA_INITIALIZE and NO_SUBPROCESSES, which are not defined by any supported system. * faces.c (complex_vars_of_faces): Remove comment that refers to NeXTstep. * fileio.c: Drop support for ancient versions of HP/UX. * getloadavg.c: Remove symbols defined only by obsolete systems from comment at the top listing symbols of interest. Remove support for obsolete systems. (getloadavg): Drop code blocks specific to obsolete systems. * getpagesize.h: Remove reference to NBPC, which is not used by any supported system. * gmalloc.c: Remove reference to GMALLOC_NEEDS_SBRK_DECL, which is not used by any supported system. * hftctl.c: Remove, used only by ancient versions of AIX. * hpplay.c: Remove includes for HP/UX versions less than 11. * libsst.h: Remove support for SunOS 4. * m/arm.h: Remove comment about Xenix. * m/ibmrs6000.h: Remove hftctl support, which is only for very old versions of AIX. * m/intel386.h: Remove references to obsolete systems. * m/mips.h: Ditto. * nsselect.m: Remove (devoid of content) NeXT support file. * process-unix.c: Remove references to NO_SUBPROCESSES, SKTPAIR, and CONNECT_NEEDS_SLOWED_INTERRUPTS, which are not defined by any supported system. * process.c: Remove reference to NO_SUBPROCESSES. * process.h: Ditto. * regex.c: Remove reference to SWITCH_ENUM_BUG, which is not defined by an supported system, and hence SWITCH_ENUM_CAST as well. * s/aix4-2.h: Merge older include files in, and drop #define/#undef pairs. * s/bsd4-3.h: Ditto. * s/hpux11.h: Ditto. * s/irix6-0.h: Ditto. * s/usg5-4.h: Ditto. * s/hpux11-shr.h: Remove references to deleted version of HP/UX. * s/template.h: Remove references to ancient BSD versions. * strcmp.c: Removed, unused. * strcpy.c: Ditto. * sunOS-fix.c: Ditto. * sunplay.c (init_device): Remove SunOS4.0.3 code. * syntax.c (scan_sexps_forward): Remove comment about Apollo, but leave the code the way it is, because I prefer it this way. * sysdep.c: Remove code guarded by preprocessor symbols that are not defined on any supported system, namely ISC4_0, AIXHFT, IBMRTAIX, NO_SUBPROCESSES, RTU, USG_JOBCTRL, USE_GETOBAUD, _CX_UX, DGUX, ultrix, F_SETOWN_SOCK_NEG, SET_LINE_DISCIPLINE, BROKEN_CLOSEDIR, HPUX9, and NeXT. (sys_subshell): Remove, unused. * sysfile.h: Remove reference to hftctl.c. * sysproc.h: Remove code guarded by preprocessor symbols that are not defined on any supported system, namely NO_SUBPROCESSES, IRIS, NEED_NET_ERRNO_H, and USG_JOBCTRL. * syssignal.h: Remove reference to NeXT. * systty.h: Remove support for obsolete systems. Remove support for BROKEN_TIOCGWINSZ, which is no longer needed. * unexaix.c (unrelocate_symbols): Remove code only needed on ancient versions of AIX. * unexec.c: Remove references to COFF_ENCAPSULATE and SECTION_ALIGNMENT, which are not needed on any supported system. Remove references to obsolete systems. * m/7300.h: * m/acorn.h: * m/alliant-2800.h: * m/alliant.h: * m/alliant1.h: * m/alliant4.h: * m/alpha.h: * m/altos.h: * m/amdahl.h: * m/apollo.h: * m/att3b.h: * m/aviion.h: * m/celerity.h: * m/clipper.h: * m/cnvrgnt.h: * m/convex.h: * m/cydra5.h: * m/delta.h: * m/delta88k.h: * m/dpx2.h: * m/dual.h: * m/elxsi.h: * m/ews4800r.h: * m/gould-np1.h: * m/gould.h: * m/hp300bsd.h: * m/hp9000s300.h: * m/i860.h: * m/ibm370aix.h: * m/ibmps2-aix.h: * m/ibmrt-aix.h: * m/ibmrt.h: * m/iris4d.h: * m/iris5d.h: * m/iris6d.h: * m/irist.h: * m/is386.h: * m/isi-ov.h: * m/luna88k.h: * m/masscomp.h: * m/mega68.h: * m/mg1.h: * m/mips-nec.h: * m/mips-siemens.h: * m/mips4.h: * m/ncr386.h: * m/news-risc.h: * m/news.h: * m/next.h: * m/nh3000.h: * m/nh4000.h: * m/ns16000.h: * m/ns32000.h: * m/nu.h: * m/orion.h: * m/orion105.h: * m/paragon.h: * m/pfa50.h: * m/plexus.h: * m/pmax.h: * m/pyramid.h: * m/pyrmips.h: * m/sequent-ptx.h: * m/sequent.h: * m/sgi-challenge.h: * m/sgi3000.h: * m/sps7.h: * m/stride.h: * m/sun1.h: * m/sun2.h: * m/sun3-68881.h: * m/sun3-fpa.h: * m/sun3-soft.h: * m/sun3.h: * m/sun386.h: * m/symmetry.h: * m/tad68k.h: * m/tahoe.h: * m/tandem-s2.h: * m/targon31.h: * m/tek4300.h: * m/tekxd88.h: * m/tower32.h: * m/tower32v3.h: * m/ustation.h: * m/vax.h: * m/wicat.h: * m/xps100.h: * s/3700.h: * s/386-ix.h: * s/386bsd.h: * s/aix3-1.h: * s/aix3-2-5.h: * s/aix3-2.h: * s/aix4-1.h: * s/aix4.h: * s/alliant-2800.h: * s/alliant.h: * s/altos.h: * s/amdahl.h: * s/bsd386.h: * s/bsd4-1.h: * s/bsd4-2.h: * s/bsdos2-1.h: * s/bsdos2.h: * s/bsdos3.h: * s/bsdos4.h: * s/cxux.h: * s/cxux7.h: * s/decosf1-2.h: * s/decosf1-3.h: * s/decosf3-1.h: * s/decosf3-2.h: * s/decosf4-0.h: * s/dgux.h: * s/dgux5-4r2.h: * s/dgux5-4r3.h: * s/dgux5-4r4.h: * s/domain.h: * s/esix.h: * s/esix5r4.h: * s/ewsux5r4.h: * s/hpux.h: * s/hpux10-shr.h: * s/hpux10.h: * s/hpux8-shr.h: * s/hpux8.h: * s/hpux9-shr.h: * s/hpux9-x11r4.h: * s/hpux9.h: * s/hpux9shxr4.h: * s/iris3-5.h: * s/iris3-6.h: * s/irix3-3.h: * s/irix4-0.h: * s/irix5-0.h: * s/irix5-1.h: * s/irix5-2.h: * s/irix5-3.h: * s/isc2-2.h: * s/isc3-0.h: * s/isc4-0.h: * s/isc4-1.h: * s/linux.h: * s/newsos5.h: * s/nextstep.h: * s/osf1.h: * s/ptx.h: * s/riscix1-1.h: * s/riscix1-2.h: * s/riscos5.h: * s/rtu.h: * s/sco4.h: * s/sco5-shr.h: * s/sco5.h: * s/sunos4-0-shr.h: * s/sunos4-0.h: * s/sunos4-1-1.h: * s/sunos4-1-2-shr.h: * s/sunos4-1-2.h: * s/sunos4-1-3-shr.h: * s/sunos4-1-3.h: * s/sunos4-1-4-shr.h: * s/sunos4-1-4.h: * s/sunos4-1-shr.h: * s/sunos4-1.h: * s/ultrix.h: * s/ultrix4-3.h: * s/umax.h: * s/umips.h: * s/unipl5-0.h: * s/unipl5-2.h: * s/usg5-0.h: * s/usg5-2-2.h: * s/usg5-2.h: * s/usg5-3.h: * s/xenix.h: * unexapollo.c: * unexconvex.c: * unexelfsgi.c: * unexencap.c: * unexenix.c: * unexfreebsd.c: * unexfx2800.c: * unexhp9k3.c: * unexmips.c: * unexnext.c: * unexsni.c: * unexsol2.c: * unexsunos4.c: Removed. 2009-11-18 Stephen J. Turnbull <stephen@xemacs.org> Assorted cleanups. * font-mgr.h (CHECKING_LANG): Remove redundant conversion. * font-mgr.c: Update copyright notice and author headers. Reorder some functions. * objects-xlike-inc.c (xft_find_charset_font): Check for freeing NULL. Implement more of fontconfig API. * font-mgr.c: (Ffc_default_substitute): (Ffc_config_substitute): (Ffc_font_render_prepare): New functions. (Ffc_font_match): Gets optional argument CONFIG. (Ffc_config_destroy): Fix a typo. Reimplement FCSTRLIST_TO_LISP_USING as a function. (FCSTRLIST_TO_LISP_USING): Removed. (fcstrlist_to_lisp_using): New function. (Ffc_config_get_config_dirs): (Ffc_config_get_font_dirs): (Ffc_config_get_config_files): Replace FCSTRLIST_TO_LISP_USING with fcstrlist_to_lisp_using. Comment cleanups. * objects-xlike-inc.c (charset_reporter): Document RFC 3066. (xft_find_charset_font): Remove obsolete comment. 2009-10-18 Stephen J. Turnbull <stephen@xemacs.org> * font-mgr.h (PRINT_XFT_PATTERN): Cast away some warnings. * font-mgr.h (PRINT_XFT_PATTERN): * objects-x.c (x_font_instance_truename): * objects-xlike-inc.c (xft_find_charset_font): * objects.c (font_instance_truename_internal): Improve error checking and reporting for Xft fonts. * font-mgr.c (vars_of_font_mgr): Set xft-debug-level to 0. 2008-07-23 Stephen J. Turnbull <stephen@xemacs.org> * objects-xlike-inc.c (charset_table): Add names and ISO 639 codes for Arabic, Russian, and Thai. Regional variants are lower-cased. 2009-11-16 Stephen J. Turnbull <stephen@xemacs.org> Remove C asserts from test-format-data-conversion. See also changes in test-harness.el and c-tests.el in tests/automated. * tests.c (Ftest_hash_tables): (Ftest_data_format_conversion): Each now collects a list of test results and returns it. Update docstrings. (DFC_INITIALIZE): (DFC_CHECK_LENGTH): (DFC_CHECK_CONTENT): (DFC_RESULT_PASS): New macros. (DFC_CHECK_DATA_NUL): (DFC_CHECK_DATA): Use the new macros. Add an argument for the test description. (DFC_CHECK_DATA_COND_EOL_NUL) (DFC_CHECK_DATA_COND_EOL) (DFC_CHECK_DATA_COND_MULE_NUL): (DFC_CHECK_DATA_COND_MULE): Add an argument for the test description. 2009-11-17 Stephen J. Turnbull <stephen@xemacs.org> Fix issue630. * regex.c (regex_compile): Sync treatment of normal_char to GNU Emacs 22.1. Thanks to Aidan Kehoe for the diagnosis and suggestion. (print_partial_compiled_pattern): Avoid buffer overrun in case of /exactn/0. 2009-11-15 Aidan Kehoe <kehoea@parhasard.net> * mule-ccl.c (setup_ccl_program): Fix the union build, thank you Robert Delius Royar. 2009-11-15 Aidan Kehoe <kehoea@parhasard.net> * mule-ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION): Assert that we always have a symbol in this macro. (setup_ccl_program): Ensure we're not allocating unreachable memory in this function; all symbols must have been resolved in a given CCL program before this function is called. (find_ccl_program): New function, return a CCL program with all its symbols resolved if it is valid (possibly allocating memory), Qnil otherwise. (get_ccl_program): New function, exported to other files; call find_ccl_program, and error if it gives nil. (Fccl_program_p): Call find_ccl_program from this function instead of implementing the bulk of it here. (Fccl_execute): Call get_ccl_program instead of implementing the bulk of it here. (Fccl_execute_on_string): Ditto. * mule-ccl.h (Vfont_ccl_encoder_alist): Remove this declaration, it hasn't been used in years. (get_ccl_program): Declare this function. * mule-coding.c (ccl_putprop): Use get_ccl_program on any specified encode or decode CCL program property. (fixed_width_putprop): Ditto. * mule-charset.c (Fmake_charset): Use get_ccl_program on any specified ccl-program. (Fset_charset_ccl_program): Ditto. 2009-11-15 Aidan Kehoe <kehoea@parhasard.net> * eval.c (Fquote_maybe): Move this function here from callint.c; make it more comprehensive about which types are self-quoting. * lisp.h: Declare Fquote_maybe here, since it's now used in callint.c and defined in eval.c * callint.c (Fquote_maybe): Remove this function from this file. 2009-11-11 Stephen Turnbull <stephen@xemacs.org> * darwin.h: Remove. Functionality implemented in configure.ac. * config.h.in (USE_PARAM_H): New. Used by Darwin to #define BSD. 2009-11-09 Aidan Kehoe <kehoea@parhasard.net> * sysfile.h (DEFAULT_DIRECTORY_FALLBACK): Move the WIN32_NATIVE definition inside the #ifdef emacs conditional, clear up the comment after #else; thanks for the build failure report, Vin! Cast DEFAULT_DIRECTORY_FALLBACK to (const CIbyte *) by default, which better reflects its contents. * editfns.c (get_home_directory): * buffer.c (init_initial_directory): Cast DEFAULT_DIRECTORY_FALLBACK to (Ibyte *) with functions that take that type, now that is necessary. 2009-11-09 Jerry James <james@xemacs.org> * Makefile.in.in: Remove support for malloc.c ("old" GNU malloc). Do not define GNU_MALLOC, which was only used to distinguish between "old" and "new" GNU malloc. * alloc.c (malloced_storage_size): Drop support for old GNU malloc, and recast the remaining test in terms of SYSTEM_MALLOC. * config.h.in (GNU_MALLOC): Remove. * depend: Regenerate. * emacs.c (main_1): Clean up old, now irrelevant, commented-out preprocessor checks. Convert GNU_MALLOC test into an equivalent SYSTEM_MALLOC test. (voodoo_free_hook): Convert GNU_MALLOC test into an equivalent SYSTEM_MALLOC test. (Fkill_emacs): Ditto. * gc.h: Ditto. * malloc.c: Remove. * s/sunos4-0-shr.h: Defining GNU_MALLOC is no longer necessary. 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * window.c (Fsave_window_excursion, save_window_excursion_unwind): Remove these functions, the first was masked by #'save-window-excursion in window.el, and the second can be easily replaced with Lisp primitives. * bytecode.c (Bsave_window_excursion) : Don't pass save_window_excursion_unwind to record_unwind_protect, now the former is gone. * event-stream.c (execute_help_form): Ditto. 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * sysfile.h (DEFAULT_DIRECTORY_FALLBACK): New #define, "/" on Unix and "C:\\" on Win32 native, a directory that should "always" be available. * fileio.c (Fexpand_file_name): Use DEFAULT_DIRECTORY_FALLBACK here, instead of conditionalising on WIN32_NATIVE. * editfns.c (get_home_directory): Use DEFAULT_DIRECTORY_FALLBACK if looking up the home directory fails, on both Windows and Unix. * buffer.c (init_initial_directory): Don't give a fatal error if the current directory doesn't exist, chdir to DEFAULT_DIRECTORY_FALLBACK instead. 2009-11-02 Stephen Turnbull <stephen@xemacs.org> Fix issue145. * process.c: Remove abbreviated comments on exported Lisp variables, and point to docstrings. (init_process_io_handles): Allow Vdefault_network_coding_system and Vdefault_process_coding_system to be nil. (Vdefault_network_coding_system): (Vdefault_process_coding_system): Document that these variables may be nil. 2009-10-26 Aidan Kehoe <kehoea@parhasard.net> * config.h.in (REALPATH_CORRECTS_CASE): New #define, available on Darwin. * realpath.c (readlink_or_correct_case): On Darwin, use realpath(3)'s case correction to get the canonical case for a file; thank you Robert Delius Royar! 2009-10-16 Michael Sperber <mike@xemacs.org> * buffer.c (set_buffer_internal): Synchronize the window point with the current point when switching to another buffer. 2009-10-11 Michael Sperber <mike@xemacs.org> * event-stream.c (post_command_hook): Run `post-command-hook' without INHIBIT_EXISTING_PERMANENT_DISPLAY_OBJECT_DELETION - deleting other windows off that hook is legitimate. 2009-10-08 Jerry James <james@xemacs.org> * bytecode.c (bytecode_arithop): Make divide-by-zero errors noncontinuable. * floatfns.c (arith_error2): New macro for signaling divide-by-zero. (ceiling_two_fixnum): Handle a value returned from a continuable error. (ceiling_two_bignum): Ditto. (ceiling_two_ratio): Ditto. (ceiling_two_bigfloat): Ditto. (ceiling_two_float): Ditto. (floor_two_fixnum): Ditto. (floor_two_bignum): Ditto. (floor_two_ratio): Ditto. (floor_two_bigfloat): Ditto. (floor_two_float): Ditto. (round_two_fixnum): Ditto. (round_two_bignum): Ditto. (round_two_ratio): Ditto. (round_two_bigfloat): Ditto. (round_two_float): Ditto. (truncate_two_fixnum): Ditto. (truncate_two_bignum): Ditto. (truncate_two_ratio): Ditto. (truncate_two_bigfloat): Ditto. (truncate_two_float): Ditto. (truncate_one_ratio): Truncating zero should result in zero. 2009-10-10 Aidan Kehoe <kehoea@parhasard.net> * rangetab.c (Frange_table_type): Correct the docstring for this function, don't reuse that of Frange_table_p. 2009-10-05 Jerry James <james@xemacs.org> * emacs.c (main_1): Check the return value of dup() to quiet gcc. * input-method-xlib.c (describe_Window): Check the return value of system() to quiet gcc. * objects-tty.c (UNUSED_IF_NEW_GC): New macro. (tty_finalize_color_instance): Use it to quiet gcc. (tty_finalize_font_instance): Ditto. * syntax.c (UNUSED_IF_NEW_GC): New macro. (uninit_buffer_syntax_cache): Use it to quiet gcc. 2009-10-05 Jerry James <james@xemacs.org> * glade.c: Add GPL v2 or later notice with explicit permission of Bill Perry (private email). * gtk-glue.c: Ditto. * gtk-xemacs.c: Ditto. * gtk-xemacs.h: Ditto. * ui-byhand.c: Ditto. * ui-gtk.c: Ditto. * ui-gtk.h: Ditto. * unexfx2800.c: Fix malformed comment. 2009-10-05 Jerry James <james@xemacs.org> * Makefile.in.in: Remove internal GIF object files from link. * dgif_lib.c: Removed. * gif_io.c: Removed. * gifrlib.h: Removed. * glyphs-eimage.c: Use external giflib instead of internal GIF support. (gif_instantiate_unwind): Use giflib's FreeSavedImages call instead of the defunct GifFree. (gif_read_from_memory): Adapt signature to giflib. (gif_error_func): Removed. (gif_memory_close): Removed. (gif_decode_error_string): New function. (gif_instantiate): Adapt to giflib API. * libinterface.h: Include external giflib header instead of internal GIF header. 2009-06-28 Stephen J. Turnbull <stephen@xemacs.org> * Makefile.in.in (mostlyclean): (versionclean): (extraclean-noconfig): (extraclean): Clean certain build and debug products. 2009-10-01 Mike Sperber <mike@xemacs.org> * frame-x.c (x_focus_on_frame): Use correct timestamp with XSetInputFocus. 2009-09-30 Aidan Kehoe <kehoea@parhasard.net> * mule-coding.c (fixed_width_putprop): Register any CCL programs, avoiding crashes described by Robert Delius Royar. Though it's unclear why, I'll try to investigate once I'm on a 32-bit Unix machine regularly again. 2009-09-29 Mike Sperber <mike@xemacs.org> * minibuf.c (Ftry_completion): If the collection is a list, allow plain elements instead of cons cells. (As in GNU Emacs.) 2009-09-23 Stephen Turnbull <stephen@xemacs.org> * glyphs-eimage.c (png_instantiate): Clean up PNG handling. Fixes crash in issue570. Pad eimage buffer to handle overrun in libpng (fix crash). Reorder libpng setup and call png_read_update_info (display images with transparency correctly). Make background handling code prettier. Make comment style more consistent. Remove some obsolete comments and #ifdefs. 2009-09-20 Aidan Kehoe <kehoea@parhasard.net> * alloc.c (Flist): (Fvector): (Fbit_vector): (Fmake_byte_code): (Fstring): * data.c (Feqlsign): (Flss): (Fgtr): (Fleq): (Fgeq): (Fneq): (Fgtr): (Fplus): (Fminus): (Ftimes): (Fdiv): (Fquo): (Fmax): (Fmin): (Flogand): (Flogior): (Flogxor): * editfns.c (Fsave_excursion): (Fsave_current_buffer): (Fencode_time): (Finsert): (Finsert_before_markers): (Fsave_restriction): (Fformat): * elhash.c (Fmake_hash_table): * eval.c (Fdefun): (Fdefmacro): (Fcatch): (Funwind_protect): (Fcall_with_condition_handler): (Ffuncall): (Fapply): (Frun_hooks): * fns.c (Fappend): (Fconcat): (Fvconcat): (Fbvconcat): (Fnconc): * print.c (Fwith_output_to_temp_buffer): * process.c (Fstart_process_internal): * window.c (Fsave_window_excursion): * widget.c (Fwidget_apply): Add argument information, in a form understood by #'function-arglist, to all these MANY or UNEVALLED (that is to say, special-operator) built-in functions. 2009-09-20 Aidan Kehoe <kehoea@parhasard.net> * general-slots.h: * mule-coding.c (syms_of_mule_coding): * mule-charset.c (syms_of_mule_charset): Move Qfrom_unicode to general-slots.h, now it's used in more than one file. Fixes the native Win32 build; thank you Vin! 2009-09-19 Aidan Kehoe <kehoea@parhasard.net> Move the #'query-coding-region implementation to C. This is necessary because there is no reasonable way to access the corresponding mswindows-multibyte functionality from Lisp, and we need such functionality if we're going to have a reliable and portable #'query-coding-region implementation. However, this change doesn't yet provide #'query-coding-region for the mswindow-multibyte coding systems, there should be no functional differences between an XEmacs with this change and one without it. * mule-coding.c (struct fixed_width_coding_system): Add a new coding system type, fixed_width, and implement it. It uses the CCL infrastructure but has a much simpler creation API, and its own query_method, formerly in lisp/mule/mule-coding.el. * unicode.c: Move the Unicode query method implementation here from unicode.el. * lisp.h: Declare Fmake_coding_system_internal, Fcopy_range_table here. * intl-win32.c (complex_vars_of_intl_win32): Use Fmake_coding_system_internal, not Fmake_coding_system. * general-slots.h: Add Qsucceeded, Qunencodable, Qinvalid_sequence here. * file-coding.h (enum coding_system_variant): Add fixed_width_coding_system here. (struct coding_system_methods): Add query_method and query_lstream_method to the coding system methods. Provide flags for the query methods. Declare the default query method; initialise it correctly in INITIALIZE_CODING_SYSTEM_TYPE. * file-coding.c (default_query_method): New function, the default query method for coding systems that do not set it. Moved from coding.el. (make_coding_system_1): Accept new elements in PROPS in #'make-coding-system; aliases, a list of aliases; safe-chars and safe-charsets (these were previously accepted but not saved); and category. (Fmake_coding_system_internal): New function, what used to be #'make-coding-system--on Mule builds, we've now moved some of the functionality of this to Lisp. (Fcoding_system_canonical_name_p): Move this earlier in the file, since it's now called from within make_coding_system_1. (Fquery_coding_region): Move the implementation of this here, from coding.el. (complex_vars_of_file_coding): Call Fmake_coding_system_internal, not Fmake_coding_system; specify safe-charsets properties when we're a mule build. * extents.h (mouse_highlight_priority, Fset_extent_priority, Fset_extent_face, Fmap_extents): Make these available to other C files. 2009-09-11 Aidan Kehoe <kehoea@parhasard.net> * unicode.c (unicode_convert): Fix a bug with error sequences and very short input strings. 2009-08-31 Aidan Kehoe <kehoea@parhasard.net> * eval.c (For, Fand): Don't declare val as REGISTER in these functions, for some reason it breaks the non-DEBUG union build. These functions are only called from interpreted code, the performance implication doesn't matter. Thank you Robert Delius Royar! * eval.c (Fmultiple_value_list_internal): Error on too many arguments. 2009-08-24 Jerry James <james@xemacs.org> * lisp.h (INT_64_BIT): define as __int64 on WIN32. * glyphs-eimage.c (tiff_instantiate): cast argument of xnew_binbytes to size_t (guaranteed to fit because of immediately preceding check). 2009-08-11 Aidan Kehoe <kehoea@parhasard.net> * floatfns.c (ROUNDING_CONVERT, CONVERT_WITH_NUMBER_TYPES) (CONVERT_WITHOUT_NUMBER_TYPES, MAYBE_TWO_ARGS_BIGNUM) (MAYBE_ONE_ARG_BIGNUM, MAYBE_TWO_ARGS_RATIO) (MAYBE_ONE_ARG_RATIO, MAYBE_TWO_ARGS_BIGFLOAT) (MAYBE_ONE_ARG_BIGFLOAT, MAYBE_EFF, MAYBE_CHAR_OR_MARKER): New macros, used in the implementation of the rounding functions. (ceiling_two_fixnum, ceiling_two_bignum, ceiling_two_ratio) (ceiling_two_bigfloat, ceiling_one_ratio, ceiling_one_bigfloat) (ceiling_two_float, ceiling_one_float, ceiling_one_mundane_arg) (floor_two_fixnum, floor_two_bignum, floor_two_ratio) (floor_two_bigfloat, floor_one_ratio, floor_one_bigfloat) (floor_two_float, floor_one_mundane_arg, round_two_fixnum) (round_two_bignum_1, round_two_bignum, round_two_ratio) (round_one_bigfloat_1, round_two_bigfloat, round_one_ratio) (round_one_bigfloat, round_two_float, round_one_float) (round_one_mundane_arg, truncate_two_fixnum) (truncate_two_bignum, truncate_two_ratio, truncate_two_bigfloat) (truncate_one_ratio, truncate_one_bigfloat, truncate_two_float) (truncate_one_float, truncate_one_mundane_arg): New functions, used in the implementation of the rounding functions. (Fceiling, Ffloor, Fround, Ftruncate, Ffceiling, Fffloor) (Ffround, Fftruncate): Revise to fully support Common Lisp conventions. This means: -- All functions have optional DIVISOR arguments -- All functions return multiple values; see #'values -- All functions do their arithmetic with the correct number types according to the contamination rules. -- #'round and #'fround always round towards the even number in ambiguous cases. * doprnt.c (emacs_doprnt_1): * number.c (internal_coerce_number): Call Ftruncate with two arguments, not one. * floatfns.c (Ffloat): Correct this, if NUMBER is a bignum. * lisp.h: Declare Ftruncate as taking two arguments. * number.c: Provide scratch_ratio2, init it appropriately. * number.h: Make scratch_ratio2 available. * number.h (BIGFLOAT_ARITH_RETURN): * number.h (BIGFLOAT_ARITH_RETURN1): Correct these functions. 2009-08-11 Aidan Kehoe <kehoea@parhasard.net> * bytecode.c (enum Opcode /* Byte codes */): Add four new bytecodes, to deal with multiple values. (POP_WITH_MULTIPLE_VALUES): New macro. (POP): Modify this macro to ignore multiple values. (DISCARD_PRESERVING_MULTIPLE_VALUES): New macro. (DISCARD): Modify this macro to ignore multiple values. (TOP_WITH_MULTIPLE_VALUES): New macro. (TOP_ADDRESS): New macro. (TOP): Modify this macro to ignore multiple values. (TOP_LVALUE): New macro. (Bcall): Ignore multiple values where appropriate. (Breturn): Pass back multiple values. (Bdup): Preserve multiple values. Use TOP_LVALUE with most bytecodes that assign anything to anything. (Bbind_multiple_value_limits, Bmultiple_value_call, Bmultiple_value_list_internal, Bthrow): Implement the new bytecodes. (Bgotoifnilelsepop, Bgotoifnonnilelsepop, BRgotoifnilelsepop, BRgotoifnonnilelsepop): Discard any multiple values. * callint.c (Fcall_interactively): Ignore multiple values when calling #'eval, in two places. * device-x.c (x_IO_error_handler): * macros.c (pop_kbd_macro_event): * eval.c (Fsignal): * eval.c (flagged_a_squirmer): Call throw_or_bomb_out, not Fthrow, now that the latter is a special form. * eval.c: Make Qthrow, Qobsolete_throw available as symbols. Provide multiple_value_current_limit, multiple-values-limit (the latter as specified by Common Lisp. * eval.c (For): Ignore multiple values when comparing with Qnil, but pass any multiple values back for the last arg. * eval.c (Fand): Ditto. * eval.c (Fif): Ignore multiple values when examining the result of the condition. * eval.c (Fcond): Ignore multiple values when comparing what the clauses give, but pass them back if a clause gave non-nil. * eval.c (Fprog2): Never pass back multiple values. * eval.c (FletX, Flet): Ignore multiple when evaluating what exactly symbols should be bound to. * eval.c (Fwhile): Ignore multiple values when evaluating the test. * eval.c (Fsetq, Fdefvar, Fdefconst): Ignore multiple values. * eval.c (Fthrow): Declare this as a special form; ignore multiple values for TAG, preserve them for VALUE. * eval.c (throw_or_bomb_out): Make this available to other files, now Fthrow is a special form. * eval.c (Feval): Ignore multiple values when calling a compiled function, a non-special-form subr, or a lambda expression. * eval.c (Ffuncall): If we attempt to call #'throw (now a special form) as a function, don't error, call #'obsolete-throw instead. * eval.c (make_multiple_value, multiple_value_aset) (multiple_value_aref, print_multiple_value, mark_multiple_value) (size_multiple_value): Implement the multiple_value type. Add a long comment describing our implementation. * eval.c (bind_multiple_value_limits): New function, used by the bytecode and by #'multiple-value-call, #'multiple-value-list-internal. * eval.c (multiple_value_call): New function, used by the bytecode and #'multiple-value-call. * eval.c (Fmultiple_value_call): New special form. * eval.c (multiple_value_list_internal): New function, used by the byte code and #'multiple-value-list-internal. * eval.c (Fmultiple_value_list_internal, Fmultiple_value_prog1): New special forms. * eval.c (Fvalues, Fvalues_list): New Lisp functions. * eval.c (values2): New function, for C code returning multiple values. * eval.c (syms_of_eval): Make our new Lisp functions and symbols available. * eval.c (multiple-values-limit): Make this available to Lisp. * event-msw.c (dde_eval_string): * event-stream.c (execute_help_form): * glade.c (connector): * glyphs-widget.c (glyph_instantiator_to_glyph): * glyphs.c (evaluate_xpm_color_symbols): * gui-x.c (wv_set_evalable_slot, button_item_to_widget_value): * gui.c (gui_item_value, gui_item_display_flush_left): * lread.c (check_if_suppressed): * menubar-gtk.c (menu_convert, menu_descriptor_to_widget_1): * menubar-msw.c (populate_menu_add_item): * print.c (Fwith_output_to_temp_buffer): * symbols.c (Fsetq_default): Ignore multiple values when calling Feval. * symeval.h: Add the header declarations necessary for the multiple-values implementation. * inline.c: #include symeval.h, now that it has some inline functions. * lisp.h: Update Fthrow's declaration. Make throw_or_bomb_out available to all files. * lrecord.h (enum lrecord_type): Add the multiple_value type here. 2009-07-31 Stephen Turnbull <stephen@xemacs.org> * glyphs-gtk.c (gtk_xpm_instantiate): Image instance pixmap hotspot coordinates are Lisp integers; make it so. Thanks to Karl Kleinpaste for reporting. 2009-07-31 Stephen Turnbull <stephen@xemacs.org> * config.h.in (HAVE_DBM): * database.c (HAVE_DBM): Use gdbm/ndbm.h if needed (via NDBM_H_FILE). Thanks to Karl Kleinpaste for the report. 2009-07-28 Stephen Turnbull <stephen@xemacs.org> * faces.c (ensure_face_cachel_contains_charset): (add_face_cachel): (update_face_cachel_data): Fix typos in comments and otherwise improve them. 2009-07-27 Stephen J. Turnbull <stephen@xemacs.org> * eval.c (debug-on-error): Document interaction with process filters. 2009-07-15 Aidan Kehoe <kehoea@parhasard.net> * syntax.c (complex_vars_of_syntax): ?\012 is whitespace, as it always should have been, thank you Karl Kleinpaste and the Gnus team! 2009-07-11 Aidan Kehoe <kehoea@parhasard.net> * file-coding.c (undecided_canonicalize_after_coding): If no data have been seen, or if coding_stream_canonicalize_after_coding gives nil, pass back str->codesys, which will be of type undecided (the same as the old behaviour) but will reflect any CODESYS argument passed to make_coding_input_stream. See also the change in lisp/code-files.el 2009-06-09 Jerry James <james@xemacs.org> * glyphs-eimage.c (jpeg_instantiate): (gif_instantiate): (png_instantiate): (tiff_instantiate): Check for integer overflow before allocating memory for an image. 2009-06-20 Stephen Turnbull <stephen@xemacs.org> * callint.c (Finteractive): Document that (interactive) must appear at the "top level" of a function definition to be effective. 2009-06-14 Aidan Kehoe <kehoea@parhasard.net> * eval.c (For): * eval.c (Fand): * eval.c (Fif): * eval.c (Fwhen): * eval.c (Fcond): * eval.c (Fprogn): * eval.c (Fprog1): * eval.c (Fprog2): * eval.c (FletX): * eval.c (Flet): * eval.c (Fwhile): * eval.c (Fdefvar): * eval.c (Fdefconst): * eval.c (Frun_hooks): * eval.c (Frun_hooks_with_args): * eval.c (Frun_hooks_with_args_until_success): * eval.c (Frun_hooks_with_args_until_failure): Add arguments information, understood by #'function-arglist, to all these special forms, functions and macros. Remove the argument information that was already there that was not understood by #'function-arglist. 2009-06-02 Ron Isaacson <Ron.Isaacson@morganstanley.com> * nt.c (mswindows_link): Fix off-by-one bug in mswindows_link: need to include trailing NUL in length of file name. ChangeLog Entries from tests/ChangeLoggoto announcement, summary, changes 2011-04-26 Stephen J. Turnbull <stephen@xemacs.org> * XEmacs 21.5.30 "garlic" is released. 2011-04-24 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Check that distinct symbol macros with identical string names expand to different things. 2011-03-24 Jerry James <james@xemacs.org> * automated/query-coding-tests.el: "Compatiblity" -> "Compatibility". * gtk/event-stream-tests.el: "proccess" -> "process". 2011-03-17 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Only test the various old-* function if old-eq is bound and a subr. 2011-03-11 Aidan Kehoe <kehoea@parhasard.net> * automated/byte-compiler-tests.el: (defconst :foo 1) now gives a warning when byte-compiled, check for that. (setq :foo 1) now errors with interpreted code, but succeeds with byte-compiled code; check for the former, wrap a Known-Bug-Expect-Failure around a check for the error in the latter case, we can't yet remove this behaviour while we're using packages compiled by 21.4. * automated/lisp-tests.el (wrong-type-argument): Integer zero is a valid argument to #'substring-no-properties, use Assert not Check-Error for it. Check some other aspects of the functionality of #'substring-no-properties in passing. 2011-02-24 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (substring-no-properties): Make sure this function checks its arguments' types, the absence of which was revealed by Raymond Toy's bug report of http://mid.xemacs.org/4D65D413.5050103@gmail.com . 2011-02-10 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: * automated/lisp-tests.el (mapcar*): If multiple SEQUENCE arguments are passed to #'mapcar*, and the last one is circular while the others aren't, make sure that #'mapcar* doesn't error. 2011-02-07 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test lexical scope for `block', `return-from'; add a Known-Bug-Expect-Failure for a contorted example that fails when byte-compiled. 2011-01-23 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: When sanity-checking :start and :end keyword arguments, loop at macroexpansion time, not runtime, allowing us to pick up any compiler macros and giving a clearer *Test-Log* buffer. 2011-01-23 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (test-fun): #'delete* and friends can now throw a wrong-type-argument if handed a non-sequence; accept this too when checking for an error when passing a fixnum as the SEQUENCE argument. Check #'remove*, #'remove and #'remq too. 2011-01-15 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (list): Test #'concatenate, especially with more complicated TYPEs, which were previously not accepted by the function. 2011-01-14 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (list): Test #'find, especially the :default keyword, not specified by Common Lisp. 2011-01-02 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (test-fun): Test member*, assoc*, rassoc*, delete* here too. 2010-12-30 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (wrong-type-argument): Add a missing parenthesis here. Make sure #'count #'position #'find #'delete* #'remove* #'reduce #'delete-duplicates #'remove-duplicates #'replace #'mismatch #'search sanity check their :start and :end keyword arguments. 2010-11-20 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: * automated/lisp-tests.el (featurep): * automated/lisp-tests.el (wrong-type-argument): * automated/mule-tests.el (featurep): Check for args-out-of-range errors instead of wrong-type-argument errors in various places when code is handed a large bignum instead of a fixnum. Also check for the wrong-type-argument errors when giving the same code a non-integer value. 2010-11-06 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (list-nreverse): Check that #'reverse and #'nreverse handle non-list sequences properly. 2010-11-06 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (malformed-list): Check that #'mapcar, #'map and #'list-length throw this error when appropriate. 2010-10-25 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test format strings with %b, too. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * automated/lisp-reader-tests.el: Change references to SXEmacs to XEmacs. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * gtk/xemacs-toolbar.el: * gtk/toolbar-test.el: * gtk/statusbar-test.el: * gtk/gtk-extra-test.el: * gtk/gtk-embedded-test.el: * gtk/gnome-test.el: * gtk/event-stream-tests.el: Add copyright notice based on internal evidence. 2010-06-14 Stephen J. Turnbull <stephen@xemacs.org> * reproduce-crashes.el: Amend "this file" to "XEmacs is free...". 2010-10-14 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (x): Test #'nbutlast, #'butlast with dotted lists. Check that #'ldiff and #'tailp don't hang on circular lists; check that #'tailp returns t with circular lists when that is appropriate. Test them both with dotted lists. 2010-10-12 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Make sure circularity checking with #'merge is sane. 2010-08-15 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: (not, not, invalid-argument, invalid-argument): Check that error messages from the image specifier instantiator code are clearer than they used to be. 2010-08-15 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test that symbols with names that look like ratios are printed distinctly from the equivalent ratios. 2010-07-24 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test a couple of things #'reduce was just made more careful about. 2010-06-13 Stephen J. Turnbull <stephen@xemacs.org> * gtk/event-stream-tests.el: * gtk/gnome-test.el: * gtk/gtk-embedded-test.el: * gtk/gtk-extra-test.el: * gtk/statusbar-test.el: * gtk/toolbar-test.el: * gtk/xemacs-toolbar.el: Correct FSF address in permission notice. 2010-06-02 Aidan Kehoe <kehoea@parhasard.net> * gtk/gtk-test.el (gtk-test): Remove a conditional for InfoDock. 2010-04-05 Aidan Kehoe <kehoea@parhasard.net> * automated/hash-table-tests.el: Test the new built-in #'equalp hash table test. Test #'define-hash-table-test. * automated/lisp-tests.el: When asserting that two objects are #'equalp, also assert that their #'equalp-hash is identical. 2010-04-03 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Correct the parentheses in the equalp tests, so they get run more often. Within them, only attempt to read a bignum if the bignum feature is present; actually evaluate (/ 3/2 0.2), (/ 3/2 0.7) if the ratio feature is present. Construct the (Assert ...) calls at macroexpansion time, so the output in the *Test-Log* buffer is more informative. 2010-03-18 Ben Wing <ben@xemacs.org> * automated/c-tests.el: * automated/c-tests.el (when): Use `with-temp-buffer' so results don't get written into source file. 2010-03-12 Ben Wing <ben@xemacs.org> * automated/base64-tests.el (bt-base64-encode-string): * automated/base64-tests.el (bt-base64-decode-string): * automated/base64-tests.el (for): * automated/byte-compiler-tests.el: * automated/byte-compiler-tests.el (before-and-after-compile-equal): * automated/case-tests.el (downcase-string): * automated/case-tests.el (uni-mappings): * automated/ccl-tests.el (ccl-test-normal-expr): * automated/ccl-tests.el (ccl-test-map-instructions): * automated/ccl-tests.el (ccl-test-suites): * automated/database-tests.el (delete-database-files): * automated/extent-tests.el (let): * automated/extent-tests.el (insert): * automated/extent-tests.el (props): * automated/file-tests.el: * automated/file-tests.el (for): * automated/hash-table-tests.el (test): * automated/hash-table-tests.el (for): * automated/hash-table-tests.el (ht): * automated/hash-table-tests.el (iterations): * automated/hash-table-tests.el (h1): * automated/hash-table-tests.el (equal): * automated/hash-table-tests.el (=): * automated/lisp-tests.el: * automated/lisp-tests.el (eq): * automated/lisp-tests.el (test-setq): * automated/lisp-tests.el (my-vector): * automated/lisp-tests.el (x): * automated/lisp-tests.el (equal): * automated/lisp-tests.el (y): * automated/lisp-tests.el (featurep): * automated/lisp-tests.el (=): * automated/lisp-tests.el (six): * automated/lisp-tests.el (three): * automated/lisp-tests.el (one): * automated/lisp-tests.el (two): * automated/lisp-tests.el (five): * automated/lisp-tests.el (test1): * automated/lisp-tests.el (division-test): * automated/lisp-tests.el (for): * automated/lisp-tests.el (check-function-argcounts): * automated/lisp-tests.el (z): * automated/lisp-tests.el (eql): * automated/lisp-tests.el (test-harness-risk-infloops): * automated/lisp-tests.el (erase-buffer): * automated/lisp-tests.el (sym): * automated/lisp-tests.el (new-char): * automated/lisp-tests.el (new-load-file-name): * automated/lisp-tests.el (cl-floor): * automated/lisp-tests.el (foo): * automated/md5-tests.el (lambda): * automated/md5-tests.el (large-string): * automated/md5-tests.el (mapcar): * automated/md5-tests.el (insert): * automated/mule-tests.el: * automated/mule-tests.el (test-chars): * automated/mule-tests.el (existing-file-name): * automated/mule-tests.el (featurep): * automated/query-coding-tests.el (featurep): * automated/regexp-tests.el: * automated/regexp-tests.el (insert): * automated/regexp-tests.el (Assert): * automated/regexp-tests.el (=): * automated/regexp-tests.el (featurep): * automated/regexp-tests.el (text): * automated/regexp-tests.el (text1): * automated/regexp-tests.el ("aáa"): * automated/regexp-tests.el (eql): * automated/search-tests.el (insert): * automated/search-tests.el (featurep): * automated/search-tests.el (let): * automated/search-tests.el (boundp): * automated/symbol-tests.el: * automated/symbol-tests.el (name): * automated/symbol-tests.el (check-weak-list-unique): * automated/symbol-tests.el (string): * automated/symbol-tests.el (list): * automated/symbol-tests.el (foo): * automated/symbol-tests.el (eq): * automated/symbol-tests.el (fresh-keyword-name): * automated/symbol-tests.el (print-gensym): * automated/symbol-tests.el (mysym): * automated/syntax-tests.el (test-forward-word): * automated/syntax-tests.el (test-backward-word): * automated/syntax-tests.el (test-syntax-table): * automated/syntax-tests.el (with-syntax-table): * automated/syntax-tests.el (Skip-Test-Unless): * automated/syntax-tests.el (with): * automated/tag-tests.el (testfile): * automated/weak-tests.el (w): * automated/weak-tests.el (p): * automated/weak-tests.el (a): Undo change of e.g. (Assert (equalp ...)) to (Assert-equalp ...). Get rid of `Assert-equalp' and friends, `Assert-test', and `Assert-test-not'. Instead, make `Assert' smart enough to do the equivalent functionality when an expression like (Assert (equalp ...)) is seen. 2010-03-07 Stephen J. Turnbull <stephen@xemacs.org> * automated/mule-tests.el (string character conversion): Test escape-quoted for the range U+0000 to U+00FF. Inspired by Ben's patch to fix quoting of specials from C1 controls. 2010-02-22 Ben Wing <ben@xemacs.org> * reproduce-crashes.el (8): objects*.[ch] -> fontcolor*.[ch]. 2010-02-22 Ben Wing <ben@xemacs.org> * automated/syntax-tests.el: Use Known-Bug-Expect-Error, not Known-Bug-Expect-Failure, when error expected; else test suite will abort this file. 2010-02-22 Ben Wing <ben@xemacs.org> * automated/test-harness.el (test-harness-from-buffer): Remove unused binding. 2010-02-15 Ben Wing <ben@xemacs.org> * automated/search-tests.el (let): * automated/search-tests.el (boundp): debug-xemacs-searches renamed to debug-searches. 2010-02-20 Ben Wing <ben@xemacs.org> * automated/test-harness.el: * automated/test-harness.el (test-harness-bug-expected): New. * automated/test-harness.el (test-harness-unexpected-error-enter-debugger): New. * automated/test-harness.el (test-harness-assertion-failure-enter-debugger): New. * automated/test-harness.el (test-harness-unexpected-error-show-backtrace): New. * automated/test-harness.el (test-harness-assertion-failure-show-backtrace): New. * automated/test-harness.el (test-harness-assertion-failure-do-debug): New. * automated/test-harness.el (test-harness-unexpected-error-do-debug): New. * automated/test-harness.el (test-harness-unexpected-error-condition-handler): New. * automated/test-harness.el (test-harness-error-wrap): New. * automated/test-harness.el (test-harness-from-buffer): New variables that allow a backtrace to be displayed and/or the debugger to be entered when an assertion failure or unexpected error occurs. By default, debugging occurs when interactive and debug-on-error is set, and backtrace-displaying occurs either (a) when stack-trace-on-error is set, or (b) always, when an unexpected error occurs. (However, no backtracing or debugging occurs when a bug is expected.) 2010-02-19 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Change the #'split-string-by-char text to use US federal government information instead of a couple of sentences from the OED; the latter would probably have qualified as non-infringement, but with the former the question won't arise. (The German text in the same tests is from a very public domain 19th-century work.) 2010-02-19 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Check that multiple values are discarded correctly with #'mapcar and one SEQUENCE. (equal): 2010-02-05 Jerry James <james@xemacs.org> * DLL/dltest.c: Remove old test. Building and using any module now provides a better test than this. 2010-02-05 Jerry James <james@xemacs.org> * frame.el: Martin Buchholz claims ownership. 2010-01-25 Ben Wing <ben@xemacs.org> * automated/file-tests.el: New file. * automated/mule-tests.el (featurep): * automated/test-harness.el (test-harness-from-buffer): * automated/test-harness.el (batch-test-emacs): 2010-01-25 Ben Wing <ben@xemacs.org> * automated/file-tests.el: * automated/mule-tests.el (featurep): Clean up charsets-in-HELLO test and fix the list of expected charsets. * automated/test-harness.el (test-harness-from-buffer): Reverse order of "got" and "expected" values so it matches order of call to comparison. * automated/test-harness.el (batch-test-emacs): Update doc to indicate that a directory is allowed. 2010-02-01 Ben Wing <ben@xemacs.org> * automated/case-tests.el: * automated/case-tests.el (uni-mappings): * automated/search-tests.el: Delete old pristine-case-table code. Rewrite the Unicode torture test to take into account whether overlapping mappings exist for more than one character, and not doing the upcase/downcase comparisons in such cases. * automated/lisp-tests.el (foo): * automated/lisp-tests.el (string-variable): * automated/lisp-tests.el (featurep): Replace Assert (equal ... with Assert-equal; same for other types of equality. Replace some awkward equivalents of Assert-equalp with Assert-equalp. Add lots of equalp tests. * automated/case-tests.el: * automated/regexp-tests.el: * automated/search-tests.el: Fix up the comments at the top of the files. Move rules about where to put tests into case-tests.el. * automated/test-harness.el: * automated/test-harness.el (test-harness-aborted-summary-template): New. * automated/test-harness.el (test-harness-from-buffer): * automated/test-harness.el (batch-test-emacs): Fix Assert-test-not. Create Assert-not-equal and variants. Delete the doc strings from all these convenience functions to avoid excessive repetition; instead use one copy in a comment. 2010-01-31 Aidan Kehoe <kehoea@parhasard.net> * automated/search-tests.el: Check that multidimensional characters with repeated octets and case information force simple_search(), since boyer_moore() doesn't understand them when constructing its stride table. In passing; correct my spelling. * automated/case-tests.el (uni-mappings): In passing; delete a couple of redundant tests, correct the logic of another. 2010-01-30 Ben Wing <ben@xemacs.org> * automated/search-tests.el: * automated/search-tests.el (insert): Use LF not CRLF for line endings. 2010-01-30 Aidan Kehoe <kehoea@parhasard.net> * automated/regexp-tests.el: Make sure that control-1 characters are no longer treated as second-class citizens in regexp ranges, as in http://mid.xemacs.org/18829.34118.709782.704574@parhasard.net . 2010-01-29 Ben Wing <ben@xemacs.org> * automated/search-tests.el: New file. * automated/search-tests.el: * automated/case-tests.el: * automated/case-tests.el (pristine-case-table): Removed. * automated/case-tests.el (uni-mappings): * automated/lisp-tests.el: * automated/regexp-tests.el: Extract some search-related code from case-tests and regexp-tests and move to search-tests. Move some regexp-related code from lisp-tests to regexp-tests. Write a comment trying to express the proper division of labor between case-tests, search-tests and regexp-tests. Add a new test for the Control-1 search bug. Fix a buggy test in the Unicode torture-test section of case-tests.el. 2010-01-27 Ben Wing <ben@xemacs.org> * automated/test-harness.el (test-harness-from-buffer): Update doc string of `Assert-test' and change the failing-case message to be clearer. Also add `Assert-test-not' for asserting that a comparison should fail. 2010-01-27 Ben Wing <ben@xemacs.org> * automated/case-tests.el: * automated/case-tests.el (char-as-unicode-escape): New. Add a "torture test" that uses the full set of lower-upper case mappings from Unicode. See whether strings composed of all lower-case characters across all languages will correctly be uppercased to the string equivalent to all uppercase characters, and vice-versa, and whether you can correctly do a case-folding search in a buffer for these characters, all at once or individually. Result: a number of assertion failures. 2010-01-26 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el: Only give the list of character sets in HELLO once; correct it to reflect its current contents and the extant character sets. 2010-01-14 Ben Wing <ben@xemacs.org> * automated/mule-tests.el (featurep): Accidentally included changes from Unicode-internal ws that broke things. 2010-01-14 Ben Wing <ben@xemacs.org> * automated/base64-tests.el (bt-base64-encode-string): * automated/base64-tests.el (bt-base64-decode-string): * automated/base64-tests.el (for): * automated/byte-compiler-tests.el: * automated/byte-compiler-tests.el (before-and-after-compile-equal): * automated/case-tests.el: * automated/case-tests.el (downcase-string): * automated/case-tests.el (insert): * automated/case-tests.el (featurep): * automated/case-tests.el (let): * automated/case-tests.el (boundp): * automated/ccl-tests.el (ccl-test-normal-expr): * automated/ccl-tests.el (ccl-test-map-instructions): * automated/ccl-tests.el (ccl-test-suites): * automated/database-tests.el (delete-database-files): * automated/extent-tests.el (let): * automated/extent-tests.el (insert): * automated/extent-tests.el (props): * automated/hash-table-tests.el (test): * automated/hash-table-tests.el (for): * automated/hash-table-tests.el (ht): * automated/hash-table-tests.el (iterations): * automated/hash-table-tests.el (h1): * automated/hash-table-tests.el (make-hash-table): * automated/hash-table-tests.el (sxhash): * automated/lisp-tests.el: * automated/lisp-tests.el (setq): * automated/lisp-tests.el (test-setq): * automated/lisp-tests.el (my-vector): * automated/lisp-tests.el (nconc): * automated/lisp-tests.el (x): * automated/lisp-tests.el (y): * automated/lisp-tests.el (butlast): * automated/lisp-tests.el (+): * automated/lisp-tests.el (featurep): * automated/lisp-tests.el (-): * automated/lisp-tests.el (six): * automated/lisp-tests.el (three): * automated/lisp-tests.el (1): * automated/lisp-tests.el (one): * automated/lisp-tests.el (two): * automated/lisp-tests.el (0): * automated/lisp-tests.el (five): * automated/lisp-tests.el (logxor): * automated/lisp-tests.el (test1): * automated/lisp-tests.el (division-test): * automated/lisp-tests.el (for): * automated/lisp-tests.el (check-function-argcounts): * automated/lisp-tests.el (type-of): * automated/lisp-tests.el (mapcar): * automated/lisp-tests.el (z): * automated/lisp-tests.el (mapvector): * automated/lisp-tests.el (mapconcat): * automated/lisp-tests.el ([1 2 3]): * automated/lisp-tests.el (#*010): * automated/lisp-tests.el (test-harness-risk-infloops): * automated/lisp-tests.el (erase-buffer): * automated/lisp-tests.el (sym): * automated/lisp-tests.el (subseq): * automated/lisp-tests.el (length): * automated/lisp-tests.el (102): * automated/lisp-tests.el (read): * automated/lisp-tests.el (new-char): * automated/lisp-tests.el (new-load-file-name): * automated/lisp-tests.el (cl-floor): * automated/lisp-tests.el (foo): * automated/lisp-tests.el (string-variable): * automated/md5-tests.el (lambda): * automated/md5-tests.el (large-string): * automated/md5-tests.el (mapcar): * automated/md5-tests.el (insert): * automated/mule-tests.el (test-chars): * automated/mule-tests.el (existing-file-name): * automated/mule-tests.el (featurep): * automated/query-coding-tests.el (featurep): * automated/regexp-tests.el: * automated/regexp-tests.el (insert): * automated/regexp-tests.el (Assert): * automated/regexp-tests.el (string-match): * automated/regexp-tests.el (featurep): * automated/regexp-tests.el (text): * automated/regexp-tests.el (text1): * automated/regexp-tests.el ("aáa"): * automated/symbol-tests.el: * automated/symbol-tests.el (name): * automated/symbol-tests.el (check-weak-list-unique): * automated/symbol-tests.el (string): * automated/symbol-tests.el (list): * automated/symbol-tests.el (foo): * automated/symbol-tests.el (read): * automated/symbol-tests.el (eval): * automated/symbol-tests.el (fresh-keyword-name): * automated/symbol-tests.el (set): * automated/symbol-tests.el (print-gensym): * automated/symbol-tests.el (mysym): * automated/syntax-tests.el (test-forward-word): * automated/syntax-tests.el (test-backward-word): * automated/syntax-tests.el (test-syntax-table): * automated/syntax-tests.el (with-syntax-table): * automated/syntax-tests.el (Skip-Test-Unless): * automated/syntax-tests.el (with): * automated/tag-tests.el (testfile): * automated/test-harness.el: * automated/test-harness.el (test-harness-from-buffer): * automated/weak-tests.el (w): * automated/weak-tests.el (p): * automated/weak-tests.el (a): Create Assert-eq, Assert-equal, etc. These are equivalent to (Assert (eq ...)) etc. but display both the actual value and the expected value of the comparison. Use them throughout the test suite. * automated/test-harness.el (Assert): Clean up code and doc string of macro Assert. 2010-01-13 Ben Wing <ben@xemacs.org> * automated/test-harness.el (Assert): Need to quote the assertion expression, but not the description expression. 2010-01-11 Ben Wing <ben@xemacs.org> * automated/mule-tests.el (featurep): Use utf-8 as file-name-coding-system under Cygwin 1.7+. 2010-02-07 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (split-string-by-char): Test this function, and its new ESCAPE-CHAR argument. 2010-01-01 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test #'functionp, making sure it gives nil for special forms. 2009-12-31 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test much of the functionality of equalp; add a pointer to Paul Dietz' ANSI test suite for this function, converted to Emacs Lisp. Not including the tests themselves in XEmacs because who owns the copyright on the files is unclear and the GCL people didn't respond to my queries. 2009-12-21 Jerry James <james@xemacs.org> * Dnd/README: Remove references to OffiX drag-and-drop. * Dnd/droptest.el (start-drag): Remove OffiX support. (start-region-drag): Ditto. 2009-12-18 Jerry James <james@xemacs.org> * glyph-test.el: Add copyright and GPL v2 or later header with permission of Andy Piper. * gutter-test.el: Ditto. 2009-12-10 Jerry James <james@xemacs.org> * auc-tex-test: Remove obsolete file. 2009-11-10 Jerry James <james@xemacs.org> * autoconf/regressiontest.pl: Remove reference to dynodump. 2009-11-16 Stephen J. Turnbull <stephen@xemacs.org> Remove C asserts from test-format-data-conversion. See also changes in src/tests.c. * automated/c-tests.el (main loop): Process a list of results passed out of the C-level test function. * automated/test-harness.el (Assert): Allow an optional description for use in loops and other cases where the assertion itself is not informative (eg, c-test.el). 2009-11-16 Stephen J. Turnbull <stephen@xemacs.org> * reproduce-crashes.el (13): New bug reported by Adam Sjogren. 2009-11-14 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Don't call Known-Bug-Expect-Failure now that the particular letf bug it tickled is fixed. 2009-11-11 Stephen Turnbull <stephen@xemacs.org> * sigpipe.c: Add standard permission notice, after email confirmation from Mly. * autoconf/regressiontest.pl: Add Malcolm's copyright and standard permission notice, after email confirmation from Malcolm. 2009-11-02 Stephen Turnbull <stephen@xemacs.org> * automated/lisp-tests.el: Fix typo in equalp test. Add more tests of equalp. 2009-11-02 Stephen Turnbull <stephen@xemacs.org> * automated/mule-tests.el (default-process-coding-system): Check that binding it to nil is OK. 2009-11-01 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Check that (equal "hi there" [hi there]) gives nil, instead of erroring; fixes a bug Ben introduced in 2002. 2009-10-12 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el : Revert to the old Unicode mapping for scaron once we're finished testing it. Don't check the fixed-width coding systems with odd line endings for ASCII-transparency; maybe we should, but that would require that invalid sequence characters for on-disk ?\x0a be generated by Macintosh line-ending coding systems, for example. 2009-10-05 Jerry James <jamesjer@xemacs.org> * gtk/event-stream-tests.el: Add GPL v2 or later notice with explicit permission of Bill Perry (private email). * gtk/gnome-test.el: Ditto. * gtk/gtk-embedded-test.el: Ditto. * gtk/gtk-extra-test.el: Ditto. * gtk/statusbar-test.el: Ditto. * gtk/toolbar-test.el: Ditto. * gtk/xemacs-toolbar.el: Ditto. 2009-09-19 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el: Check a coding system's type, not an 8-bit-fixed property, for whether that coding system should be treated as a fixed-width coding system. * automated/query-coding-tests.el: Don't test the query coding functionality for mswindows-multibyte coding systems, it's not yet implemented. 2009-09-11 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el (featurep): Check that a Unicode bug with very short inputs has been fixed. 2009-09-02 Jerry James <james@xemacs.org> * reproduce-crashes.el (12): New bug. 2009-08-31 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (Assert-rounding): Remove an overly-verbose failure message here. Correct a couple of tests which were buggy in themselves. Add three new tests, checking the behaviour of #'or and #'and when passed zero arguments, and a Known-Bug-Expect-Failure call involving letf and values. (The bug predates the C-level multiple-value implementation.) 2009-08-16 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (foo): Test the Common Lisp-compatibile multiple value functionality. 2009-08-11 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test the new Common Lisp-compatible rounding functions available in C. (generate-rounding-output): Provide a function useful for generating the data for the rounding functions tests. 2009-08-10 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el: Revert to the original language environment once we've tested all the others, preventing things like a Chinese terminal coding system being selected when you actually have a UTF-8 tty. 2009-07-13 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el: Now that find-file on a nonexistent path gives a modified buffer, we want to set this kind of buffer to be non-modified here before killing it. 2009-07-11 Aidan Kehoe <kehoea@parhasard.net> * automated/mule-tests.el: Check for Richard Zidlicky's bug of http://mid.xemacs.org/20090602194123.GA5163@linux-m68k.org; also check that supplying CODESYS to #'find-file is respected both for nonexistent files and zero-length existing files. goto announcement, summary, changes |
||||||||||||||||
|
|
||||||||||||||||
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