# This is a patch for xemacs-21.5.26 to update it to xemacs-21.5.27 # # To apply this patch: # STEP 1: Chdir to the source directory. # STEP 2: Run the 'applypatch' program with this patch file as input. # # If you do not have 'applypatch', it is part of the 'makepatch' package # that you can fetch from the Comprehensive Perl Archive Network: # http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz # In the above URL, 'x' should be 2 or higher. # # To apply this patch without the use of 'applypatch': # STEP 1: Chdir to the source directory. # If you have a decent Bourne-type shell: # STEP 2: Run the shell with this file as input. # If you don't have such a shell, you may need to manually create/delete # the files as shown below. # STEP 3: Run the 'patch' program with this file as input. # # These are the commands needed to create/delete files/directories: # rm -f './src/xft-fonts.h' rm -f './src/xft-fonts.c' rm -f './modules/auto-autoloads.el' rm -f './lisp/mule/custom-load.el' rm -f './lisp/mule/auto-autoloads.el' rm -f './lisp/finder-inf.el' rm -f './lisp/custom-load.el' rm -f './lisp/auto-autoloads.el' rm -f './etc/PROBLEMS' touch './lisp/font-mgr.el' chmod 0644 './lisp/font-mgr.el' touch './src/font-mgr.c' chmod 0644 './src/font-mgr.c' touch './src/font-mgr.h' chmod 0644 './src/font-mgr.h' # # This command terminates the shell and need not be executed manually. exit # #### End of Preamble #### #### Patch data follows #### diff --text -u 'xemacs-21.5.26/COPYING' 'xemacs-21.5.27/COPYING' Index: ./COPYING --- ./COPYING Thu Dec 19 07:42:14 1996 +++ ./COPYING Fri May 12 00:07:19 2006 @@ -2,8 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place - Suite 330 - Boston, MA 02111-1307, USA. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -292,7 +291,7 @@ the "copyright" line and a pointer to where the full notice is found. - Copyright (C) 19yy + Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -305,16 +304,16 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. diff --text -u 'xemacs-21.5.26/ChangeLog' 'xemacs-21.5.27/ChangeLog' Index: ./ChangeLog --- ./ChangeLog Sat Apr 1 03:46:15 2006 +++ ./ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,15 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + +2006-04-06 Jerry James + + * COPYING: Update to latest upstream version. + +2006-04-15 Stephen J. Turnbull + + * configure.ac: Add stubs for fontconfig configuration. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/configure' 'xemacs-21.5.27/configure' Index: ./configure --- ./configure Sat Apr 1 03:46:15 2006 +++ ./configure Tue May 16 13:16:04 2006 @@ -19711,6 +19711,11 @@ { echo "Error:" "Unable to find libXft for --with-xft" >&2; exit 1; } fi + with_fontconfig=yes + cat >>confdefs.h <<\_ACEOF +#define HAVE_FONTCONFIG 1 +_ACEOF + cat >>confdefs.h <<\_ACEOF #define USE_XFT 1 _ACEOF @@ -39470,6 +39475,9 @@ fi if test "$with_wmcommand" != no; then echo " - Handling WM_COMMAND properly." + fi + if test "$with_fontconfig" = "yes"; then + echo " - Using fontconfig to manage fonts." fi if test "$with_xft_emacs" = "yes"; then echo " - Compiling in support for Xft antialiased fonts (EXPERIMENTAL)." diff --text -u 'xemacs-21.5.26/configure.ac' 'xemacs-21.5.27/configure.ac' Index: ./configure.ac --- ./configure.ac Fri Mar 31 03:11:17 2006 +++ ./configure.ac Mon Apr 24 01:11:17 2006 @@ -669,6 +669,11 @@ [AC_DEFINE(INFOPATH_USER_DEFINED)], []) dnl XE_HELP_SUBSECTION([Window-system options]) +dnl Enable when fontconfig support is factored out of Xft. +dnl XE_MERGED_ARG([fontconfig], +dnl AS_HELP_STRING([--with-fontconfig], +dnl [Use fontconfig library to configure fonts.], +dnl [],[]) dnl if you change defaults, make sure to fix arg 6 of the OPTION_HELP macro. XE_COMPLEX_ARG([xft], [XE_COMPLEX_OPTION_HELP_STRING([--with-xft], @@ -3463,6 +3468,9 @@ [XE_DIE(["Unable to find libfontconfig for --with-xft"])]) AC_CHECK_LIB(Xft, XftFontOpen, XE_PREPEND(-lXft, libs_x), [XE_DIE(["Unable to find libXft for --with-xft"])]) + dnl #### detect fontconfig properly!!!! + with_fontconfig=yes + AC_DEFINE(HAVE_FONTCONFIG) AC_DEFINE(USE_XFT) dnl Due to interactions with other libraries, must postpone AC_DEFINE dnl of USE_XFT_MENUBARS, USE_XFT_TABS, and USE_XFT_GAUGE. @@ -5976,6 +5984,9 @@ fi if test "$with_wmcommand" != no; then echo " - Handling WM_COMMAND properly." + fi + if test "$with_fontconfig" = "yes"; then + echo " - Using fontconfig to manage fonts." fi if test "$with_xft_emacs" = "yes"; then echo " - Compiling in support for Xft antialiased fonts (EXPERIMENTAL)." diff --text -u 'xemacs-21.5.26/etc/ChangeLog' 'xemacs-21.5.27/etc/ChangeLog' Index: ./etc/ChangeLog --- ./etc/ChangeLog Sat Apr 1 03:46:15 2006 +++ ./etc/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,7 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/lib-src/ChangeLog' 'xemacs-21.5.27/lib-src/ChangeLog' Index: ./lib-src/ChangeLog --- ./lib-src/ChangeLog Sat Apr 1 03:46:15 2006 +++ ./lib-src/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,16 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + +2006-04-29 Aidan Kehoe + + * make-docfile.c: + * make-docfile.c (put_filename): + * make-docfile.c (scan_c_file): + * make-docfile.c (scan_lisp_file): + Record file name information for built-in symbols. Based on the + FSF's implementation of same. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/lib-src/make-docfile.c' 'xemacs-21.5.27/lib-src/make-docfile.c' Index: ./lib-src/make-docfile.c --- ./lib-src/make-docfile.c Tue Feb 22 17:05:58 2005 +++ ./lib-src/make-docfile.c Sun Apr 30 01:15:21 2006 @@ -44,6 +44,7 @@ #include #include +#include #include #include #include @@ -58,6 +59,7 @@ ('0' <= c && c <= '9') || \ (c == '_')) +static void put_filename (const char *filename); static int scan_file (const char *filename); static int read_c_string (FILE *, int, int); static void write_c_args (FILE *out, const char *func, char *buf, int minargs, @@ -263,6 +265,30 @@ return err_count > 0; } +/* Add a source file name boundary in the output file. */ +static void +put_filename (const char *filename) +{ + const char *tmp; + + /* Why are we cutting this off? */ + for (tmp = filename; *tmp; tmp++) + { + if (IS_DIRECTORY_SEP(*tmp)) + filename = tmp + 1; + } + + /* <= because sizeof includes the nul byte at the end. Not quite right, + because it should include the length of the symbol + "\037[VF]" instead + of simply 10. */ + assert(sizeof("\037S\n") + strlen(filename) + 10 + <= DOC_MAX_FILENAME_LENGTH); + + putc (037, outfile); + putc ('S', outfile); + fprintf (outfile, "%s\n", filename); +} + /* Read file FILENAME and output its doc strings to outfile. */ /* Return 1 if file is not found, 0 if it is found. */ @@ -864,11 +890,14 @@ if (defunflag || defvarflag || c == '"') { /* XEmacs change: the original code is in the "else" clause */ + /* XXX Must modify the documentation file name code to handle + ELLCCs */ if (ellcc) fprintf (outfile, " CDOC%s(\"%s\", \"\\\n", defvarflag ? "SYM" : "SUBR", globalbuf); else { + put_filename (filename); /* XEmacs addition */ putc (037, outfile); putc (defvarflag ? 'V' : 'F', outfile); fprintf (outfile, "%s\n", globalbuf); @@ -963,6 +992,10 @@ The NAME and DOCSTRING are output. NAME is preceded by `F' for a function or `V' for a variable. An entry is output only if DOCSTRING has \ newline just after the opening " + + Adds the filename a symbol or function was found in before its docstring; + there's no need for this with the load-history available, but we do it for + consistency with the C parsing code. */ static void @@ -1356,6 +1389,7 @@ In the latter case, the opening quote (and leading backslash-newline) have already been read. */ + put_filename (filename); /* XEmacs addition */ putc ('\n', outfile); /* XEmacs addition */ putc (037, outfile); putc (type, outfile); diff --text -u 'xemacs-21.5.26/lisp/ChangeLog' 'xemacs-21.5.27/lisp/ChangeLog' Index: ./lisp/ChangeLog --- ./lisp/ChangeLog Sat Apr 1 03:46:15 2006 +++ ./lisp/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,121 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + +2006-05-10 Jerry James + + * x-font-menu.el (x-font-menu-font-data): Always pass a device as + the 4th argument to x-font-menu-font-data-xft. + +2006-04-29 Aidan Kehoe + + * mule/ethio-util.el (ethio-fidel-to-java-buffer): + "\u" -> "\\u" as it should have been in the first place. + +2006-04-29 Aidan Kehoe + + * dumped-lisp.el (preloaded-file-list): + Move loadhist earlier in the preloaded-file list. + * help.el: + * help.el (help-mode-map): Add bindings to find the source code of + a function, notably when that function's in C. + * help.el (describe-function-find-file, describe-symbol-find-file): + Removed. Use symbol-file from loadhist.el instead. + * help.el (frob-help-extents): + * help.el (describe-function-1): + Allow built-in function file names to be hyperlinks. + * help.el (describe-variable): + * help.el (help-find-source-or-scroll-up): New. + * help.el (help-mouse-find-source-or-track): New. + Make describe-function a bit more mouse-friendly, basically. + * loadhist.el (symbol-file): + Support looking up builtin symbols using built-in-symbol-file. + +2006-04-23 Ville Skyttä + + * simple.el (goto-line): Add optional `buffer' argument, from + GNU Emacs CVS. + (next-line-add-newlines): Remove obsolete comments from the docs. + +2006-04-25 Stephen J. Turnbull + + Repair busted commit and gratuitous doc improvements. + + * startup.el (command-line-do-help): Document options for forcing + initial from on a given window-system. + + * faces.el (Face-frob-property): Give informative error if device + type has no mapper function. + + * x-font-menu.el (x-font-menu-font-data-xft): + * x-faces.el (globally-declare-fboundp): + Eliminate references to `fc-font-real-pattern'. + + * fontconfig.el (section header comments): + * x-init.el (x-init-toolbar-from-resources): + Improve comments. + +2006-04-23 Aidan Kehoe + + * cl.el (push): + * cl.el (pushnew): + Take on board Stephen's criticism of my last changes to the CL + docstrings. + +2006-04-24 Stephen J. Turnbull + + * dumped-lisp.el (fontconfig): Load only with Xft. + + * x-faces.el (fontconfig): Require only with Xft. + +2006-04-16 Stephen J. Turnbull + + * font-mgr.el: New file. Provides Lisp emulation of fontconfig. + + * fontconfig.el: Require 'font-mgr. + +2006-04-11 Stephen J. Turnbull + + * fontconfig.el: + Add some comments on proposed generic APIs. + Remove some unused and probably broken code. + Use `fc-define-property' to define new X11 XLFD standard + properties: x11-swidth, x11-adstyle, x11-resx, x11-resy, + x11-registry, and x11-encoding. + Delete fc-font-name-property-PROPERTY constants. + (fc-define-property): + Add `fc-pattern-del-PROPERTY'. + + * x-faces.el (x-make-font-bold-xft): + (x-make-font-unbold-xft): + (x-make-font-italic-xft): + (x-make-font-unitalic-xft): + (x-find-xft-font-of-size): + * x-font-menu.el (x-font-menu-load-font-xft): + Use property-specific APIs instead of defconsts for property names. + +2006-04-16 Aidan Kehoe + + * cl.el (incf): + * cl.el (decf): + * cl.el (pop): + * cl.el (push): + * cl.el (pushnew): + Docstring clarifications; drop non-standard formatting for incf, + decf, pop, move to GNU's parameter names for push, pushnew since + they make it much easier to remember the right order. + +2006-04-15 Aidan Kehoe + + * cmdloop.el (read-quoted-char): Use unicode-to-char instead of + int-to-char for converting code points to characters; document + this usage. This is compatible with previously documented + behaviour, since the mapping from number to character was only + stable and well-defined for ISO-8859-1. Thank you Pete Forman! + + Document some help subsystem incompatibility with GNU that seems + to have been ignored during the last sync. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/lisp/cl.el' 'xemacs-21.5.27/lisp/cl.el' Index: ./lisp/cl.el --- ./lisp/cl.el Wed Jan 26 18:53:32 2005 +++ ./lisp/cl.el Mon Apr 24 05:12:26 2006 @@ -132,7 +132,7 @@ ;;; can safely be used in .emacs files. (defmacro incf (place &optional x) - "(incf PLACE [X]): increment PLACE by X (1 by default). + "Increment PLACE by X (1 by default). PLACE may be a symbol, or any generalized variable allowed by `setf'. The return value is the incremented value of PLACE." (if (symbolp place) @@ -142,7 +142,7 @@ (list 'callf '+ place (or x 1)))) (defmacro decf (place &optional x) - "(decf PLACE [X]): decrement PLACE by X (1 by default). + "Decrement PLACE by X (1 by default). PLACE may be a symbol, or any generalized variable allowed by `setf'. The return value is the decremented value of PLACE." (if (symbolp place) @@ -150,7 +150,7 @@ (list 'callf '- place (or x 1)))) (defmacro pop (place) - "(pop PLACE): remove and return the head of the list stored in PLACE. + "Remove and return the head of the list stored in PLACE. Analogous to (prog1 (car PLACE) (setf PLACE (cdr PLACE))), though more careful about evaluating each argument only once and in the right order. PLACE may be a symbol, or any generalized variable allowed by `setf'." @@ -158,21 +158,24 @@ `(car (prog1 ,place (setq ,place (cdr ,place)))) (cl-do-pop place))) -(defmacro push (x place) - "(push X PLACE): insert X at the head of the list stored in PLACE. -Analogous to (setf PLACE (cons X PLACE)), though more careful about -evaluating each argument only once and in the right order. PLACE may -be a symbol, or any generalized variable allowed by `setf'." - (if (symbolp place) `(setq ,place (cons ,x ,place)) - (list 'callf2 'cons x place))) +(defmacro push (newelt listname) + "Add NEWELT at the beginning of the list stored in LISTNAME. +Analogous to (setf LISTNAME (cons NEWELT LISTNAME)), though more careful +about evaluating each argument only once and in the right order. LISTNAME +may be a symbol, or any generalized variable allowed by `setf'; that is, it +does not necessarily have to be a list, though `push' is most often used on +lists. " + (if (symbolp listname) `(setq ,listname (cons ,newelt ,listname)) + (list 'callf2 'cons newelt listname))) -(defmacro pushnew (x place &rest keys) - "(pushnew X PLACE): insert X at the head of the list if not already there. -Like (push X PLACE), except that the list is unmodified if X is `eql' to -an element already on the list. +(defmacro pushnew (newelt listname &rest keys) + "Add NEWELT at the beginning of LISTNAME, unless it's already in LISTNAME. +Like (push NEWELT LISTNAME), except that the list is unmodified if NEWELT is +`eql' to an element already on the list. Keywords supported: :test :test-not :key" - (if (symbolp place) (list 'setq place (list* 'adjoin x place keys)) - (list* 'callf2 'adjoin x place keys))) + (if (symbolp listname) (list 'setq listname + (list* 'adjoin newelt listname keys)) + (list* 'callf2 'adjoin newelt listname keys))) (defun cl-set-elt (seq n val) (if (listp seq) (setcar (nthcdr n seq) val) (aset seq n val))) diff --text -u 'xemacs-21.5.26/lisp/cmdloop.el' 'xemacs-21.5.27/lisp/cmdloop.el' Index: ./lisp/cmdloop.el --- ./lisp/cmdloop.el Mon Jan 9 05:00:43 2006 +++ ./lisp/cmdloop.el Mon Apr 17 02:09:30 2006 @@ -542,12 +542,15 @@ :group 'editing-basics) (defun read-quoted-char (&optional prompt) + ;; XEmacs change; description of the character code input "Like `read-char', but do not allow quitting. -Also, if the first character read is an octal digit, -we read any number of octal digits and return the -specified character code. Any nondigit terminates the sequence. -If the terminator is RET, it is discarded; -any other terminator is used itself as input. + +Also, if the first character read is a digit of base (the value of) +`read-quoted-char-radix', we read as many of such digits as are +typed and return a character with the corresponding Unicode code +point. Any input that is not a digit (in the base used) terminates +the sequence. If the terminator is RET, it is discarded; any other +terminator is used itself as input. The optional argument PROMPT specifies a string to use to prompt the user. The variable `read-quoted-char-radix' controls which radix to use @@ -558,13 +561,20 @@ ) (while (not done) (let ((inhibit-quit first) - ;; Don't let C-h get the help message--only help function keys. + ;; Don't let C-h get the help message--only help + ;; function keys. + ;; XEmacs: we don't support the help function keys as of + ;; 2006-04-16. GNU have a Vhelp_event_list in addition + ;; to help-char in src/keyboard.c, and it's only useful + ;; to set help-form while help-char is nil when that + ;; functionality is available. (help-char nil) - (help-form + (help-form (format "Type the special character you want to use, -or the octal character code. +or the character code, base %d (the value of `read-quoted-char-radix') RET terminates the character code and is discarded; -any other non-digit terminates the character code and is then used as input.")) +any other non-digit terminates the character code and is then used as input." + read-quoted-char-radix))) (and prompt (display-message 'prompt (format "%s-" prompt))) (setq event (next-command-event) char (or (event-to-character event) @@ -605,7 +615,8 @@ (t (setq code (char-to-int char) done t))) (setq first nil)) - (int-to-char code))) + ;; XEmacs change; unicode-to-char instead of int-to-char + (unicode-to-char code))) ;; in passwd.el. ; (defun read-passwd (prompt &optional confirm default) diff --text -u 'xemacs-21.5.26/lisp/dumped-lisp.el' 'xemacs-21.5.27/lisp/dumped-lisp.el' Index: ./lisp/dumped-lisp.el --- ./lisp/dumped-lisp.el Sat Nov 26 20:45:53 2005 +++ ./lisp/dumped-lisp.el Sun Apr 30 01:15:26 2006 @@ -54,7 +54,7 @@ "specifier" "frame" ; needed by faces ;; #### this should be (featurep 'xft) - (when (featurep 'x) "fontconfig") ; needed by x-faces + (when (featurep 'xft-fonts) "fontconfig") ; needed by x-faces (when (featurep 'x) "x-faces") ; needed by faces (when (featurep 'gtk) "gtk-faces") (when (valid-console-type-p 'mswindows) "msw-faces") @@ -92,6 +92,8 @@ ; `emacs-user-extension-dir' "misc" ;; (pureload "profile") + "loadhist" ; Must be dumped before loaddefs is loaded + ; Used by help. "help" ;; (pureload "hyper-apropos") Soon... "files" @@ -308,7 +310,6 @@ ;; "sun-eos-debugger" ;; "sun-eos-debugger-extra" ;; "sun-eos-menubar")) - "loadhist" ; Must be dumped before loaddefs is loaded "loaddefs" ; <=== autoloads get loaded here )) diff --text -u 'xemacs-21.5.26/lisp/faces.el' 'xemacs-21.5.27/lisp/faces.el' Index: ./lisp/faces.el --- ./lisp/faces.el Sat Nov 26 20:45:54 2005 +++ ./lisp/faces.el Tue Apr 25 23:01:52 2006 @@ -990,8 +990,10 @@ locale tag-set devtype-spec ffpdev) ;; devtype may be nil if it fails to match DEVTYPE-SPEC if devtype - if (let* ((mapper (if (functionp frob-mapping) frob-mapping - (plist-get frob-mapping devtype))) + if (let* ((mapper + (cond ((functionp frob-mapping) frob-mapping) + ((plist-get frob-mapping devtype)) + (t (error 'unimplemented "mapper" devtype)))) (result (cond ;; if a vector ... diff --text -u /dev/null 'xemacs-21.5.27/lisp/font-mgr.el' Index: ./lisp/font-mgr.el --- ./lisp/font-mgr.el Thu Jan 1 09:00:00 1970 +++ ./lisp/font-mgr.el Tue Apr 25 23:01:53 2006 @@ -0,0 +1,245 @@ +;;; font-mgr.el --- Lisp emulation of fontconfig for X fonts. + +;; Copyright (C) 2006 Free Software Foundation, Inc. + +;; Author: Stephen J. Turnbull +;; Created: 12 Apr 2006 by Stephen J. Turnbull + +;; This file is part of XEmacs. + +;; XEmacs is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by the +;; Free Software Foundation; either version 2, or (at your option) any +;; later version. + +;; XEmacs is distributed in the hope that it will be useful, but WITHOUT +;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +;; for more details. + +;; You should have received a copy of the GNU General Public License +;; along with XEmacs; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;; Synched up with: Not in GNU Emacs. + +;; Commentary +;; This module provides the Lisp interface to fonts in X11, including Xft, +;; but (at least at first) not GTK+ or Qt. It is a substitute for the +;; C library fontconfig, whose interface is provided in ../src/font-mgr.c. + +;; static FcChar8 *fc_standard_properties[] = { +;; "antialias", "aspect", "autohint", "charset", "dpi", "family", "file", +;; "foundry", "ftface", "globaladvance", "hinting", "index", "lang", +;; "minspace", "outline", "pixelsize", "rasterizer", "rgba", "scalable", +;; "scale", "size", "slant", "spacing", "style", "verticallayout", "weight", +;; /* obsolete after Xft v. 1 */ +;; "charwidth", "charheight", "core", "encoding", "render" + +;; #### should we wrap the world in `(unless (featurep 'font-mgr) ... )'? + +(provide 'font-mgr) + +(defvar xft-xlfd-font-regexp + (concat + ;; XLFD specifies ISO 8859-1 encoding, but we can't handle non-ASCII + ;; in Mule when this function is called. So use HPC. + ;; (xe_xlfd_prefix "\\(\\+[\040-\176\240-\377]*\\)?-") + ;; (xe_xlfd_opt_text "\\([\040-\044\046-\176\240-\377]*\\)") + ;; (xe_xlfd_text "\\([\040-\044\046-\176\240-\377]+\\)") + "\\`" + "\\(\\+[\040-\176]*\\)?-" ; prefix + "\\([^-]+\\)" ; foundry + "-" + "\\([^-]+\\)" ; family + "-" + "\\([^-]+\\)" ; weight + "-" + "\\([0-9ior?*][iot]?\\)" ; slant + "-" + "\\([^-]+\\)" ; swidth + "-" + "\\([^-]*\\)" ; adstyle + "-" + "\\([0-9?*]+\\|\\[[ 0-9+~.e?*]+\\]\\)" ; pixelsize + "-" + "\\([0-9?*]+\\|\\[[ 0-9+~.e?*]+\\]\\)" ; pointsize + "-" + "\\([0-9?*]+\\)" ; resx + "-" + "\\([0-9?*]+\\)" ; resy + "-" + "\\([cmp?*]\\)" ; spacing + "-" + "~?" ; avgwidth + "\\([0-9?*]+\\)" + "-" + "\\([^-]+\\)" ; registry + "-" + "\\([^-]+\\)" ; encoding + "\\'") + "The regular expression used to match XLFD font names.") + +(defun fc-pattern-p (object) + "Returns t if OBJECT is of type fc-pattern, nil otherwise." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +(defun fc-pattern-create () + "Return a new, empty fc-pattern object." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +(defun fc-name-parse (fontname) + "Parse an Fc font name and return its representation as a fc pattern object." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +(defun fc-name-unparse (pattern) + "Unparse an fc pattern object to a string." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +(defun fc-pattern-duplicate (pattern) + "Make a copy of the fc pattern object PATTERN and return it." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +(defun fc-pattern-add (pattern property value) + "Add attributes to the pattern object PATTERN. PROPERTY is a string naming +the attribute to add, VALUE the value for this attribute. + +VALUE may be a string, integer, float, or symbol, in which case the value +will be added as an FcChar8[], int, double, or FcBool respectively." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +(defun fc-pattern-del (pattern property) + "Remove attribute PROPERTY from fc pattern object PATTERN." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +;; Generic interface to FcPatternGet() +;; Don't support the losing symbol-for-property interface. + +(defun fc-pattern-get (pattern property &optional id type) + "From PATTERN, extract PROPERTY for the ID'th member, of type TYPE. + +PATTERN is an Xft \(fontconfig) pattern object. +PROPERTY is a string naming an fontconfig font property. +Optional ID is a nonnegative integer indexing the list of values for PROPERTY + stored in PATTERN, defaulting to 0 (the first value). +Optional TYPE is a symbol, one of 'string, 'boolean, 'integer, 'float, + 'double, 'matrix, 'charset, or 'void, corresponding to the FcValue types. + \('float is an alias for 'double). + +The Lisp types returned will conform to TYPE: + string string + boolean `t' or `nil' + integer integer + double \(float) float + matrix not implemented + charset not implemented + void not implemented + +Symbols with names of the form \"fc-result-DESCRIPTION\" are returned when +the desired value is not available. These are + + fc-result-type-mismatch the value found has an unexpected type + fc-result-no-match there is no such attribute + fc-result-no-id there is no value for the requested ID + +The types of the following standard properties are predefined by fontconfig. +The symbol 'fc-result-type-mismatch will be returned if the object exists but +TYPE does not match the predefined type. It is best not to specify a type +for predefined properties, as a mistake here ensures error returns on the +correct type. + +Each standard property has a convenience accessor defined in fontconfig.el, +named in the form \"fc-pattern-get-PROPERTY\". The convenience functions are +preferred to `fc-pattern-get' since a typo in the string naming a property +will result in a silent null return, while a typo in a function name will +usually result in a compiler or runtime \"not fboundp\" error. You may use +`defsubst' to define convenience functions for non-standard properties. + +family String Font family name +style String Font style. Overrides weight and slant +slant Int Italic, oblique or roman +weight Int Light, medium, demibold, bold or black +size Double Point size +aspect Double Stretches glyphs horizontally before hinting +pixelsize Double Pixel size +spacing Int Proportional, monospace or charcell +foundry String Font foundry name +antialias Bool Whether glyphs can be antialiased +hinting Bool Whether the rasterizer should use hinting +verticallayout Bool Use vertical layout +autohint Bool Use autohinter instead of normal hinter +globaladvance Bool Use font global advance data +file String The filename holding the font +index Int The index of the font within the file +ftface FT_Face Use the specified FreeType face object +rasterizer String Which rasterizer is in use +outline Bool Whether the glyphs are outlines +scalable Bool Whether glyphs can be scaled +scale Double Scale factor for point->pixel conversions +dpi Double Target dots per inch +rgba Int unknown, rgb, bgr, vrgb, vbgr, none - subpixel geometry +minspace Bool Eliminate leading from line spacing +charset CharSet Unicode chars encoded by the font +lang String List of RFC-3066-style languages this font supports + +The FT_Face, Matrix, CharSet types are unimplemented, so the corresponding +properties are not accessible from Lisp at this time. If the value of a +property returned has type FT_Face, FcCharSet, or FcMatrix, +`fc-result-type-mismatch' is returned. + +The following properties which were standard in Xft v.1 are obsolete in +Xft v.2: encoding, charwidth, charheight, core, and render." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +(defun fc-font-match (device pattern) + "Return the font on DEVICE that most closely matches PATTERN. + +DEVICE is an X11 device. +PATTERN is a fontconfig pattern object. +Returns a fontconfig pattern object representing the closest match to the +given pattern, or an error code. Possible error codes are +`fc-result-no-match' and `fc-result-no-id'." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +;; #### fix this name to correspond to Ben's new nomenclature +(defun fc-list-fonts-pattern-objects (device pattern properties) + "Return a list of fonts on DEVICE that match PATTERN for PROPERTIES. +Each font is represented by a fontconfig pattern object. + +DEVICE is an X11 device. +PATTERN is a fontconfig pattern to be matched. +PROPERTIES is a list of property names (strings) that should match. + +#### DEVICE is unused, ignored, and may be removed if it's not needed to +match other font-listing APIs." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +;; #### maybe this can/should be folded into fc-list-fonts-pattern-objects? +(defun fc-font-sort (device pattern &optional trim nosub) + "Return a list of all fonts sorted by proximity to PATTERN. +Each font is represented by a fontconfig pattern object. + +DEVICE is an X11 device. +PATTERN is a fontconfig pattern to be matched. +Optional argument TRIM, if non-nil, means to trim trailing fonts that do not +contribute new characters to the union repertoire. + +#### Optional argument NOSUB, if non-nil, suppresses some of the usual +property substitutions. DON'T USE THIS in production code, it is intended +for exploring behavior of fontconfig and will be removed when this code is +stable. + +#### DEVICE is unused, ignored, and may be removed if it's not needed to +match other font-listing APIs." + (error 'unimplemented "font-mgr library is experimental and incomplete")) + +(defun xlfd-font-name-p (fontname) + "Check whether the string FONTNAME is a XLFD font name." + (save-match-data + (string-match xft-xlfd-font-regexp fontname))) + +;; FcPatternPrint: there is no point in having wrappers fc-pattern-print, +;; Ffc_pattern_print since this function prints to stdout. + +;;; end font-mgr.el diff --text -u 'xemacs-21.5.26/lisp/font.el' 'xemacs-21.5.27/lisp/font.el' Index: ./lisp/font.el --- ./lisp/font.el Mon Dec 5 18:43:37 2005 +++ ./lisp/font.el Tue Apr 25 23:01:53 2006 @@ -796,10 +796,12 @@ "A list of font family mappings on Xft devices.") (defun xft-font-create-object (fontname &optional device) - "Return a font descriptor object for FONTNAME, appropriate for Xft." + "Return a font descriptor object for FONTNAME, appropriate for Xft. + +Optional DEVICE defaults to `default-x-device'." (let* ((name fontname) (device (or device (default-x-device))) - (pattern (fc-font-real-pattern name device)) + (pattern (fc-font-match device (fc-name-parse name))) (font-obj (make-font)) (family (fc-pattern-get-family pattern 0)) (size (fc-pattern-get-size pattern 0)) diff --text -u 'xemacs-21.5.26/lisp/fontconfig.el' 'xemacs-21.5.27/lisp/fontconfig.el' Index: ./lisp/fontconfig.el --- ./lisp/fontconfig.el Sat Nov 26 20:45:54 2005 +++ ./lisp/fontconfig.el Tue Apr 25 23:01:53 2006 @@ -89,9 +89,8 @@ ;; ;; The fontconfig pattern API ;; -;; The basic interfaces are defined as API wrappers in C in xft-font.c -;; #### which should be renamed to fontconfig.c. These are prefixed -;; with "fc-pattern-". These are +;; The basic interfaces are defined as API wrappers in C in font-mgr.c. +;; These are prefixed with "fc-pattern-". These are ;; ;; fc-pattern-p ;; fc-pattern-create @@ -105,10 +104,11 @@ ;; constructor function `fc-pattern-create'. #### It might make sense ;; to generalize `make-fc-pattern' by allowing a plist of properties ;; as an optional argument. We also provide accessors -;; `fc-pattern-get-PROPERTY' and mutators `fc-pattern-add-PROPERTY' -;; for each of the standard properties used by Xft, which overlap -;; substantially with the properties defined by X11. #### We probably -;; should provide `fc-pattern-delete-PROPERTY', too. +;; `fc-pattern-get-PROPERTY' and mutators `fc-pattern-add-PROPERTY' and +;; `fc-pattern-del-PROPERTY' for each of the standard properties used by +;; Xft, which overlap substantially with the properties defined by X11. + +(require 'font-mgr) (defalias 'make-fc-pattern 'fc-pattern-create) @@ -117,10 +117,10 @@ A font property is a key in a fontconfig pattern and is associated with one or more values of a given type. This macro creates wrappers around -`fc-pattern-get' and `fc-pattern-add' for PROPERTY. Wrappers are -preferred to use of primitives with a string as the OBJECT argument because -typos in wrappers result in \"not fboundp\" errors, while a typo in a string -produces a silent null return. +`fc-pattern-get', `fc-pattern-add', and `fc-pattern-del' for PROPERTY. +\(Wrappers are preferred to use of primitives with a string as the OBJECT +argument because typos in wrappers result in \"not fboundp\" errors, while +a typo in a string produces a silent null return.) PROPERTY is a string. TYPE is a symbol indicating the type of the property value. It is used only @@ -140,7 +140,10 @@ A mutator `fc-pattern-add-PROPERTY' which takes a fontconfig pattern object and a value as arguments, and adds the value to the property with the next id. The type of the value is recognized by `fc-pattern-add', and the id -is chosen by the fontconfig implementation." +is chosen by the fontconfig implementation. + +A mutator `fc-pattern-del-PROPERTY' which takes a fontconfig pattern object, +and deletes all values of that property from the pattern." `(progn (defsubst ,(intern (concat "fc-pattern-get-" property)) @@ -179,6 +182,20 @@ "") type) (fc-pattern-add pattern ,property value)) + + (defsubst ,(intern (concat "fc-pattern-del-" property)) + (pattern) + ,(format "\ +Delete all values of the %s property of fontconfig pattern PATTERN.%s + +This function is a convenience wrapper for `fc-pattern-del'. +See `fc-pattern-del' for documentation of patterns and error returns." + property + (if obsolete-p " +\(Obsolete, only available on systems using Xft version 1.)" + "") + type) + (fc-pattern-del pattern ,property)) ,property)) ;; define the standard properties for Xft v.2 here @@ -202,67 +219,25 @@ (fc-define-property "weight" integer "the weight") (fc-define-property "xlfd" string "the XLFD (full name in X11)") -;; Xft v.1 properties (marked as obsolete) +;; Xft v.1 properties (generally marked as obsolete) +;; had different semantics from XLFD "encoding" (fc-define-property "encoding" string "the encoding" t) -(fc-define-property "charwidth" integer "the average character width" t) +;; also used by X11 XLFDs, so not obsolete +(fc-define-property "charwidth" integer "the average character width") (fc-define-property "charheight" integer "the average character height" t) (fc-define-property "core" boolean "represents a core font" t) (fc-define-property "render" boolean "represents a render (Xft) font" t) +;; X11 XLFD and other standard properties +(fc-define-property "x11-swidth" string "the 'set' width") +(fc-define-property "x11-adstyle" string "any additional style") +(fc-define-property "x11-resx" string "the horizontal design resolution") +(fc-define-property "x11-resy" string "the vertical design resolution") +;; use "charwidth" instead of "x11-avgwidth" +(fc-define-property "x11-registry" string "the encoding registry") +;; "x11-encoding" has different semantics from Xft v.1 "encoding" +(fc-define-property "x11-encoding" string "the encoding index") -(defconst fc-font-name-property-family "family") -(defconst fc-font-name-property-style "style") -(defconst fc-font-name-property-slant "slant") -(defconst fc-font-name-property-weight "weight") -(defconst fc-font-name-property-size "size") -(defconst fc-font-name-property-pixelsize "pixelsize") -(defconst fc-font-name-property-spacing "spacing") -(defconst fc-font-name-property-foundry "foundry") -(defconst fc-font-name-property-antialias "antialias") -(defconst fc-font-name-property-xlfd "xlfd") -(defconst fc-font-name-property-file "file") -(defconst fc-font-name-property-index "index") -(defconst fc-font-name-property-rasterizer "rasterizer") -(defconst fc-font-name-property-outline "outline") -(defconst fc-font-name-property-scalable "scalable") -(defconst fc-font-name-property-rgba "rgba") -(defconst fc-font-name-property-minspace "minspace") -(defconst fc-font-name-property-dpi "dpi") - -;; Xft version 1 only -;;(defconst fc-font-name-property-encoding "encoding") -;;(defconst fc-font-name-property-charwidth "charwidth") -;;(defconst fc-font-name-property-charheight "charheight") -;;(defconst fc-font-name-property-core "core") -;;(defconst fc-font-name-property-render "render") - - -(defconst fc-pattern-selector-mapping - `((,fc-font-name-property-family . fc-pattern-get-family) - (,fc-font-name-property-style . fc-pattern-get-style) - (,fc-font-name-property-slant . fc-pattern-get-slant) - (,fc-font-name-property-weight . fc-pattern-get-weight) - (,fc-font-name-property-size . fc-pattern-get-size) - (,fc-font-name-property-pixelsize . fc-pattern-get-pixelsize) - (,fc-font-name-property-spacing . fc-pattern-get-spacing) - (,fc-font-name-property-foundry . fc-pattern-get-foundry) - (,fc-font-name-property-antialias . fc-pattern-get-antialias) - (,fc-font-name-property-xlfd . fc-pattern-get-xlfd) - (,fc-font-name-property-file . fc-pattern-get-file) - (,fc-font-name-property-index . fc-pattern-get-index) - (,fc-font-name-property-rasterizer . fc-pattern-get-rasterizer) - (,fc-font-name-property-outline . fc-pattern-get-outline) - (,fc-font-name-property-scalable . fc-pattern-get-scalable) - (,fc-font-name-property-rgba . fc-pattern-get-rgba) - (,fc-font-name-property-minspace . fc-pattern-get-minspace) - (,fc-font-name-property-dpi . fc-pattern-get-dpi) - ;; Xft version 1 only - ;; (,fc-font-name-property-encoding . fc-pattern-get-encoding) - ;; (,fc-font-name-property-charwidth . fc-pattern-get-char-width) - ;; (,fc-font-name-property-charheight . fc-pattern-get-char-height) - ;; (,fc-font-name-property-core . fc-pattern-get-core) - ;; (,fc-font-name-property-render . fc-pattern-get-render) - )) (defvar fc-find-available-font-families-fc-fonts-only t "If `fc-find-available-font-families-fc-fonts-only' is set to `t', @@ -409,26 +384,71 @@ ;; ;; The fontconfig fontname UI ;; -;; The basic interfaces are defined as API wrappers in C in xft-font.c -;; #### which should be renamed to fontconfig.c. These are prefixed -;; with "fc-name-". These are +;; The basic interfaces are defined as API wrappers in C in font-mgr.c +;; These are prefixed with "fc-name-". These are ;; ;; fc-name-parse ;; fc-name-unparse -;; xft-name-unparse +;; +;; For interfacing with various font rendering systems, we need to be able +;; to convert the fontconfig patterns to names, and vice versa. The high- +;; level API is +;; +;; font-default-name-syntax +;; variable naming the default naming syntax +;; maybe this could be a list to try in order? +;; +;; font-name-to-pattern NAME &optional SYNTAX +;; returns a fontconfig pattern, or nil if the name could not be parsed +;; NAME is a string +;; SYNTAX is a name syntax symbol +;; +;; font-pattern-to-name PATTERN &optional SYNTAX +;; returns a string +;; PATTERN is a fontconfig pattern +;; SYNTAX is a name syntax symbol +;; +;; A "name syntax symbol" is a symbol for a font naming syntax. This may be +;; a rendering engine syntax or a font manager syntax. Initially, 'x and +;; 'fontconfig will be supported. Patterns may be unambiguous (one value for +;; each specified property) or ambiguous (multiple values are allowed for +;; some specified properties). `font-name-to-pattern' should be unambiguous, +;; but `font-pattern-to-name' may not be an exact conversion for some +;; syntaxes, especially for ambiguous patterns. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; The fontconfig font API ;; -;; The basic interfaces are defined as API wrappers in C in xft-font.c -;; #### which should be renamed to fontconfig.c. These are prefixed -;; with "fc-font-". These are +;; The basic interfaces are defined as API wrappers in C in font-mgr.c. +;; These are prefixed with "fc-font-". These are ;; ;; fc-font-match ;; fc-list-fonts-pattern-objects ;; fc-font-sort -;; fc-font-real-pattern +;; +;; The high-level API is +;; +;; font-list &optional PATTERN DEVICE ATTRIBUTE-LIST OPTION-LIST +;; returns a list of patterns matching pattern +;; PATTERN is an ambiguous pattern, defaulting to the empty pattern +;; DEVICE is the display device to query (default: selected device) +;; ATTRIBUTE-LIST is a list of font attributes to restrict the patterns +;; in the returned list to; other attributes will not be present in +;; the patterns, and duplicates will be removed after pruning unwanted +;; attributes; ATTRIBUTE-LIST has no necessary relation to the active +;; attributes in PATTERN, both subset and superset make sense; if nil, +;; the active attributes in PATTERN is used +;; OPTION-LIST is a list of presentation options, such as sort order +;; and refresh-cache (if any). +;; +;; font-match PATTERN &optional DEVICE +;; returns a pattern representing the platform match for PATTERN, +;; which should unambiguously select the same font +;; PATTERN is an ambiguous pattern +;; DEVICE is the display device to query (default: selected device) +;; +;; Maybe these APIs should get an error-behavior argument? ;; #### it might make sense to generalize `fc-try-font' by having a ;; global variable that contains a list of font name parsers. They are @@ -446,15 +466,17 @@ (fc-name-parse font)) nil)) +;; for example, we'd like these next two to be implementable as +;; (font-list (fc-create-pattern) device '("family" "style")) and +;; (font-list (let ((p (fc-create-pattern))) (fc-pattern-add "family" family)) +;; device +;; '("weight")) + (defun fc-find-available-font-families (&optional device filter-fun) "Find all available font families." (let ((device (or device (default-x-device))) (pattern (make-fc-pattern)) (objectset '("family" "style"))) -; Xft2: does not work anymore -; (if (not fc-find-available-font-families-fc-fonts-only) -; (fc-pattern-add pattern fc-font-name-property-core t)) -; (fc-objectset-add objectset fc-font-name-property-encoding) (let* ((all-fonts (fc-list-fonts-pattern-objects device pattern objectset))) (fc-delete-duplicates @@ -465,24 +487,14 @@ (fc-filter all-fonts filter-fun) all-fonts)))))) -; Xft2: does not work anymore -; (defun fc-find-available-font-families-non-mule (&optional device) -; (fc-find-available-font-families -; device -; '(lambda (pattern) -; (let ((encodings (fc-pattern-get-all-attributes -; pattern 'fc-pattern-get-encoding))) -; ;; Be sure that the font support ISO-8859-1 -; (member "iso8859-1" encodings))))) - (defun fc-find-available-weights-for-family (family &optional style device) "Find available weights for font FAMILY." (let* ((device (or device (default-x-device))) (pattern (make-fc-pattern)) (objectset '("weight"))) - (fc-pattern-add pattern fc-font-name-property-family family) + (fc-pattern-add-family pattern family) (if style - (fc-pattern-add pattern fc-font-name-property-style style)) + (fc-pattern-add-style pattern style)) (mapcar '(lambda (pattern) (let ((fc-weight-constant (fc-pattern-get-weight pattern 0))) diff --text -u 'xemacs-21.5.26/lisp/help.el' 'xemacs-21.5.27/lisp/help.el' Index: ./lisp/help.el --- ./lisp/help.el Wed Nov 16 21:13:02 2005 +++ ./lisp/help.el Sun Apr 30 01:15:26 2006 @@ -1,4 +1,4 @@ -;;; help.el --- help commands for XEmacs. +;; help.el --- help commands for XEmacs. ;; Copyright (C) 1985, 1986, 1992-4, 1997 Free Software Foundation, Inc. ;; Copyright (C) 2001, 2002, 2003 Ben Wing. @@ -41,6 +41,8 @@ ;; or run interpreted, but not when the compiled code is loaded. (eval-when-compile (require 'help-macro)) +(require 'loadhist) ;; For symbol-file. + (defgroup help nil "Support for on-line help systems." :group 'emacs) @@ -153,6 +155,8 @@ (define-key help-mode-map "c" 'customize-variable) (define-key help-mode-map [tab] 'help-next-symbol) (define-key help-mode-map [(shift tab)] 'help-prev-symbol) +(define-key help-mode-map [return] 'help-find-source-or-scroll-up) +(define-key help-mode-map [button2] 'help-mouse-find-source-or-track) (define-key help-mode-map "n" 'help-next-section) (define-key help-mode-map "p" 'help-prev-section) @@ -1091,14 +1095,14 @@ :type 'boolean :group 'help-appearance) -(defun describe-symbol-find-file (symbol) - (loop for (file . load-data) in load-history - do (when (memq symbol load-data) - (return file)))) +(define-obsolete-function-alias + ;; Moved to using the version in loadhist.el + 'describe-function-find-symbol + 'symbol-file) (define-obsolete-function-alias 'describe-function-find-file - 'describe-symbol-find-file) + 'symbol-file) (defun describe-function (function) "Display the full documentation of FUNCTION (a symbol). @@ -1340,6 +1344,7 @@ (when (or var fun) (let ((ex (make-extent b e))) (require 'hyper-apropos) + (set-extent-property ex 'mouse-face 'highlight) (set-extent-property ex 'help-symbol sym) (set-extent-property ex 'face 'hyper-apropos-hyperlink) @@ -1421,10 +1426,21 @@ (if autoload-file (princ (format " -- autoloads from \"%s\"\n" autoload-file))) (or file-name - (setq file-name (describe-symbol-find-file function))) - (if file-name - (princ (format " -- loaded from \"%s\"\n" file-name))) -;; (terpri) + (setq file-name (symbol-file function))) + (when file-name + (princ " -- loaded from \"") + (if (not (bufferp standard-output)) + (princ file-name) + (let ((opoint (point standard-output)) + e) + (require 'hyper-apropos) + (princ file-name) + (setq e (make-extent opoint (point standard-output) + standard-output)) + (set-extent-property e 'face 'hyper-apropos-hyperlink) + (set-extent-property e 'mouse-face 'highlight) + (set-extent-property e 'find-function-symbol function))) + (princ "\"\n")) (if describe-function-show-arglist (let ((arglist (function-arglist function))) (when arglist @@ -1469,7 +1485,6 @@ (eq ?\n (aref doc (1- (length doc))))) (terpri))))))))) - ;;; [Obnoxious, whining people who complain very LOUDLY on Usenet ;;; are binding this to keys.] (defun describe-function-arglist (function) @@ -1590,11 +1605,22 @@ (princ (format "%s" aliases))) (princ (built-in-variable-doc variable)) (princ ".\n") - (let ((file-name (describe-symbol-find-file variable))) - (if file-name - (princ (format " -- loaded from \"%s\"\n" file-name)))) - (princ "\nValue: ") (require 'hyper-apropos) + (let ((file-name (symbol-file variable)) + opoint e) + (when file-name + (princ " -- loaded from \"") + (if (not (bufferp standard-output)) + (princ file-name) + (setq opoint (point standard-output)) + (princ file-name) + (setq e (make-extent opoint (point standard-output) + standard-output)) + (set-extent-property e 'face 'hyper-apropos-hyperlink) + (set-extent-property e 'mouse-face 'highlight) + (set-extent-property e 'find-variable-symbol variable)) + (princ"\"\n"))) + (princ "\nValue: ") (if (not (boundp variable)) (Help-princ-face "void\n" 'hyper-apropos-documentation) (Help-prin1-face (symbol-value variable) @@ -1778,5 +1804,29 @@ (if (stringp string) (with-displaying-help-buffer (insert string))))) + +(defun help-find-source-or-scroll-up (&optional pos) + "Follow any cross reference to source code; if none, scroll up. " + (interactive "d") + (let ((e (extent-at pos nil 'find-function-symbol))) + (if e + (find-function (extent-property e 'find-function-symbol)) + (setq e (extent-at pos nil 'find-variable-symbol)) + (if e + (find-variable (extent-property e 'find-variable-symbol)) + (view-scroll-lines-up 1))))) + +(defun help-mouse-find-source-or-track (event) + "Follow any cross reference to source code under the mouse; +if none, call mouse-track. " + (interactive "e") + (mouse-set-point event) + (let ((e (extent-at (point) nil 'find-function-symbol))) + (if e + (find-function (extent-property e 'find-function-symbol)) + (setq e (extent-at (point) nil 'find-variable-symbol)) + (if e + (find-variable (extent-property e 'find-variable-symbol)) + (mouse-track event))))) ;;; help.el ends here diff --text -u 'xemacs-21.5.26/lisp/loadhist.el' 'xemacs-21.5.27/lisp/loadhist.el' Index: ./lisp/loadhist.el --- ./lisp/loadhist.el Mon Nov 18 15:52:28 2002 +++ ./lisp/loadhist.el Sun Apr 30 01:15:26 2006 @@ -41,9 +41,15 @@ "Return the input source from which SYM was loaded. This is a file name, or nil if the source was a buffer with no associated file." (interactive "SFind source file for symbol: ") ; XEmacs - (dolist (entry load-history) - (when (memq sym (cdr entry)) - (return (car entry))))) + (block look-up-symbol-file + (dolist (entry load-history) + (when (memq sym (cdr entry)) + (return-from look-up-symbol-file (car entry)))) + (when (or (and (boundp sym) (built-in-variable-type sym)) + (and (fboundp sym) (subrp (symbol-function sym)))) + (let ((built-in-file (built-in-symbol-file sym))) + (if built-in-file + (concat build-root "/src/" built-in-file)))))) (defun feature-symbols (feature) "Return the file and list of symbols associated with a given FEATURE." diff --text -u 'xemacs-21.5.26/lisp/mule/ethio-util.el' 'xemacs-21.5.27/lisp/mule/ethio-util.el' Index: ./lisp/mule/ethio-util.el --- ./lisp/mule/ethio-util.el Mon Jun 7 08:58:46 2004 +++ ./lisp/mule/ethio-util.el Sun Apr 30 03:55:32 2006 @@ -1778,7 +1778,7 @@ (defun ethio-fidel-to-java-buffer nil "Convert Ethiopic characters into the Java escape sequences. -Each escape sequence is of the form \uXXXX, where XXXX is the +Each escape sequence is of the form \\uXXXX, where XXXX is the character's codepoint (in hex) in Unicode. If `ethio-java-save-lowercase' is non-nil, use [0-9a-f]. diff --text -u 'xemacs-21.5.26/lisp/simple.el' 'xemacs-21.5.27/lisp/simple.el' Index: ./lisp/simple.el --- ./lisp/simple.el Sun Nov 13 19:51:18 2005 +++ ./lisp/simple.el Wed Apr 26 04:46:24 2006 @@ -899,10 +899,14 @@ ;; next-complete-history-element ;; previous-complete-history-element -(defun goto-line (line) - "Goto line LINE, counting from line 1 at beginning of buffer." +(defun goto-line (line &optional buffer) + "Goto line LINE, counting from line 1 at beginning of BUFFER." (interactive "NGoto line: ") (setq line (prefix-numeric-value line)) + (if buffer + (let ((window (get-buffer-window buffer))) + (if window (select-window window) + (switch-to-buffer-other-window buffer)))) (save-restriction (widen) (goto-char 1) @@ -1964,11 +1968,10 @@ :type 'boolean :group 'editing-basics) -;;; After 8 years of waiting ... -sb -(defcustom next-line-add-newlines nil ; XEmacs +(defcustom next-line-add-newlines nil "*If non-nil, `next-line' inserts newline when the point is at end of buffer. -This behavior used to be the default, and is still default in FSF Emacs. -We think it is an unnecessary and unwanted side-effect." +This behavior used to be the default, but is now considered an unnecessary and +unwanted side-effect." :type 'boolean :group 'editing-basics) diff --text -u 'xemacs-21.5.26/lisp/startup.el' 'xemacs-21.5.27/lisp/startup.el' Index: ./lisp/startup.el --- ./lisp/startup.el Fri May 6 01:55:41 2005 +++ ./lisp/startup.el Tue Apr 25 23:01:53 2006 @@ -174,7 +174,7 @@ (defvar load-user-init-file-p t "Non-nil if XEmacs should load the user's init file.") -;; #### called `site-run-file' in FSFmacs +;; #### called `site-run-file' in GNU Emacs (defvar site-start-file "site-start" "File containing site-wide run-time initializations. @@ -285,6 +285,11 @@ -t is given. Otherwise, a TTY frame is created. -unmapped Do not display the initial frame. Useful to create a \"server\" that can accept `gnuclient' connections. + -tty Create the initial frame on the given window system. + -x (Requesting an unsupported window system, or giving + -gtk conflicting window systems, is a fatal error.) + -gnome + -msw Noninteractive options: @@ -569,7 +574,7 @@ ;; ;; Modify the initial frame based on what the init file puts into ;; ;; ...-frame-alist. (frame-notice-user-settings) - ;; ;;####FSFmacs junk + ;; ;;#### GNU Emacs junk ;; ;; Now we know the user's default font, so add it to the menu. ;; (if (fboundp 'font-menu-add-default) ;; (font-menu-add-default)) @@ -583,7 +588,7 @@ (if load-user-init-file-p (maybe-migrate-user-init-file)) - ;; FSF calls precompute-menubar-bindings. We don't mix menubars + ;; GNU calls precompute-menubar-bindings. We don't mix menubars ;; and keymaps. )) @@ -606,7 +611,7 @@ (string= vc "simple")) (setq version-control 'never)))) - ;;####FSFmacs + ;;#### GNU Emacs ;; (if (let ((ctype ;; ;; Use the first of these three envvars that has a nonempty value. ;; (or (let ((string (getenv "LC_ALL"))) diff --text -u 'xemacs-21.5.26/lisp/x-faces.el' 'xemacs-21.5.27/lisp/x-faces.el' Index: ./lisp/x-faces.el --- ./lisp/x-faces.el Mon Dec 5 18:43:37 2005 +++ ./lisp/x-faces.el Tue Apr 25 23:01:54 2006 @@ -1,6 +1,6 @@ ;;; x-faces.el --- X-specific face frobnication, aka black magic. -;; Copyright (C) 1992-4, 1997 Free Software Foundation, Inc. +;; Copyright (C) 1992-1994, 1997, 2006 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 2002, 2004 Ben Wing. ;; Author: Jamie Zawinski @@ -66,7 +66,19 @@ '(x-get-resource-and-maybe-bogosity-check x-get-resource x-init-pointer-shape)) -(require 'fontconfig) +(if (featurep 'xft-fonts) + (require 'fontconfig) + (globally-declare-boundp + '(fc-font-name-weight-bold fc-font-name-weight-black + fc-font-name-weight-demibold fc-font-name-weight-medium + fc-font-name-slant-oblique fc-font-name-slant-italic + fc-font-name-slant-roman)) + (globally-declare-fboundp + '(fc-pattern-del-size fc-pattern-get-size fc-pattern-add-size + fc-pattern-del-style fc-pattern-duplicate fc-copy-pattern-partial + fc-pattern-add-weight fc-pattern-del-weight fc-try-font + fc-pattern-del-slant fc-pattern-add-slant fc-name-unparse + fc-pattern-get-pixelsize))) (defconst x-font-regexp nil) (defconst x-font-regexp-head nil) @@ -182,36 +194,32 @@ (x-make-font-bold-core font device))) (defun x-make-font-bold-xft (font &optional device) - (let ((pattern (fc-font-real-pattern - font (or device (default-x-device))))) + (let ((pattern (fc-font-match (or device (default-x-device)) + (fc-name-parse font)))) (if pattern (let ((size (fc-pattern-get-size pattern 0)) - (copy (fc-copy-pattern-partial - pattern (list fc-font-name-property-family)))) - (fc-pattern-del copy fc-font-name-property-weight) - (fc-pattern-del copy fc-font-name-property-style) + (copy (fc-copy-pattern-partial pattern (list "family")))) + (fc-pattern-del-weight copy) + (fc-pattern-del-style copy) (when copy (or ;; try bold font (let ((copy-2 (fc-pattern-duplicate copy))) - (fc-pattern-add copy-2 fc-font-name-property-weight - fc-font-name-weight-bold) + (fc-pattern-add-weight copy-2 fc-font-name-weight-bold) (when (fc-try-font copy-2 device) - (fc-pattern-add copy-2 fc-font-name-property-size size) + (fc-pattern-add-size copy-2 size) (fc-name-unparse copy-2))) ;; try black font (let ((copy-2 (fc-pattern-duplicate copy))) - (fc-pattern-add copy-2 fc-font-name-property-weight - fc-font-name-weight-black) + (fc-pattern-add-weight copy-2 fc-font-name-weight-black) (when (fc-try-font copy-2 device) - (fc-pattern-add copy-2 fc-font-name-property-size size) + (fc-pattern-add-size copy-2 size) (fc-name-unparse copy-2))) ;; try demibold font (let ((copy-2 (fc-pattern-duplicate copy))) - (fc-pattern-add copy-2 fc-font-name-property-weight - fc-font-name-weight-demibold) + (fc-pattern-add-weight copy-2 fc-font-name-weight-demibold) (when (fc-try-font copy-2 device) - (fc-pattern-add copy-2 fc-font-name-property-size size) + (fc-pattern-add-size copy-2 size) (fc-name-unparse copy-2))))))))) (defun x-make-font-bold-core (font &optional device) @@ -230,12 +238,11 @@ (x-make-font-unbold-core font device))) (defun x-make-font-unbold-xft (font &optional device) - (let ((pattern (fc-font-real-pattern - font (or device (default-x-device))))) + (let ((pattern (fc-font-match (or device (default-x-device)) + (fc-name-parse font)))) (when pattern - (fc-pattern-del pattern fc-font-name-property-weight) - (fc-pattern-add pattern fc-font-name-property-weight - fc-font-name-weight-medium) + (fc-pattern-del-weight pattern) + (fc-pattern-add-weight pattern fc-font-name-weight-medium) (if (fc-try-font pattern device) (fc-name-unparse pattern))))) @@ -261,43 +268,41 @@ (x-make-font-italic-core font device))) (defun x-make-font-italic-xft (font &optional device) - (let ((pattern (fc-font-real-pattern - font (or device (default-x-device))))) + (let ((pattern (fc-font-match (or device (default-x-device)) + (fc-name-parse font)))) (if pattern (let ((size (fc-pattern-get-size pattern 0)) - (copy (fc-copy-pattern-partial - pattern (list fc-font-name-property-family)))) + (copy (fc-copy-pattern-partial pattern (list "family")))) (when copy - (fc-pattern-del copy fc-font-name-property-slant) - (fc-pattern-del copy fc-font-name-property-style) + (fc-pattern-del-slant copy) + (fc-pattern-del-style copy) + ;; #### can't we do this with one ambiguous pattern? (let ((pattern-oblique (fc-pattern-duplicate copy)) (pattern-italic (fc-pattern-duplicate copy))) - (fc-pattern-add pattern-oblique fc-font-name-property-slant - fc-font-name-slant-oblique) - (fc-pattern-add pattern-italic fc-font-name-property-slant - fc-font-name-slant-italic) + (fc-pattern-add-slant pattern-oblique fc-font-name-slant-oblique) + (fc-pattern-add-slant pattern-italic fc-font-name-slant-italic) (let ((have-oblique (fc-try-font pattern-oblique device)) (have-italic (fc-try-font pattern-italic device))) (if try-oblique-before-italic-fonts (if have-oblique (progn (if size - (fc-pattern-add pattern-oblique fc-font-name-property-size size)) + (fc-pattern-add-size pattern-oblique size)) (fc-name-unparse pattern-oblique)) (if have-italic (progn (if size - (fc-pattern-add pattern-italic fc-font-name-property-size size)) + (fc-pattern-add-size pattern-italic size)) (fc-name-unparse pattern-italic)))) (if have-italic (progn (if size - (fc-pattern-add pattern-italic fc-font-name-property-size size)) + (fc-pattern-add-size pattern-italic size)) (fc-name-unparse pattern-italic)) (if have-oblique (progn (if size - (fc-pattern-add pattern-oblique fc-font-name-property-size size)) + (fc-pattern-add-size pattern-oblique size)) (fc-name-unparse pattern-oblique)))))))))))) (defun x-make-font-italic-core (font &optional device) @@ -317,12 +322,11 @@ (x-make-font-unitalic-core font device))) (defun x-make-font-unitalic-xft (font &optional device) - (let ((pattern (fc-font-real-pattern - font (or device (default-x-device))))) + (let ((pattern (fc-font-match (or device (default-x-device)) + (fc-name-parse font)))) (when pattern - (fc-pattern-del pattern fc-font-name-property-slant) - (fc-pattern-add pattern fc-font-name-property-slant - fc-font-name-slant-roman) + (fc-pattern-del-slant pattern) + (fc-pattern-add-slant pattern fc-font-name-slant-roman) (if (fc-try-font pattern device) (fc-name-unparse pattern))))) @@ -385,11 +389,11 @@ ;; this is unbelievable &*@# (defun x-font-size-xft (font) - (let ((pattern (fc-font-real-pattern - font (default-x-device)))) + (let ((pattern (fc-font-match (default-x-device) + (fc-name-parse font)))) (when pattern (let ((pixelsize (fc-pattern-get-pixelsize pattern 0))) - (if (floatp pixelsize) (round pixelsize)))))) + (if (floatp pixelsize) (round pixelsize) pixelsize))))) (defun x-font-size-core (font) (if (font-instance-p font) (setq font (font-instance-name font))) @@ -517,15 +521,14 @@ (x-find-smaller-font-core font device))) (defun x-find-xft-font-of-size (font new-size-proc &optional device) - (let* ((pattern (fc-font-real-pattern - font (or device (default-x-device))))) + (let* ((pattern (fc-font-match (or device (default-x-device)) + (fc-name-parse font)))) (when pattern (let ((size (fc-pattern-get-size pattern 0))) (if (floatp size) (let ((copy (fc-pattern-duplicate pattern))) - (fc-pattern-del copy fc-font-name-property-size) - (fc-pattern-add copy fc-font-name-property-size - (funcall new-size-proc size)) + (fc-pattern-del-size copy) + (fc-pattern-add-size copy (funcall new-size-proc size)) (if (fc-try-font font device) (fc-name-unparse copy)))))))) diff --text -u 'xemacs-21.5.26/lisp/x-font-menu.el' 'xemacs-21.5.27/lisp/x-font-menu.el' Index: ./lisp/x-font-menu.el --- ./lisp/x-font-menu.el Sat Nov 26 20:45:55 2005 +++ ./lisp/x-font-menu.el Thu May 11 23:57:05 2006 @@ -35,7 +35,6 @@ (require 'font-menu) (when (featurep 'xft-fonts) - (require 'xft) (require 'fontconfig)) (globally-declare-boundp @@ -271,11 +270,12 @@ ;; #### this call to x-font-menu-font-data-core originally ;; had 4 args, and that's probably the right way to go (x-font-menu-font-data-core face dcache) - (x-font-menu-font-data-xft face dcache name domain)) + (x-font-menu-font-data-xft face dcache name (selected-device))) ;; #### this one, too (x-font-menu-font-data-core face dcache)))) (defun x-font-menu-font-data-xft (face dcache name domain) + ;; DOMAIN is expected to be a device. (let* ((truename (font-instance-truename (face-font-instance face domain (if (featurep 'mule) 'ascii)))) @@ -284,7 +284,7 @@ (progn nil) (progn - (let* ((pattern (fc-font-real-pattern name domain)) + (let* ((pattern (fc-font-match domain (fc-name-parse name))) (family (and pattern (fc-pattern-get-family pattern 0)))) (if (fc-pattern-get-successp family) @@ -346,15 +346,15 @@ (defun x-font-menu-load-font-xft (family weight size slant resolution) (let ((pattern (make-fc-pattern))) - (fc-pattern-add pattern fc-font-name-property-family family) + (fc-pattern-add-family pattern family) (if weight - (fc-pattern-add pattern fc-font-name-property-weight - (fc-font-weight-translate-from-string weight))) + (fc-pattern-add-weight pattern + (fc-font-weight-translate-from-string weight))) (if size - (fc-pattern-add pattern fc-font-name-property-size size)) + (fc-pattern-add-size pattern size)) (if slant - (fc-pattern-add pattern fc-font-name-property-slant - (fc-font-slant-translate-from-string slant))) + (fc-pattern-add-slant pattern + (fc-font-slant-translate-from-string slant))) (make-font-instance (fc-name-unparse pattern)))) (defun x-font-menu-load-font-core (family weight size slant resolution) diff --text -u 'xemacs-21.5.26/lisp/x-init.el' 'xemacs-21.5.27/lisp/x-init.el' Index: ./lisp/x-init.el --- ./lisp/x-init.el Mon Jun 27 03:04:50 2005 +++ ./lisp/x-init.el Tue Apr 25 23:01:54 2006 @@ -271,7 +271,7 @@ (fill-paragraph nil)))))) -;; Moved from x-toolbar.el, since InfoDock doesn't dump a x-toolbar.el. +;; Moved from x-toolbar.el, since InfoDock doesn't dump x-toolbar.el. (defun x-init-toolbar-from-resources (locale) (loop for (specifier . resname) in `(( ,top-toolbar-height . "topToolBarHeight") diff --text -u 'xemacs-21.5.26/lwlib/ChangeLog' 'xemacs-21.5.27/lwlib/ChangeLog' Index: ./lwlib/ChangeLog --- ./lwlib/ChangeLog Sat Apr 1 03:46:15 2006 +++ ./lwlib/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,42 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + +2006-05-12 Stephen J. Turnbull + + Make fcFontName and xftFont separate resources. + + * lwlib-fonts.h (XtNfcFontName, XtCFcFontName): New macros. + (XtNxftFont, XtCXftFont): Coalesce the conditional definitions. + + * xlwmenuP.h (XlwMenuPart): + * xlwtabsP.h (TabsPart): + Rename renderFontSpec member to fcFontName. + + * xlwmenu.c (XlwMenuResources): + * xlwtabs.c (resources): + Add a record for fcFontName. + + * xlwtabs.c (TabsInit): Use the fcFontName resource, not xftFont. + + * xlwtabs.c (DrawTab,TabLayout,TabsGeometryManager): Improve + diagnostics. + +2006-04-24 Jerry James + + * lwlib-Xaw.c (lw_debug_print_class_resources): Casting from a + pointer to an int throws away half of the bits on an x86_64 + platform. Print as a pointer instead. + * xlwgauge.c (XawGaugeSetValue): Use NULL instead of 0 as the + sentinel to quiet gcc warnings. + * xlwmenu.c: Cast to FcChar8 * as necessary to quiet warnings. + * xlwtabs.c: Ditto. + +2006-04-16 Stephen J. Turnbull + + * lwlib-fonts.c: Change #include to "font-mgr.h". Make + conditional on HAVE_FONTCONFIG, not USE_XFT. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/lwlib/lwlib-Xaw.c' 'xemacs-21.5.27/lwlib/lwlib-Xaw.c' Index: ./lwlib/lwlib-Xaw.c --- ./lwlib/lwlib-Xaw.c Sat Nov 26 20:45:59 2005 +++ ./lwlib/lwlib-Xaw.c Wed May 3 00:30:32 2006 @@ -847,8 +847,8 @@ if (!strcmp (rl[i].resource_class, "International")) { fprintf (stderr, " Class has an International resource.\n"); - fprintf (stderr, " International resource is %d.\n", - (int) rl[i].default_addr); + fprintf (stderr, " International resource is %p.\n", + rl[i].default_addr); } } class_ = class_->core_class.superclass; diff --text -u 'xemacs-21.5.26/lwlib/lwlib-fonts.c' 'xemacs-21.5.27/lwlib/lwlib-fonts.c' Index: ./lwlib/lwlib-fonts.c --- ./lwlib/lwlib-fonts.c Sat Nov 26 20:45:59 2005 +++ ./lwlib/lwlib-fonts.c Tue Apr 25 23:02:04 2006 @@ -36,7 +36,9 @@ #include "device.h" #include "device-impl.h" #include "console-x-impl.h" -#include "xft-fonts.h" +#ifdef HAVE_FONTCONFIG +#include "font-mgr.h" +#endif #endif /* diff --text -u 'xemacs-21.5.26/lwlib/lwlib-fonts.h' 'xemacs-21.5.27/lwlib/lwlib-fonts.h' Index: ./lwlib/lwlib-fonts.h --- ./lwlib/lwlib-fonts.h Sat Nov 26 20:45:59 2005 +++ ./lwlib/lwlib-fonts.h Sat May 13 04:25:29 2006 @@ -48,9 +48,11 @@ #ifdef USE_XFT #ifndef XtNxftFont #define XtNxftFont "xftFont" -#endif -#ifndef XtCXftFont #define XtCXftFont "XftFont" +#endif +#ifndef XtNfcFont +#define XtNfcFontName "fcFontName" +#define XtCFcFontName "FcFontName" #endif #endif /* USE_XFT */ diff --text -u 'xemacs-21.5.26/lwlib/xlwgauge.c' 'xemacs-21.5.27/lwlib/xlwgauge.c' Index: ./lwlib/xlwgauge.c --- ./lwlib/xlwgauge.c Fri Nov 11 00:47:33 2005 +++ ./lwlib/xlwgauge.c Wed May 3 00:30:32 2006 @@ -838,7 +838,7 @@ if(( gw->gauge.autoScaleUp && (int) value > gw->gauge.v1) || (gw->gauge.autoScaleDown && (int) value < gw->gauge.v1/3 )) { - XtVaSetValues(w, XtNvalue, value, 0) ; + XtVaSetValues(w, XtNvalue, value, NULL) ; return ; } diff --text -u 'xemacs-21.5.26/lwlib/xlwmenu.c' 'xemacs-21.5.27/lwlib/xlwmenu.c' Index: ./lwlib/xlwmenu.c --- ./lwlib/xlwmenu.c Thu Dec 22 22:58:16 2005 +++ ./lwlib/xlwmenu.c Sat May 13 04:25:29 2006 @@ -93,9 +93,13 @@ {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *), offset(menu.font), XtRString, (XtPointer) "XtDefaultFont"}, #ifdef USE_XFT_MENUBARS - {XtNxftFont, XtCXftFont, XtRString, sizeof (String), - offset(menu.renderFontSpec), + {XtNfcFontName, XtCFcFontName, XtRString, sizeof (String), + offset(menu.fcFontName), XtRString, (XtPointer) "Helvetica-12:bold"}, + /* #### This needs to be fixed to give a proper type and converter for + XftFonts. See also xlwtabs.c. */ + {XtNxftFont, XtCXftFont, XtRPointer, sizeof(XtPointer), + offset(menu.renderFont), XtRPointer, (XtPointer) NULL }, #endif # ifdef USE_XFONTSET /* #### Consider using the same method as for Motif; see the comment in @@ -333,8 +337,8 @@ # else #ifdef USE_XFT_MENUBARS XGlyphInfo glyphinfo; - XftTextExtents8 (XtDisplay (mw), mw->menu.renderFont, s, strlen (s), - &glyphinfo); + XftTextExtents8 (XtDisplay (mw), mw->menu.renderFont, (FcChar8 *) s, + strlen (s), &glyphinfo); return glyphinfo.xOff; #else XCharStruct xcs; @@ -424,8 +428,8 @@ return rl.width; # else /* ! USE_XFONTSET */ #ifdef USE_XFT_MENUBARS - XftTextExtents8 (XtDisplay (mw), mw->menu.renderFont, newchars, j, - &glyphinfo); + XftTextExtents8 (XtDisplay (mw), mw->menu.renderFont, (FcChar8 *) newchars, + j, &glyphinfo); return glyphinfo.xOff; #else XTextExtents (mw->menu.font, newchars, j, &drop, &drop, &drop, &xcs); @@ -756,7 +760,7 @@ XftTextExtents8 (dpy, xft_font, - run, len, &glyphinfo); + (FcChar8 *) run, len, &glyphinfo); return glyphinfo.xOff; } #endif @@ -801,8 +805,8 @@ x_xft_text_width (display, renderFont, string, strlen (string)), renderFont->ascent + renderFont->descent); /* XXX */ /* draw text */ - XftDrawString8 (xftDraw, color, renderFont, - x, y + mw->menu.font_ascent, string, strlen (string)); + XftDrawString8 (xftDraw, color, renderFont, x, y + mw->menu.font_ascent, + (FcChar8 *) string, strlen (string)); XftDrawDestroy (xftDraw); # else # ifdef USE_XFONTSET @@ -890,10 +894,10 @@ /* draw text */ XftDrawString8 (xftDraw, color, renderFont, x, y + mw->menu.font_ascent, - &string[start], end - start); + (FcChar8 *) &string[start], end - start); - XftTextExtents8 (display, renderFont, &string[start], end - start, - &glyphinfo); + XftTextExtents8 (display, renderFont, (FcChar8 *) &string[start], + end - start, &glyphinfo); /* #### should use parent frame's .xftDraw */ XftDrawDestroy (xftDraw); @@ -3241,7 +3245,7 @@ conversion function */ mw->menu.renderFont = - xft_open_font_by_name (XtDisplay (mw), mw->menu.renderFontSpec); + xft_open_font_by_name (XtDisplay (mw), mw->menu.fcFontName); #endif make_drawing_gcs (mw); diff --text -u 'xemacs-21.5.26/lwlib/xlwmenuP.h' 'xemacs-21.5.27/lwlib/xlwmenuP.h' Index: ./lwlib/xlwmenuP.h --- ./lwlib/xlwmenuP.h Sat Nov 26 20:46:00 2005 +++ ./lwlib/xlwmenuP.h Sat May 13 04:25:29 2006 @@ -34,8 +34,7 @@ #else XFontStruct * font; #ifdef USE_XFT_MENUBARS - /* #### Fix naming convention here */ - String renderFontSpec; + String fcFontName; XftFont *renderFont; #endif # ifdef USE_XFONTSET diff --text -u 'xemacs-21.5.26/lwlib/xlwtabs.c' 'xemacs-21.5.27/lwlib/xlwtabs.c' Index: ./lwlib/xlwtabs.c --- ./lwlib/xlwtabs.c Sat Nov 26 20:46:00 2005 +++ ./lwlib/xlwtabs.c Sat May 13 04:25:29 2006 @@ -150,10 +150,14 @@ {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *), offset(font), XtRString, (XtPointer) XtDefaultFont}, #ifdef USE_XFT_TABS - /* #### Maybe use "-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-1" here? */ - {XtNxftFont, XtCXftFont, XtRString, sizeof (String), - offset(renderFontSpec), XtRString, - (XtPointer) "AirCut-16" /* XtDefaultFont */}, + /* #### Maybe use "-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-1" here? + or XtDefaultFont? */ + {XtNfcFontName, XtCFcFontName, XtRString, sizeof(String), + offset(fcFontName), XtRString, (XtPointer) "AirCut-16" }, + /* #### This needs to be fixed to give a proper type and converter for + XftFonts. See also xlwmenu.c. */ + {XtNxftFont, XtCXftFont, XtRPointer, sizeof(XtPointer), + offset(renderFont), XtRPointer, (XtPointer) NULL }, #endif {XtNinternalWidth, XtCWidth, XtRDimension, sizeof(Dimension), offset(internalWidth), XtRImmediate, (XtPointer)4 }, @@ -481,7 +485,7 @@ */ newTw->tabs.renderFont = xft_open_font_by_name (XtDisplay ((Widget) newTw), - newTw->tabs.renderFontSpec); + newTw->tabs.fcFontName); if (newTw->tabs.renderFont != NULL) #if XFT_USE_HEIGHT_NOT_ASCENT_DESCENT newTw->tabs.tab_height += newTw->tabs.renderFont->height; @@ -1089,7 +1093,7 @@ get triggered forever after */ int n = control->composite.num_children; ah = control->tabs.tab_height; - if (debug_tabs > 0) + if (debug_tabs > 1) fprintf (stderr, "Kludging around %d != 1 rows," " #children = %d, total height %d, using %d.\n", check_nrows, n, th, ah); @@ -1616,7 +1620,7 @@ GC gc ; int x,y ; - if (debug_tabs > 1) fprintf (stderr, "DrawTab called.\n"); + if (debug_tabs > 2) fprintf (stderr, "DrawTab called.\n"); if( !XtIsRealized((Widget)tw)) return ; @@ -1708,11 +1712,10 @@ XGlyphInfo glyphinfo; XftColor colorDBG; XftColorAllocName (dpy, visual, cmap, "wheat", &colorDBG); - XftTextExtents8 (dpy, renderFont, lbl, (int) strlen (lbl), - &glyphinfo); + XftTextExtents8 (dpy, renderFont, (FcChar8 *) lbl, + (int) strlen (lbl), &glyphinfo); /* #### unnecessary? for the moment, give visual extent */ /* draw background rect */ -#if 1 if (debug_tabs > 2) { fprintf (stderr, "background color: pixel=%08lx, r=%04x," @@ -1725,19 +1728,16 @@ glyphinfo.x, glyphinfo.y, glyphinfo.xOff, glyphinfo.yOff, glyphinfo.width, glyphinfo.height); } - XftDrawRect (xftDraw, &colorDBG, - /* left, top, width, height */ - x+tab->tabs.l_x-glyphinfo.x, - y+tab->tabs.l_y-glyphinfo.y, - glyphinfo.width, glyphinfo.height); -#endif - /* draw text */ if (debug_tabs > 2) + XftDrawRect (xftDraw, &colorDBG, + /* left, top, width, height */ + x+tab->tabs.l_x-glyphinfo.x, + y+tab->tabs.l_y-glyphinfo.y, + glyphinfo.width, glyphinfo.height); + + /* draw text */ + if (debug_tabs > 1) { - FcValue name; - FcValue size; - FcPatternGet (renderFont->pattern, FC_FAMILY, 0, &name); - FcPatternGet (renderFont->pattern, FC_SIZE, 0, &size); fprintf (stderr, "label: %s.\n", lbl); fprintf (stderr, "foreground color: pixel=%08lx, r=%04x," " g=%04x, b=%04x, alpha=%04x.\n", @@ -1747,6 +1747,13 @@ " yOffset=%d, height=%d, width=%d.\n", glyphinfo.x, glyphinfo.y, glyphinfo.xOff, glyphinfo.yOff, glyphinfo.height, glyphinfo.width); + } + if (debug_tabs > 0) + { + FcValue name; + FcValue size; + FcPatternGet (renderFont->pattern, FC_FAMILY, 0, &name); + FcPatternGet (renderFont->pattern, FC_SIZE, 0, &size); fprintf (stderr, "font: name=%s-%.1f," " height=%d, ascent=%d, descent=%d.\n", name.u.s, size.u.d, renderFont->height, @@ -1754,7 +1761,7 @@ } XftDrawString8 (xftDraw, &color, renderFont, x+tab->tabs.l_x, y+tab->tabs.l_y, - lbl, (int) strlen (lbl)); + (FcChar8 *) lbl, (int) strlen (lbl)); XftDrawDestroy (xftDraw); #else XDrawString(dpy,win,gc, @@ -1988,7 +1995,8 @@ { #ifdef USE_XFT_TABS tab->tabs.width += x_xft_text_width (XtDisplay(tw), font, - lbl, (int)strlen(lbl)) + iw; + (FcChar8 *) lbl, + (int)strlen(lbl)) + iw; tab->tabs.l_y = (tw->tabs.tab_height + tw->tabs.renderFont->ascent /* #### how can this subtraction be correct? */ @@ -2064,11 +2072,11 @@ /* If wid or hgt is 0, we want to guess our own dimensions. Currently the guessing functions are broken.... #### When PreferredSize*() get fixed, fix this too. */ - if (debug_tabs > 0) + if (debug_tabs > 1) fprintf (stderr, "arg=%d,", wid); wid = (wid ? wid : tw->core.width) - INDENT ; hgt = hgt ? hgt : tw->core.height; - if (debug_tabs > 0) + if (debug_tabs > 1) fprintf (stderr, "wid=%d: x,w,y=", wid); for(i=num_children, childP=tw->composite.children; --i >= 0; ++childP) if( XtIsManaged(*childP) ) @@ -2076,7 +2084,7 @@ tab = (TabsConstraints) (*childP)->core.constraints ; w = tab->tabs.width ; - if (debug_tabs > 0) + if (debug_tabs > 1) fprintf (stderr, "%d,%d,%d;", x, w, y); if( x + w > wid ) { /* new row */ /* #### algorithm is not robust to wid < child's width */ @@ -2099,7 +2107,7 @@ tab->tabs.visible = 1; } - if (debug_tabs > 0) + if (debug_tabs > 1) fprintf (stderr, "\n"); /* If there was only one row, increase the height by TABDELTA */ if( ++display_rows == 1 ) @@ -2126,7 +2134,7 @@ tw->tabs.realRows = row; } - if (debug_tabs > 0 && (row > 1 || display_rows > 1)) + if (debug_tabs > 1 && (row > 1 || display_rows > 1)) fprintf (stderr, "tab: %d display rows, #children = %d," " total height %d, total rows %d%s.\n", display_rows, num_children, y, row, diff --text -u 'xemacs-21.5.26/lwlib/xlwtabs.h' 'xemacs-21.5.27/lwlib/xlwtabs.h' Index: ./lwlib/xlwtabs.h --- ./lwlib/xlwtabs.h Fri Apr 13 03:21:57 2001 +++ ./lwlib/xlwtabs.h Sat May 13 04:25:29 2006 @@ -44,16 +44,18 @@ Name Class RepType Default Value ---- ----- ------- ------------- font Font XFontStruct* XtDefaultFont - internalWidth Width Dimension 4 *1 - internalHeight Height Dimension 2 *1 - topWidget TopWidget Widget *2 - callback Callback XtCallbackList NULL *3 - popdownCallback Callback XtCallbackList NULL *4 - selectInsensitive SelectInsensitive Boolean True *5 - beNiceToColormap BeNiceToColormap Boolean False *6 + fcFontName FcFontName String AirCut-16 *0 + xftFont XftFont XtPointer NULL *8 + internalWidth Width Dimension 4 *1 + internalHeight Height Dimension 2 *1 + topWidget TopWidget Widget *2 + callback Callback XtCallbackList NULL *3 + popdownCallback Callback XtCallbackList NULL *4 + selectInsensitive SelectInsensitive Boolean True *5 + beNiceToColormap BeNiceToColormap Boolean False *6 topShadowContrast TopShadowContrast int 20 bottomShadowContrast BottomShadowContrast int 40 - insensitiveContrast InsensitiveContrast int 33 *7 + insensitiveContrast InsensitiveContrast int 33 *7 background Background Pixel XtDefaultBackground border BorderColor Pixel XtDefaultForeground @@ -70,6 +72,7 @@ Notes: + 0 this is a joke, it will be changed. 1 internalWidth, internalHeight specify the margins around the text in the tabs. 2 topWidget identifies the widget which is currently visible. @@ -82,7 +85,8 @@ be selected anyway. 6 BeNiceToColormap causes the Tabs widget to use fewer colors. 7 InsensitiveContrast sets the contrast used for labels of insensitive widgets. - + 8 fcFontName and xftFont are separate resources because there is not yet + registered representation and converter for XftFonts. */ /* Constraint parameters: diff --text -u 'xemacs-21.5.26/lwlib/xlwtabsP.h' 'xemacs-21.5.27/lwlib/xlwtabsP.h' Index: ./lwlib/xlwtabsP.h --- ./lwlib/xlwtabsP.h Sat Nov 26 20:46:00 2005 +++ ./lwlib/xlwtabsP.h Sat May 13 04:25:29 2006 @@ -74,8 +74,8 @@ /* resources */ XFontStruct *font ; #ifdef USE_XFT_TABS - String renderFontSpec; - XftFont *renderFont; + XftFont *renderFont; + String fcFontName; #endif Dimension internalHeight, internalWidth ; Widget topWidget ; @@ -122,7 +122,7 @@ /**************************************************************** * - * constraint record declaration + * Constraint record declaration * ****************************************************************/ diff --text -u 'xemacs-21.5.26/man/ChangeLog' 'xemacs-21.5.27/man/ChangeLog' Index: ./man/ChangeLog --- ./man/ChangeLog Sat Apr 1 03:46:15 2006 +++ ./man/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,32 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + +2006-05-09 Stephen J. Turnbull + + * beta.texi (Building Beta XEmacs): Rename 'Compiling' -> 'Building'. + (Reporting Problems): Improve it, make it a top-level node, add + some vertical spacing to make node breaks more visible. + (Getting the Source): Flesh it out a bit and move it to the + Building Beta XEmacs node. + +2006-05-09 Stephen J. Turnbull + + * xemacs/custom.texi (Xft Font Customization): New node. + (Faces): Create menu, add new node. + * xemacs/xemacs.texi (Top): add new node to detail menu. + +2006-04-29 Aidan Kehoe + + * lispref/objects.texi (Character Type): + Document the Unicode syntax for characters in characters and + strings. + +2006-04-23 Stephen J. Turnbull + + * internals/internals.texi: Run texinfo-master-menu. + (Creating a New Console/Device/Frame Type): New node. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/man/beta.texi' 'xemacs-21.5.27/man/beta.texi' Index: ./man/beta.texi --- ./man/beta.texi Thu Mar 10 20:44:17 2005 +++ ./man/beta.texi Tue May 9 14:15:15 2006 @@ -57,6 +57,7 @@ @vskip 0pt plus 1fill @noindent +Copyright @copyright{} 2006 Free Software Foundation. @* Copyright @copyright{} 2005 Ben Wing. @* This file is part of XEmacs. @@ -83,10 +84,11 @@ This Info file describes info relevant to beta versions of XEmacs. @menu * Introduction:: -* Compiling Beta XEmacs:: +* Building Beta XEmacs:: * Packages:: +* Reporting Problems:: * Improving XEmacs:: -* Index:: +* Index:: @detailmenu --- The Detailed Node Listing --- @@ -95,8 +97,6 @@ * Mailing Lists:: * Beta Release Schedule:: -* Reporting Problems:: -* Getting the Source:: Mailing Lists @@ -108,8 +108,9 @@ * Subscribing by e-mail:: * Unsubscribing by e-mail:: -Compiling Beta XEmacs +Building Beta XEmacs +* Getting the Source:: * Building an XEmacs from patches:: * Building XEmacs from a full distribution:: @@ -139,7 +140,8 @@ @end ifinfo -@node Introduction, Compiling Beta XEmacs, Top, Top + +@node Introduction, Building Beta XEmacs, Top, Top @chapter Introduction You are running a potentially unstable version of XEmacs. Please do @@ -150,10 +152,9 @@ @menu * Mailing Lists:: * Beta Release Schedule:: -* Reporting Problems:: -* Getting the Source:: @end menu + @node Mailing Lists, Beta Release Schedule, Introduction, Introduction @section Mailing Lists @@ -167,6 +168,7 @@ * Unsubscribing by e-mail:: @end menu + @node XEmacs Beta Mailing List, XEmacs Patches Mailing List, Mailing Lists, Mailing Lists @subsection XEmacs Beta Mailing List @@ -176,6 +178,7 @@ Only patches and administrative actions regarding patches are sent elsewhere (to the XEmacs Patches list). + @node XEmacs Patches Mailing List, XEmacs Design Mailing List, XEmacs Beta Mailing List, Mailing Lists @subsection XEmacs Patches Mailing List @@ -189,6 +192,7 @@ should be posted to this list. All discussion should be redirected to XEmacs Beta or XEmacs Design. + @node XEmacs Design Mailing List, List Administrivia, XEmacs Patches Mailing List, Mailing Lists @subsection XEmacs Design Mailing List @@ -217,6 +221,7 @@ Note that the xemacs-LIST-admin address is used internally by the Mailman software; it is NOT a synonym for xemacs-LIST-request. + @node Managing your subscription via the Web, Subscribing by e-mail, List Administrivia, Mailing Lists @subsection Managing your subscription via the Web @@ -224,19 +229,22 @@ temporarily suspending delivery) can be accomplished via the web interface at @uref{http://www.xemacs.org/Lists/#xemacs-LIST}. + @node Subscribing by e-mail, Unsubscribing by e-mail, Managing your subscription via the Web, Mailing Lists @subsection Subscribing by e-mail Send an email message to @uref{mailto:xemacs-LIST-request@@xemacs.org} with @samp{subscribe} (without the quotes) as the BODY of the message. + @node Unsubscribing by e-mail, , Subscribing by e-mail, Mailing Lists @subsection Unsubscribing by e-mail Send an email message to @uref{mailto:xemacs-LIST-request@@xemacs.org} with @samp{unsubscribe} (without the quotes) as the BODY of the message. -@node Beta Release Schedule, Reporting Problems, Mailing Lists, Introduction + +@node Beta Release Schedule, , Mailing Lists, Introduction @section Beta Release Schedule We would like to achieve a weekly or fortnightly release cycle (you @@ -255,75 +263,46 @@ it will make it more likely that we release betas more often. -@node Reporting Problems, Getting the Source, Beta Release Schedule, Introduction -@section Reporting Problems +@node Building Beta XEmacs, Packages, Introduction, Top +@chapter Building Beta XEmacs -The best way to get problems fixed in XEmacs is to submit good problem -reports, @kbd{M-x report-xemacs-bug RET} will help you do this (assuming -you have a usable XEmacs). Since this is beta software, problems are -certain to exist. Please read through all of part II of the XEmacs -FAQ for an overview of problem reporting. Other items which are most -important are: - -@enumerate -@item -Do not submit C stack backtraces without line numbers. Since it -is possible to compile optimized with debug information with GCC -it is never a good idea to compile XEmacs without the -g flag. -XEmacs runs on a variety of platforms, and often it is not -possible to recreate problems which afflict a specific platform. -The line numbers in the C stack backtrace help isolate where the -problem is actually occurring. - -@item -Attempt to recreate the problem starting with an invocation of -XEmacs with @code{xemacs -no-autoloads}. Quite often, problems are -due to package interdependencies, and the like. An actual bug -in XEmacs should be reproducible in a default configuration -without loading any special packages (or the one or two specific -packages that cause the bug to appear). If you have trouble -getting anything to work at all with the above invocation, use -@code{xemacs -vanilla} instead. If you need to load your user init -file or the site file to get the problem to occur, then it has -something to do with them, and you should try to isolate the -issue in those files. +@menu +* Getting the Source:: +* Building an XEmacs from patches:: +* Building XEmacs from a full distribution:: +@end menu -@item -A picture can be worth a thousand words. When reporting an -unusual display, it is generally best to capture the problem in a -screen dump and include that with the problem report. The easiest -way to get a screen dump is to use the xv program and its grab -function. Save the image as a GIF to keep bandwidth requirements -down without loss of information. MIME is the preferred method -for making the image attachments. -@end enumerate -@node Getting the Source, , Reporting Problems, Introduction +@node Getting the Source, Building an XEmacs from patches, Building Beta XEmacs, Building Beta XEmacs @section Getting the Source +We provide the traditional tarballs and release-to-release patchkits for +each beta release. @xref{Beta Release Schedule}. These are available +at + + @uref{ftp://ftp.xemacs.org/pub/xemacs/beta/} + In addition to the normal tar distribution, XEmacs source is now available via CVS. Please see @uref{http://www.xemacs.org/Develop/cvsaccess.html} -@node Compiling Beta XEmacs, Packages, Introduction, Top -@chapter Compiling Beta XEmacs +You can also browse the repository via ViewCVS + + @uref{http://cvs.xemacs.org/} -@menu -* Building an XEmacs from patches:: -* Building XEmacs from a full distribution:: -@end menu -@node Building an XEmacs from patches, Building XEmacs from a full distribution, Compiling Beta XEmacs, Compiling Beta XEmacs +@node Building an XEmacs from patches, Building XEmacs from a full distribution, Getting the Source, Building Beta XEmacs @section Building an XEmacs from patches -All beta releases of XEmacs are included with patches from the previous -version in an attempt to keep bandwidth requirements down. Patches -should be applied with the GNU patch program in something like the -following. Let's say you're upgrading XEmacs 21.5-beta9 to XEmacs -21.5-beta10 and you have a full unmodified XEmacs 21.5-beta9 source -tree to work with. Change to the top level directory and issue the -shell command: +All beta releases of XEmacs provide patches from the previous version as +an alternative to keep bandwidth requirements down. These patches are +actually scripts generated by the @file{makepatch} program, and can be +run if you have the @file{applypatch} program. Patches may also be +applied with the GNU patch program in something like the following. +Let's say you're upgrading XEmacs 21.5-beta9 to XEmacs 21.5-beta10 and +you have a full unmodified XEmacs 21.5-beta9 source tree to work with. +Change to the top level directory and issue the shell command: @example $ gunzip -c /tmp/xemacs-21.5.9-21.5.10.patch.gz | patch -p1 @@ -349,13 +328,15 @@ Redirect the output from make to those files because you'll use them later when you send off a build report with @kbd{M-x build-report RET} -@node Building XEmacs from a full distribution, , Building an XEmacs from patches, Compiling Beta XEmacs + +@node Building XEmacs from a full distribution, , Building an XEmacs from patches, Building Beta XEmacs @section Building XEmacs from a full distribution @enumerate @item -Locate a convenient place where you have at least 100MB of free space -and issue the command +Locate a convenient place where you have at least 200MB of free space +(approximately 100MB for sources and compiled Lisp, and 100MB for +objects and other generated files) and issue the command @example $ gunzip -c /tmp/xemacs-21.5.10.tar.gz | tar xvf - @@ -409,8 +390,8 @@ --with-xemacs-compiler=g++ @end example -This will compile XEmacs using g++, which will turn on a lot of additional -error-checking. +This will compile XEmacs using g++, which is generally much stricter +about type-checking than C compilers like gcc. @item If your packages are not installed under /usr/local, you should add a @@ -592,7 +573,8 @@ @end enumerate @end enumerate -@node Packages, Improving XEmacs, Compiling Beta XEmacs, Top + +@node Packages, Reporting Problems, Building Beta XEmacs, Top @chapter Packages [Note: these instructions have been partly updated, but not carefully @@ -613,6 +595,7 @@ * Building XEmacs and XEmacs packages from scratch:: @end menu + @node Binary package installation, Manual procedures for package management, Packages, Packages @section Binary package installation @@ -623,6 +606,7 @@ in this directory, run the command @kbd{M-x package-admin-add-binary-package} and fill in appropriate values to the prompts. + @node Manual procedures for package management, Building XEmacs and XEmacs packages from scratch, Binary package installation, Packages @section Manual procedures for package management @@ -656,7 +640,8 @@ Of course, being a beta tester, you'd be aware that it is much easier to manage your XEmacs packages with PUI. -@node Building XEmacs and XEmacs packages from scratch, , Manual procedures for package management, Packages + +@node Building XEmacs and XEmacs packages from scratch, , Manual procedures for package management, Packages @section Building XEmacs and XEmacs packages from scratch To build everything completely from scratch isn't hard, just time @@ -705,7 +690,56 @@ $ make install @end example -@node Improving XEmacs, Index, Packages, Top + +@node Reporting Problems, Improving XEmacs, Packages, Top +@section Reporting Problems + +The best way to get problems fixed in XEmacs is to submit good problem +reports, @kbd{M-x report-xemacs-bug RET} will help you do this (assuming +you have a usable XEmacs). Since this is beta software, problems are +certain to exist. Please read through all of part II of the XEmacs +FAQ for an overview of problem reporting. +@xref{Installation, Installation and Troubleshooting, , xemacs-faq}. +The most relevant parts are in section 2.4, General Troubleshooting. +@c #### Why doesn't this link work? +@c @ref{Q2.4.1, General Troubleshooting, , xemacs-faq}. +Other items which are most important are: + +@enumerate +@item +Do not submit C stack backtraces without line numbers. Since it +is possible to compile optimized with debug information with GCC +it is never a good idea to compile XEmacs without the -g flag. +XEmacs runs on a variety of platforms, and often it is not +possible to recreate problems which afflict a specific platform. +The line numbers in the C stack backtrace help isolate where the +problem is actually occurring. + +@item +Attempt to recreate the problem starting with an invocation of +XEmacs with @code{xemacs -no-autoloads}. Quite often, problems are +due to package interdependencies, and the like. An actual bug +in XEmacs should be reproducible in a default configuration +without loading any special packages (or the one or two specific +packages that cause the bug to appear). If you have trouble +getting anything to work at all with the above invocation, use +@code{xemacs -vanilla} instead. If you need to load your user init +file or the site file to get the problem to occur, then it has +something to do with them, and you should try to isolate the +issue in those files. + +@item +A picture can be worth a thousand words. When reporting an +unusual display, it is generally best to capture the problem in a +screen dump and include that with the problem report. The easiest +way to get a screen dump is to use the xv program and its grab +function. Save the image as a GIF to keep bandwidth requirements +down without loss of information. MIME is the preferred method +for making the image attachments. +@end enumerate + + +@node Improving XEmacs, Index, Reporting Problems, Top @chapter Improving XEmacs @menu @@ -899,6 +933,7 @@ @uref{http://www.xemacs.org/Develop/jobs.html#package,jobs.html} for current information about package release engineers. + @node Syncing with GNU Emacs, , New packages, Large contributions @subsection Syncing with GNU Emacs @@ -956,6 +991,7 @@ @c Print the tables of contents @contents @c That's all + @node Index, , Improving XEmacs, Top @unnumbered Index diff --text -u 'xemacs-21.5.26/man/internals/internals.texi' 'xemacs-21.5.27/man/internals/internals.texi' Index: ./man/internals/internals.texi --- ./man/internals/internals.texi Sat Apr 1 02:51:29 2006 +++ ./man/internals/internals.texi Mon Apr 24 01:11:28 2006 @@ -311,7 +311,7 @@ * XEmacs from the Perspective of Building:: * Build-Time Dependencies:: * The Modules of XEmacs:: -* The Build Configuration System:: +* The Build Configuration System:: * Rules When Writing New C Code:: * Regression Testing XEmacs:: * CVS Techniques:: @@ -361,6 +361,7 @@ The Modules of XEmacs * A Summary of the Various XEmacs Modules:: +* Modules for Building XEmacs:: * Low-Level Modules:: * Basic Lisp Modules:: * Modules for Standard Editing Operations:: @@ -368,6 +369,19 @@ * Modules for Other Aspects of the Lisp Interpreter and Object System:: * Modules for Interfacing with the Operating System:: +Modules for Building XEmacs + +* Modules for Build Configuration:: +* Modules for Compiling XEmacs:: +* Modules for Preloading Lisp:: + +The Build Configuration System + +* The version.sh Script:: +* Adding Configurable Features:: +* The configure Script:: +* The Makefile Precursors:: + Rules When Writing New C Code * Introduction to Writing C Code:: @@ -393,7 +407,7 @@ CVS Techniques -* Creating a Branch:: +* Creating a Branch:: * Merging a Branch into the Trunk:: Low-Level Allocation @@ -471,12 +485,12 @@ * Encodings:: * Internal Mule Encodings:: * Byte/Character Types; Buffer Positions; Other Typedefs:: -* Internal Text APIs:: +* Internal Text APIs:: * Coding for Mule:: * CCL:: * Microsoft Windows-Related Multilingual Issues:: * Modules for Internationalization:: -* The Great Mule Merge of March 2002:: +* The Great Mule Merge of March 2002:: Encodings @@ -525,18 +539,18 @@ The Great Mule Merge of March 2002 -* List of changed files in new Mule workspace:: -* Changes to the MULE subsystems:: -* Pervasive changes throughout XEmacs sources:: -* Changes to specific subsystems:: -* Mule changes by theme:: -* File-coding rewrite:: -* General User-Visible Changes:: -* General Lisp-Visible Changes:: -* User documentation:: -* General internal changes:: -* Ben's TODO list:: Probably obsolete. -* Ben's README:: Probably obsolete. +* List of changed files in new Mule workspace:: +* Changes to the MULE subsystems:: +* Pervasive changes throughout XEmacs sources:: +* Changes to specific subsystems:: +* Mule changes by theme:: +* File-coding rewrite:: +* General User-Visible Changes:: +* General Lisp-Visible Changes:: +* User documentation:: +* General internal changes:: +* Ben's TODO list:: Probably obsolete. +* Ben's README:: Probably obsolete. Consoles; Devices; Frames; Windows @@ -544,6 +558,7 @@ * Point:: * Window Hierarchy:: * The Window Object:: +* Creating a New Console/Device/Frame Type:: * Modules for the Basic Displayable Lisp Objects:: The Redisplay Mechanism @@ -595,7 +610,7 @@ Subprocesses -* Ben's separate stderr notes:: Probably obsolete. +* Ben's separate stderr notes:: Probably obsolete. Interface to MS Windows @@ -603,7 +618,7 @@ * Windows Build Flags:: * Windows I18N Introduction:: * Modules for Interfacing with MS Windows:: -* CHANGES from 21.4-windows branch:: Probably obsolete. +* CHANGES from 21.4-windows branch:: Probably obsolete. Interface to the X Window System @@ -661,7 +676,7 @@ * Future Work -- Display Tables:: * Future Work -- Making Elisp Function Calls Faster:: * Future Work -- Lisp Engine Replacement:: -* Future Work -- Better Rendering Support:: +* Future Work -- Better Rendering Support:: Future Work -- Toolbars @@ -697,6 +712,20 @@ * Future Work -- Lisp Engine Replacement -- Implementation:: * Future Work -- Startup File Modification by Packages:: +Future Work -- Better Rendering Support + +* Better Rendering Support -- Review Criteria:: +* Better Rendering Support -- Implementation:: +* Better Rendering Support -- Current Status:: +* Better Rendering Support -- Configuration with the Interim Patches:: +* Better Rendering Support -- Modern Font Support:: + +Better Rendering Support -- Modern Font Support + +* Modern Font Support -- Font Concepts:: GUI devices, fonts, glyphs, rendering. +* Modern Font Support -- fontconfig:: Querying and selecting fonts. +* Modern Font Support -- Xft:: Rendering fonts on X11. + Future Work Discussion * Discussion -- Garbage Collection:: @@ -2737,7 +2766,7 @@ @menu * A Summary of the Various XEmacs Modules:: -* Modules for Building XEmacs:: +* Modules for Building XEmacs:: * Low-Level Modules:: * Basic Lisp Modules:: * Modules for Standard Editing Operations:: @@ -3247,9 +3276,9 @@ @cindex building XEmacs, modules for @menu -* Modules for Build Configuration:: -* Modules for Compiling XEmacs:: -* Modules for Preloading Lisp:: +* Modules for Build Configuration:: +* Modules for Compiling XEmacs:: +* Modules for Preloading Lisp:: @end menu @@ -3288,7 +3317,7 @@ -@node Modules for Preloading Lisp, , Modules for Compiling XEmacs, Modules for Building XEmacs +@node Modules for Preloading Lisp, , Modules for Compiling XEmacs, Modules for Building XEmacs @subsection Modules for Preloading Lisp @cindex modules for preloading lisp @cindex preloading lisp, modules for @@ -4357,10 +4386,10 @@ system. @menu -* The version.sh Script:: +* The version.sh Script:: * Adding Configurable Features:: -* The configure Script:: -* The Makefile Precursors:: +* The configure Script:: +* The Makefile Precursors:: @end menu @@ -4836,7 +4865,7 @@ -@node The Makefile Precursors, , The configure Script, The Build Configuration System +@node The Makefile Precursors, , The configure Script, The Build Configuration System @section The Makefile Precursors @cindex Makefile precursors @cindex precursors, Makefile @@ -6603,7 +6632,7 @@ @cindex CVS techniques @menu -* Creating a Branch:: +* Creating a Branch:: * Merging a Branch into the Trunk:: @end menu @@ -10389,12 +10418,12 @@ * Encodings:: * Internal Mule Encodings:: * Byte/Character Types; Buffer Positions; Other Typedefs:: -* Internal Text APIs:: +* Internal Text APIs:: * Coding for Mule:: * CCL:: * Microsoft Windows-Related Multilingual Issues:: * Modules for Internationalization:: -* The Great Mule Merge of March 2002:: +* The Great Mule Merge of March 2002:: @end menu @node Introduction to Multilingual Issues #1, Introduction to Multilingual Issues #2, Multilingual Support, Multilingual Support @@ -14102,7 +14131,7 @@ prepended with an L (causing it to be a wide string) depending on XEUNICODE_P. -@node Modules for Internationalization, The Great Mule Merge of March 2002, Microsoft Windows-Related Multilingual Issues, Multilingual Support +@node Modules for Internationalization, The Great Mule Merge of March 2002, Microsoft Windows-Related Multilingual Issues, Multilingual Support @section Modules for Internationalization @cindex modules for internationalization @cindex internationalization, modules for @@ -14208,22 +14237,22 @@ remains to be done. @menu -* List of changed files in new Mule workspace:: -* Changes to the MULE subsystems:: -* Pervasive changes throughout XEmacs sources:: -* Changes to specific subsystems:: -* Mule changes by theme:: -* File-coding rewrite:: -* General User-Visible Changes:: -* General Lisp-Visible Changes:: -* User documentation:: -* General internal changes:: -* Ben's TODO list:: Probably obsolete. -* Ben's README:: Probably obsolete. +* List of changed files in new Mule workspace:: +* Changes to the MULE subsystems:: +* Pervasive changes throughout XEmacs sources:: +* Changes to specific subsystems:: +* Mule changes by theme:: +* File-coding rewrite:: +* General User-Visible Changes:: +* General Lisp-Visible Changes:: +* User documentation:: +* General internal changes:: +* Ben's TODO list:: Probably obsolete. +* Ben's README:: Probably obsolete. @end menu -@node List of changed files in new Mule workspace, Changes to the MULE subsystems, , The Great Mule Merge of March 2002 +@node List of changed files in new Mule workspace, Changes to the MULE subsystems, The Great Mule Merge of March 2002, The Great Mule Merge of March 2002 @subsection List of changed files in new Mule workspace This node lists the files that were touched in the Great Mule Merge. @@ -15307,7 +15336,7 @@ interrupt the same process, use the injection method. @end itemize -@node Ben's README, , Ben's TODO list, The Great Mule Merge of March 2002 +@node Ben's README, , Ben's TODO list, The Great Mule Merge of March 2002 @subsection Ben's README (probably obsolete) These notes substantially overlap those in @ref{Ben's TODO list}. They @@ -17176,6 +17205,7 @@ * Point:: * Window Hierarchy:: * The Window Object:: +* Creating a New Console/Device/Frame Type:: * Modules for the Basic Displayable Lisp Objects:: @end menu @@ -17345,7 +17375,7 @@ artifact that should be fixed.) @end enumerate -@node The Window Object, Modules for the Basic Displayable Lisp Objects, Window Hierarchy, Consoles; Devices; Frames; Windows +@node The Window Object, Creating a New Console/Device/Frame Type, Window Hierarchy, Consoles; Devices; Frames; Windows @section The Window Object @cindex window object, the @cindex object, the window @@ -17452,7 +17482,144 @@ this field is @code{nil}. @end table -@node Modules for the Basic Displayable Lisp Objects, , The Window Object, Consoles; Devices; Frames; Windows + +@node Creating a New Console/Device/Frame Type, Modules for the Basic Displayable Lisp Objects, The Window Object, Consoles; Devices; Frames; Windows +@section Creating a New Console, Device, or Frame Type +@cindex creating a new console type +@cindex console type, creating a new +@cindex creating a new device type +@cindex device type, creating a new +@cindex creating a new frame type +@cindex frame type, creating a new + +Unfortunately, at the present time, only the console abstraction is at +all well-maintained. Device and frame internals are referred to from +many places in the redisplay and console code. The best that can be +done therefore is to create a whole new console type, even though much +code will be shared. (Ben Wing has complained about the code +duplication in the GTK+ v1 console, and probably would not be happy with +the unpublished Qt console or Andrew Choi's Carbon console, but it's +hard to see how those consoles could have been done better without +fixing the abstractions in the X (actually Xt), MS Windows, and tty +consoles as well as doing a complete refactoring of the console, device, +and frame code.) + +What is desireable is sharing console, device, and frame methods across +platforms in a more general way, reducing the amount of duplicated code +by pulling it back into the redisplay engine proper or the Lisp modules +as appropriate. For example, we should be able to use +@samp{make-frame-on-device} to share a single X connection among GTK, X, +and Xft frames. Xft is partially implemented, but GTK would be much +harder (impossible?) because it has its own event loop. (Xft shares the +Xt event loop with the X console.) + +The way all methods get added to the console type is uncool. A console +should be a composite, which indicates a collection of I/O resources +``used together.'' It should indicate where operations that change +``focus'' search for targets, @emph{i.e.}, by default new frames are +created on the selected device of the console where the input that +invoked the command was received, @samp{pop-to-buffer-other-window} only +considers existing windows on the same device of the same console, +@emph{etc.} But it should be possible to assemble consoles out of +component input channels, imaging devices, and multimedia (audio) +channels. + +The following notes may provide some guidance to those who wish to +create new console types (@emph{i.e.}, port the redisplay code to a new +platform). They are based on an unsuccessful attempt to refactor the +Xft code into a new console type while sharing most routines with the X +console. (For clarification or suggestions, feel free to write +@email{stephen@@xemacs.org,Stephen Turnbull}.) + +The first thing to realize is that the naming of many modules obscures +their relationship to the console abstraction. For example, the +@file{objects-@var{console-type}}, @file{redisplay-@var{console-type}}, +and @file{glyphs-@var{console-type}} series of modules have nothing to +do with Lisp objects and little to do with redisplay, respectively. +Rather they implement abstractions used for rendering on each console +type, such as fonts and colors (@file{objects}) and string and graphics +drawing primitives (@file{rendering}). These modules are conceptually +part of the console implementations, not part of redisplay or Lisp. + +Public methods of a console are implemented as C functions declared +@code{static}, following a rigid naming convention: +@samp{@var{console-type}_@var{method-name}}. Methods are bound to the +console type in the @samp{console_type_create_@var{file}} functions for +each console component (console, device, and frame) using the +@samp{CONSOLE_HAS_METHOD} family of macros. Methods for displaying +images are bound using the @samp{IIFORMAT_HAS_DEVMETHOD} family of +macros. Methods are invoked using the @samp{CONMETH}, @samp{DEVMETH}, +and @samp{FRAMEMETH} families of macros, which look up the relevant +methods in the object's table of methods. + +@strong{N.B.} All of the object tables are actually references to +console method tables. To create a variant of an existing console, +there is a @samp{CONSOLE_INHERITS_METHOD} constructor, but this actually +constructs the name of the parent's method pointer and stores in the +derived console type's method table. Of course this is time-efficient, +and since there are few console types it is a neglible waste of space. +However in practice this may have contributed to breaking the various +abstractions, and the variant console must be coded in the same file as +the parent (because the methods are static). Another minor symptom of +the incompleteness of the abstraction is the fact that the API for +inheritance of device methods for image formats is named +@samp{IIFORMAT_HAS_SHARED_METHOD}, although the semantics are identical. + +One problem encountered in attempting to create an Xft console type as a +derivative of the X console type was that there is no support for such +union types in the consistency-checking code, whether for the +fundamental Lisp consistency checks (the @samp{CHECK_SOMETHING} family +of macros) or for the error-checking variants of many functions. These +APIs all simply check for the apparent console type, which is a single +symbol (or enumerator). + +To create a new console with mostly new methods, it's probably best to +copy all of the @file{@var{function}-@var{console-type}} files from a +similar console (or several, if the new console type seems like a +combination of several existing console types), renaming the files by +substituting @var{new-console-type} for @var{console-type}. Then +proceed in the obvious way by renaming methods from +@samp{@var{console-type}_@var{method-name}} to +@samp{@var{new-console-type}_@var{method-name}}, and implementing them. + +Once you've done that, then the fun starts. Insert the initialization +functions (@samp{syms_of_@var{file}}, @samp{vars_of_@var{file}}, +@samp{console_type_create_@var{file}}, @emph{etc.}) in @samp{main_1} in +@file{emacs.c}. + +Add a device creation function @samp{make-@var{console-type}-device} in +@file{device.el}. Add the device type to the calls to +@samp{Face-frob-property} in @file{faces.el}, as well as calls to the +device initializer functions for devices and frames, and ``additional +frobbing'' in that file. + +You may wish to add an option to force the initial frame to that device +type to @file{emacs.c}. Don't forget to document it in the command help +function in @file{startup.el}. + +You may need to add support for your console type in +@samp{init_event_stream} in @file{event-stream.c}. + +If your console has a different UI for fonts or colors, or adds new +capability, you may need to add a @file{@var{console-type}-faces.el} +file, or add code to the @file{@var{parent-type}-faces.el} file, to +support new font or color capability. Probably initialization code in +@file{faces.c} will be needed too. + +A check for the console type is probably needed in @samp{init_redisplay} +in @file{redisplay.c}. + +Ditto for the @file{@var{console-type}-init.el} file. + +Don't forget that Emacs windows are console-dependent, too. At least a +@samp{WINDOW_@var{console-type}_P}-checking macro should be added in +@file{window-impl.h}. + +Note that this project failed; there are probably many other details to +be implemented that I didn't get to. But don't let that stop you! + + +@node Modules for the Basic Displayable Lisp Objects, , Creating a New Console/Device/Frame Type, Consoles; Devices; Frames; Windows @section Modules for the Basic Displayable Lisp Objects @cindex modules for the basic displayable Lisp objects @cindex displayable Lisp objects, modules for the basic @@ -17602,6 +17769,7 @@ is part of the redisplay mechanism or the code for particular object types such as scrollbars. + @node The Redisplay Mechanism, Extents, Consoles; Devices; Frames; Windows, Top @chapter The Redisplay Mechanism @cindex redisplay mechanism, the @@ -20404,11 +20572,11 @@ @end table @menu -* Ben's separate stderr notes:: Probably obsolete. +* Ben's separate stderr notes:: Probably obsolete. @end menu -@node Ben's separate stderr notes, , , Subprocesses +@node Ben's separate stderr notes, , Subprocesses, Subprocesses @subsection Ben's separate stderr notes (probably obsolete) This node contains some notes that Ben kept on his separate subprocess @@ -20449,7 +20617,7 @@ * Windows Build Flags:: * Windows I18N Introduction:: * Modules for Interfacing with MS Windows:: -* CHANGES from 21.4-windows branch:: Probably obsolete. +* CHANGES from 21.4-windows branch:: Probably obsolete. @end menu @node Different kinds of Windows environments, Windows Build Flags, Interface to MS Windows, Interface to MS Windows @@ -20978,7 +21146,7 @@ @end table -@node CHANGES from 21.4-windows branch, , Modules for Interfacing with MS Windows, Interface to MS Windows +@node CHANGES from 21.4-windows branch, , Modules for Interfacing with MS Windows, Interface to MS Windows @section CHANGES from 21.4-windows branch (probably obsolete) This node contains the @file{CHANGES-msw} log that Andy Piper kept while @@ -26741,7 +26909,7 @@ @end itemize -@node Future Work -- Lisp Engine Replacement, Future Work -- Better Rendering Support, Future Work -- Making Elisp Function Calls Faster, Future Work +@node Future Work -- Lisp Engine Replacement, Future Work -- Better Rendering Support, Future Work -- Making Elisp Function Calls Faster, Future Work @section Future Work -- Lisp Engine Replacement @cindex future work, lisp engine replacement @cindex lisp engine replacement, future work @@ -27354,7 +27522,7 @@ -@node Future Work -- Better Rendering Support, , Future Work -- Lisp Engine Replacement, Future Work +@node Future Work -- Better Rendering Support, , Future Work -- Lisp Engine Replacement, Future Work @section Future Work -- Better Rendering Support @cindex future work, better rendering support @cindex better rendering support, future work @@ -27387,15 +27555,15 @@ one may be made available for the Knauel-Matthias patch soon. @menu -* Better Rendering Support -- Review Criteria:: -* Better Rendering Support -- Implementation:: -* Better Rendering Support -- Current Status:: -* Better Rendering Support -- Configuration with the Interim Patches:: -* Better Rendering Support -- Modern Font Support:: +* Better Rendering Support -- Review Criteria:: +* Better Rendering Support -- Implementation:: +* Better Rendering Support -- Current Status:: +* Better Rendering Support -- Configuration with the Interim Patches:: +* Better Rendering Support -- Modern Font Support:: @end menu -@node Better Rendering Support -- Review Criteria, Better Rendering Support -- Implementation, , Future Work -- Better Rendering Support +@node Better Rendering Support -- Review Criteria, Better Rendering Support -- Implementation, Future Work -- Better Rendering Support, Future Work -- Better Rendering Support @subsection Better Rendering Support -- Review Criteria @cindex better rendering support, issues @cindex issues, better rendering support @@ -27738,7 +27906,7 @@ -@node Better Rendering Support -- Modern Font Support, , Better Rendering Support -- Configuration with the Interim Patches, Future Work -- Better Rendering Support +@node Better Rendering Support -- Modern Font Support, , Better Rendering Support -- Configuration with the Interim Patches, Future Work -- Better Rendering Support @subsection Better Rendering Support -- Modern Font Support @c Maybe eventually all these @cindexes should be spread about? @@ -27784,12 +27952,12 @@ available on all @file{fontconfig} systems. @menu -* Modern Font Support -- Font Concepts:: GUI devices, fonts, glyphs, rendering. -* Modern Font Support -- fontconfig:: Querying and selecting fonts. -* Modern Font Support -- Xft:: Rendering fonts on X11. +* Modern Font Support -- Font Concepts:: GUI devices, fonts, glyphs, rendering. +* Modern Font Support -- fontconfig:: Querying and selecting fonts. +* Modern Font Support -- Xft:: Rendering fonts on X11. @end menu -@node Modern Font Support -- Font Concepts, Modern Font Support -- fontconfig, , Better Rendering Support -- Modern Font Support +@node Modern Font Support -- Font Concepts, Modern Font Support -- fontconfig, Better Rendering Support -- Modern Font Support, Better Rendering Support -- Modern Font Support @subsubsection Modern Font Support -- Font Concepts In modern systems, displays are invariably @dfn{raster graphic devices}, @@ -28201,7 +28369,7 @@ -@node Modern Font Support -- Xft, , Modern Font Support -- fontconfig, Better Rendering Support -- Modern Font Support +@node Modern Font Support -- Xft, , Modern Font Support -- fontconfig, Better Rendering Support -- Modern Font Support @subsubsection Modern Font Support -- fontconfig IIRC, we don't really provide any @file{Xft} APIs at the LISP level yet. diff --text -u 'xemacs-21.5.26/man/lispref/objects.texi' 'xemacs-21.5.27/man/lispref/objects.texi' Index: ./man/lispref/objects.texi --- ./man/lispref/objects.texi Mon Jun 30 18:31:01 2003 +++ ./man/lispref/objects.texi Sat Apr 29 23:36:54 2006 @@ -510,6 +510,21 @@ For example, character code 193 is a lowercase @samp{a} with an acute accent, in @sc{iso}-8859-1.) +@cindex unicode character escape + From version 21.5.25 onwards, XEmacs provides a syntax for specifying +characters by their Unicode code points. @samp{?\uABCD} will give you +an XEmacs character that maps to the code point @samp{U+ABCD} in +Unicode-based representations (UTF-8 text files, Unicode-oriented fonts, +etc.) Just as in the C# language, there is a slightly different syntax +for specifying characters with code points above @samp{#xFFFF}; +@samp{\U00ABCDEF} will give you an XEmacs character that maps to the +code point @samp{U+ABCDEF} in Unicode-based representations, if such an +XEmacs character exists. + + Unlike in C#, while this syntax is available for character literals, +and (see later) in strings, it is not available elsewhere in your Lisp +source code. + @ignore @c None of this crap applies to XEmacs. For use in strings and buffers, you are limited to the control characters that exist in @sc{ascii}, but for keyboard input purposes, @@ -614,6 +629,7 @@ @cindex backslash in character constant @cindex octal character code @cindex hexadecimal character code + Finally, there are two read syntaxes involving character codes. It is not possible to represent multibyte or wide characters in this way; the permissible range of codes is from 0 to 255 (@emph{i.e.}, diff --text -u 'xemacs-21.5.26/man/xemacs/custom.texi' 'xemacs-21.5.27/man/xemacs/custom.texi' Index: ./man/xemacs/custom.texi --- ./man/xemacs/custom.texi Tue Nov 29 21:08:41 2005 +++ ./man/xemacs/custom.texi Tue May 9 14:00:30 2006 @@ -1,4 +1,6 @@ +@c FIXME -- we demand a detail menu! + @node Customization, Quitting, Emulation, Top @chapter Customization @cindex customization @@ -2034,6 +2036,14 @@ The display attributes of faces may be specified either in Lisp or through the X resource manager. +Basic Xft support has been merged into the mainline, and it looks pretty +good. However, customization UI and documentation still leaves a lot to +be desired. Here's a first cut, as a separate node. + +@menu +* Xft Font Customization:: +@end menu + @subsection Customizing Faces You can change the face of an extent with the functions in @@ -2214,6 +2224,406 @@ to make underlining an attribute of the face or not. If the optional @var{frame} argument is provided, the face is changed only in that frame; otherwise, it is changed in all frames. + + +@node Xft Font Customization, , , Faces +@section Xft Font Customization + +This section was written by @email{stephen@@xemacs.org,Stephen Turnbull}, +and is very much a work in progress. I've tried to provide pointers to +as much of the relevant information as possible, but many of the APIs +and UIs are in flux, so it seemed more work than it was worth to +completely translate the tables of constants, and so on. Feel free to +ask for clarifications, @emph{etc.} Please Cc +@email{xemacs-beta@@xemacs.org,the XEmacs Beta Testers' mailing list}, +as that is the issue tracking channel of record, and there are a few +others who can answer the questions or improve documentation when I'm +not able to respond quickly. + +@c Don't blame Ben (or Eric and Matthias, for that matter). Feel free to +@c add, edit, and share the blame, everybody! + +@c #### Make these @urlref's!! +As of mid-2005, we have added support for the +@file{Xft} library, which provides a more robust @emph{font +configuration} mechanism via Keith Packard's @file{fontconfig} library; +improved glyph rendering, including antialiasing, via the +@file{freetype} library; and client-side rendering (saving bandwidth and +server memory) via the @file{XRender extension}. + +@c #### Describe Alexey Gladkov and Yury Konovalov's work. + +@subheading Font configuration + +In XEmacs, font configuration is handled via @emph{faces}. Currently +XEmacs uses a special type of @emph{font specifier} to map XEmacs +locales to font names. Especially under X11, this can cause annoying +problems because of the unreliability of X servers' mappings from +@samp{XLFD} names to X11 fonts, over which XEmacs has no influence +whatsoever. However, the @file{fontconfig} library which is used with +@file{Xft} provides much more reliable mapping, along with a more +reliably parsable naming scheme similar to that used by TrueType fonts +on MS Windows and the Macintosh. + +@subheading fontconfig + +Fontconfig is dramatically different from the X model in several ways. +In particular, when queried for a font @emph{fontconfig always returns a +font}, whereas X queries may return ``not found.'' However, the font +returned need not be anything like the desired font. This is not really +a problem in practice, because users generally have a pretty good idea +of what fonts are available on their display. However, users should be +aware that as of XEmacs 21.5.26 the font selection internals have not +been revised to account for this radically different model, so some +surprising results are possible. + +From the user's point of view, @file{fontconfig} provides a naming +convention which is @emph{precise}, @emph{accurate}, and +@emph{convenient}. Precision means that all properties available in the +programming API can be individually specified. Accuracy means that the +truename of the font is exactly the list of all properties specified by +the font. Thus, the anomolies that occur with XLFDs on many servers +(including modern Linux distributions with XFree86 or X.org servers) +cannot occur. Convenience is subjective, of course. However, +@file{fontconfig} provides a configuration system which (1) explicitly +specifies the defaults and substitutions that will be made in processing +user queries, (2) allows the user to specify search configuration, +abbreviations, substitutions, and defaults that override the system's, +in the same format as used by system files, and (3) allows flexible +aliases that can resolve to any of several actual fonts depending on +which fonts are installed. + +Further, a @dfn{standard minimal configuration} is defined that ensures +that at least the @emph{serif}, @emph{sans-serif}, and @emph{monospace} +font aliases are available on all @file{fontconfig} systems. + +@subheading fontconfig font names + +@file{fontconfig} font names are very regular, and constitute a precise +and extensible specification of a font's properties. + +The basic @file{fontconfig} font name has three components: the font +family name, the size, and a list of named attribute fields. All +attribute names and values are strings encoded in Unicode UTF-8, or +decimal numbers with optional decimal point and fraction. The +characters @samp{-}, @samp{:}, @samp{,}, @samp{=}, and @samp{\} are +syntactically significant to @file{fontconfig}. They may be used in +font name components by the familiar mechanism of backslash escaping. +This simply removes any special meaning from the following character. +It is always safe to use an escape even if it is not needed. + +Most string values are case-insensitive, but this is attribute-specific. + +The @dfn{font family name} is an arbitrary string, which may contain any +character, including spaces, hyphens, and commas. Don't forget to +escape hyphens, colons, commas, and backslashes! + +The @dfn{size} is a decimal number with optional decimal point and +fractional part. It is interpreted as point size. + +A @dfn{named attribute field} is a key-value pair separated by an equal +sign. Some attributes have predefined semantics. (These include such +familiar attributes as @samp{slant} and @samp{dpi} -- note that +@file{fontconfig} does not distinguish between vertical and horizontal +resolution! + +The basic syntax of a font name is simple and regular. The @emph{font +family name} comes first, followed by a hyphen and the @emph{size}, +followed by a list of @emph{named attribute fields}, each introduced by +a colon: + +@example +@var{font family name}-@var{size}:@var{key1}=@var{value1}:@var{key2}=@var{value2}... +@end example + +There are four extensions to the basic syntax. First, all of the +fields are optional. If size is omitted, the hyphen should be omitted +as well. There should never be a trailing colon. Note that +@file{fontconfig} does @emph{not} interpret an omitted field as +``default to current.'' @file{fontconfig} does not have access to that +context. Instead, omitted fields are filled in according to a set of +defaults specified in the system @file{fonts.conf} file and in the +user's @file{.fonts.cont} file. The user's configuration gets +precedence, of course. + +The second is that the @emph{font family name}, the @emph{size}, and the +@emph{value} component of a @emph{named attribute field} may be a +comma-separated list of values. This is called a @dfn{pattern}. In +queries, @file{fontconfig} tries to match each entry in the list in +order. (I suspect that order of attributes is also significant. +@emph{I.e.}, font family always gets highest precedence, followed by +size, followed by the remaining named attributes. Testing and reports +to the @email{xemacs-beta@@xemacs.org,XEmacs Beta Testers mailing list} +are very welcome!) + +The third is the definition of @dfn{constants} to represent numerical +values. For example, both @samp{slant} and @samp{weight} are defined as +integer attributes, but the magnitudes are arbitrary; only the ordering +and relative distances are useful. (``Relative distance'' is used to +implement the concept that although strictly speaking @emph{italic} and +@emph{oblique} are different faces, most users don't know the +difference, and even professional typographers would agree that they are +much closer to each other than either is to @emph{roman}.) So +@emph{constants} like @samp{roman} (0) and @samp{italic} (100) are +defined for @samp{slant}, and @samp{medium} (100) and @samp{bold} (200) +are defined for @samp{weight}. + +The fourth is that a @dfn{style} may be defined as an alias for an +instance of a @emph{named attribute field}, that is, specifying both key +and value. The @emph{styles} @samp{bold}, an alias for +@samp{weight=200}, and @samp{italic}, an alias for @samp{slant=100}, are +commonly used. + +Styles and constants can be defined by the application. XEmacs +currently defines none, but suggestions are welcome if some convenient +alias is lacking from @file{fontconfig}. Note that we will not provide +additional aliases where standard ones exist, @emph{e.g.}, @samp{heavy} +as an additional alias for @samp{bold} would almost certainly be +rejected. These cause more confusion than they are worth, and would +decrease portability of user specifications to other applications. + +(Attributes can also be defined, but they must be implemented by the +fonts to be useful. Until XEmacs provides its own fonts with +non-standardized attributes, this is not useful.) + +Here are some examples of font names and query patterns: + +@example +Times-12 12-point Times Roman +Times-12:bold 12-point Times Bold +Courier:italic Courier Italic in the default size +Monospace:matrix=1 .1 0 1 The user's preferred monospace font + with artificial obliquing +Mikachan\-PB-16 16-point Mikachan-PB +LucidaTypewriter,Courier-9 9-point LucidaTypewriter if available, + otherwise 9-point Courier +@end example + +Note how @emph{styles} are used in the second and third examples, how +@samp{matrix} has a complex value containing spaces, and the +escaped hyphen in the font family name @samp{Mikachan\-PB}. + +@c #### FIXME here and also in fontconfig.texi (in general-docs package). +Here is a (somewhat outdated) list of current standard named attributes: + +@example +Property CPP symbol Type Description + +family FC_FAMILY String Font family name +style FC_STYLE String Font style. Overrides weight and slant +slant FC_SLANT Int Italic, oblique or roman +weight FC_WEIGHT Int Light, medium, demibold, bold or black +size FC_SIZE Double Point size +aspect FC_ASPECT Double Stretch glyphs horizontally, then hint +pixelsize FC_PIXEL_SIZE Double Pixel size +spacing FC_SPACING Int Proportional, monospace or charcell +foundry FC_FOUNDRY String Font foundry name +antialias FC_ANTIALIAS Bool Should glyphs be antialiased? +hinting FC_HINTING Bool Should the rasterizer use hinting? +verticallayout FC_VERTICAL_LAYOUT Bool Use vertical layout +autohint FC_AUTOHINT Bool Use autohinter instead of normal hinter +globaladvance FC_GLOBAL_ADVANCE Bool Use font global advance data +file FC_FILE String The filename holding the font +index FC_INDEX Int The index of the font within the file +ftface FC_FT_FACE FT_Face Use the specified FreeType face object +rasterizer FC_RASTERIZER String Which rasterizer is in use +outline FC_OUTLINE Bool Whether the glyphs are outlines +scalable FC_SCALABLE Bool Whether glyphs can be scaled +scale FC_SCALE Double Point->pixel conversion scale factor +dpi FC_DPI Double Target dots per inch +rgba FC_RGBA Int unknown, rgb, bgr, vrgb, vbgr, none + - subpixel geometry +source FC_SOURCE String X11, freetype +minspace FC_MINSPACE Bool Eliminate leading from line spacing +charset FC_CHARSET CharSet Unicode chars encoded by the font +lang FC_LANG String List of RFC-3066-style languages + this font supports +fontversion FC_FONTVERSION Int From 'head' table +@end example + +Here is a list of current standard constants: + +@example +Constant Property CPP symbol + +light weight FC_WEIGHT_LIGHT +medium weight FC_WEIGHT_MEDIUM +demibold weight FC_WEIGHT_DEMIBOLD +bold weight FC_WEIGHT_BOLD +black weight FC_WEIGHT_BLACK +roman slant FC_SLANT_ROMAN +italic slant FC_SLANT_ITALIC +oblique slant FC_SLANT_OBLIQUE +proportional spacing FC_PROPORTIONAL +mono spacing FC_MONO +charcell spacing FC_CHARCELL +unknown rgba FC_RGBA_UNKNOWN +rgb rgba FC_RGBA_RGB +bgr rgba FC_RGBA_BGR +vrgb rgba FC_RGBA_VRGB +vbgr rgba FC_RGBA_VBGR +none rgba FC_RGBA_NONE +@end example + +Note that this is the @file{fontconfig} API list; you can expect that +XEmacs will define corresponding keywords by substituting @samp{:} for +the leading @samp{FC_}, @samp{-} for @samp{_}, removing the key of the +attribute if present, and lowercasing the name. Thus +@samp{FC_WEIGHT_BOLD} becomes @samp{:bold}. +@kbd{M-x apropos RET fc-.*-mapping} will give a list of variables each +of which lists such keywords and their meanings. + +@subheading Font menus + +The @samp{Options->Font} and @samp{Options->Font Sizes} menus are +broken, by design, not just by @file{Xft}. The problem is that many +fonts are unavailable because they don't match the current size---which +is very strange, since @file{Xft} fonts are of course scalable. But the +whole idea of requiring that the font match the size is strange. And +the @samp{Options->Font Weights} menu is just disabled, and has been for +eons. + +@subheading X resources + +Currently there are @emph{four} treatments of font resources. There are +the @samp{XEmacs.@var{face}.attributeFont} resources used to set a +single global font specification. In the widgets, some (still) have a +@samp{font} resource using the automatic @file{Xt} resource conversion +to X's @samp{FontStruct}, some have separate @samp{font} and @samp{xftFont} +resources with the former automatically converted to @samp{FontStruct} +by @file{Xt} and the latter left as a string, to be converted to a +fontconfig @samp{FcPattern} by +@samp{FcParseName} later, and some have a single @samp{font} resource +which is converted to @samp{FontStruct} by @file{Xt} or the latter left +as a string, depending on whether @file{Xft} was enabled by +@samp{configure} or not. + +Eventually these should be converted to use the face +approach, perhaps with some way to set specifications for individual +widgets, frames, or buffers. This will require some careful design work +to incorporate face support in the widgets. Stephen's current thinking +is that XEmacs should just accept any +or all of @samp{font}, @samp{fontSet}, and @samp{fontList} resources, +treat them all as lists of font names, either @samp{XLFD}- or +@file{fontconfig}-style, parse them ourselves (ie, not use the @file{Xt} +resource manager), and add them to font specifiers as appropriate. But +this will require a bit of thought to obey POLA vis-a-vis usual @file{Xt} +conventions. + +@subheading Specifiers, charsets, and languages + +Traditionally Mule uses a rather rigid and low-level abstraction, the +@emph{charset}, to characterize font repertoires. Unfortunately, +support for a given charset is generally neither necessary nor +sufficient to support a language. Worse, in XEmacs's current +implementation Xft doesn't help much. Instead you need to add the fonts +for different charsets to the font specifier in the right order. + +There currently is no explicit way to specify that a particular font be +used only for a given language. However, since many fonts support only +a limited repertoire such as ISO 8859/1, you can use the precedence of +specifications for a given specifier locale to get something of this +effect for non-Latin character sets. This will normally work rather +poorly for multiple Latin character sets, however, because the +repertoires tend to have large amounts of overlap. Support for +specifying font by @emph{language} as well as by character set is +planned. + +Because fonts supporting other languages tend to support English as +well, if you want to use one font for English and another for the other +language, you must use the @code{append} method when adding font +specifications for the @emph{other} language. + +However, this simple method leaves you with a problem if you want to +change the other language's font: you have to remove the existing +specification so it won't shadow the new one when you append. + +In order to provide a convenient way to change ``other-language fonts'', +I use @code{remove-tag-set-append} and @code{define-specifier-tag} like +this: + +@example +(define-specifier-tag 'lang-ja) +;; No, I don't try to do real work with this font! But it makes it +;; obvious that I got the requested font. :-) +(set-face-font 'default "AirCut-14") +(set-face-font 'default "Kochi Mincho-14" nil '(lang-ja) 'append) +;; Oops, too sober. Try something to match AirCut. +(set-face-font 'default "Mikachan-14" + nil '(lang-ja) 'remove-tag-set-append) +@end example + +The only way to configure widget fonts at the present time is to use X +resources (or hack the source and rebuild). Currently supported widgets +are +@itemize +@item +menubars +@item +tab controls +@end itemize + +Here are the resources I use. @strong{Warning:} @emph{This interface +will change. Pay attention to beta announcements, and complain loudly +if changes aren't documented here!} The tab control and menubar have +separate Font and XftFont resources, and use the X resource manager to +instantiate a FontStruct from the Font resource. There is no converter +facility for XftFont yet, and creating one that handles both FontStruct +and XftFont depending on XEmacs's configuration and the font name seems +error-prone at best. Probably we will use a simple string +representation for this resource, and convert to a face in XEmacs rather +than a font in Xt/Xft. +@example +XEmacs*Tabs.xftFont: Bitstream Vera Sans-16 +XEmacs*menubar*xftFont: Bitstream Vera Sans-16 +XEmacs.modeline.attributeFont: Bitstream Charter-16 +XEmacs.default.attributeFont: Bitstream Vera Sans Mono-16 +@end example +I highly recommend use of a proportional font in the modeline because it +allows a lot more text to fit there. +@c Previously the font sizes were quite varied, and there was a comment +@c that this weirdness gave good balance. This isn't true on my main +@c platform, Mac OS X, and needs to be rechecked on Linux, where it was +@c observed. + +@subheading Known Problems + +@table @code +@item Options->Font +@itemx Options->Font Size +These menus don't work. All fonts are greyed out. All sizes are +available, but many (most?) faces don't change size, in particular, +@samp{default} does not. + +@item Antialiased text bleeding outside of reported extent +This is most obvious with the underscore character in that +font, and with cursors. The bottom of the underscore is antialiased, +and insertions or deletions in the same line before the underscore leave +a series of "phantom" underlines. + +I think this is probably an Xft bug, but I'm not sure. +@end table + +@subheading Variables Used with Xft and Fontconfig + +@defvar xft-debug-level + +Level of debugging messages to issue to stderr for @var{Xft}. +A nonnegative integer. Set to 0 to suppress all warnings. +Default is 1 to ensure a minimum of debugging output at initialization. +Higher levels give more information. +@end defvar + +@defvar xft-version + +The major version number of the Xft library compiled with. +@end defvar + +@defvar xft-xlfd-font-regexp + +Regular expression matching XLFD font names. +@end defvar + @node Frame Components @section Frame Components diff --text -u 'xemacs-21.5.26/man/xemacs/xemacs.texi' 'xemacs-21.5.27/man/xemacs/xemacs.texi' Index: ./man/xemacs/xemacs.texi --- ./man/xemacs/xemacs.texi Tue Feb 1 05:08:50 2005 +++ ./man/xemacs/xemacs.texi Tue May 9 14:00:30 2006 @@ -605,6 +605,10 @@ * Init Examples:: How to do some things with an init file. * Terminal Init:: Each terminal type can have an init file. +Faces + +* Xft Font Customization:: Configuring the next generation of fonts. + Dealing with XEmacs Trouble * Stuck Recursive:: `[...]' in mode line around the parentheses. diff --text -u 'xemacs-21.5.26/modules/ChangeLog' 'xemacs-21.5.27/modules/ChangeLog' Index: ./modules/ChangeLog --- ./modules/ChangeLog Sat Apr 1 03:46:15 2006 +++ ./modules/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,7 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/netinstall/ChangeLog' 'xemacs-21.5.27/netinstall/ChangeLog' Index: ./netinstall/ChangeLog --- ./netinstall/ChangeLog Sat Apr 1 03:46:15 2006 +++ ./netinstall/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,7 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/nt/ChangeLog' 'xemacs-21.5.27/nt/ChangeLog' Index: ./nt/ChangeLog --- ./nt/ChangeLog Sat Apr 1 03:46:15 2006 +++ ./nt/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,13 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + +2006-04-26 Adrian Aichner + + * xemacs.dsw: Updated by MS VS 6.0. + * xemacs.dsp: Convert to DOS format, as suggested by + Robinows@aol.com. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/nt/installer/Wise/ChangeLog' 'xemacs-21.5.27/nt/installer/Wise/ChangeLog' Index: ./nt/installer/Wise/ChangeLog --- ./nt/installer/Wise/ChangeLog Sat Apr 1 03:46:15 2006 +++ ./nt/installer/Wise/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,7 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/nt/xemacs.dsp' 'xemacs-21.5.27/nt/xemacs.dsp' Index: ./nt/xemacs.dsp --- ./nt/xemacs.dsp Fri Nov 25 10:41:50 2005 +++ ./nt/xemacs.dsp Thu Apr 27 06:22:22 2006 @@ -1,1417 +1,1417 @@ -# Microsoft Developer Studio Project File - Name="xemacs" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) External Target" 0x0106 - -CFG=xemacs - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "xemacs.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "xemacs.mak" CFG="xemacs - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "xemacs - Win32 Release" (based on "Win32 (x86) External Target") -!MESSAGE "xemacs - Win32 Debug" (based on "Win32 (x86) External Target") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" - -!IF "$(CFG)" == "xemacs - Win32 Release" - -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Cmd_Line "NMAKE /f xemacs.mak" -# PROP BASE Rebuild_Opt "/a" -# PROP BASE Target_File "xemacs.exe" -# PROP BASE Bsc_Name "xemacs.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\src" -# PROP Intermediate_Dir "obj" -# PROP Cmd_Line "NMAKE /f xemacs.mak" -# PROP Rebuild_Opt "/a" -# PROP Target_File "xemacs.exe" -# PROP Bsc_Name "xemacs.bsc" -# PROP Target_Dir "" - -!ELSEIF "$(CFG)" == "xemacs - Win32 Debug" - -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Cmd_Line "NMAKE /f xemacs.mak" -# PROP BASE Rebuild_Opt "/a" -# PROP BASE Target_File "xemacs.exe" -# PROP BASE Bsc_Name "xemacs.bsc" -# PROP BASE Target_Dir "" -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\src" -# PROP Intermediate_Dir "obj" -# PROP Cmd_Line "NMAKE /k /f xemacs.mak" -# PROP Rebuild_Opt "/a" -# PROP Target_File "..\src\xemacs.exe" -# PROP Bsc_Name "..\src\temacs.bsc" -# PROP Target_Dir "" - -!ENDIF - -# Begin Target - -# Name "xemacs - Win32 Release" -# Name "xemacs - Win32 Debug" - -!IF "$(CFG)" == "xemacs - Win32 Release" - -!ELSEIF "$(CFG)" == "xemacs - Win32 Debug" - -!ENDIF - -# Begin Source File - -SOURCE=..\src\abbrev.c -# End Source File -# Begin Source File - -SOURCE=..\src\alloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\alloca.c -# End Source File -# Begin Source File - -SOURCE=..\src\backtrace.h -# End Source File -# Begin Source File - -SOURCE="..\src\balloon-x.c" -# End Source File -# Begin Source File - -SOURCE=..\src\balloon_help.c -# End Source File -# Begin Source File - -SOURCE=..\src\balloon_help.h -# End Source File -# Begin Source File - -SOURCE=..\src\bitmaps.h -# End Source File -# Begin Source File - -SOURCE=..\src\blocktype.c -# End Source File -# Begin Source File - -SOURCE=..\src\blocktype.h -# End Source File -# Begin Source File - -SOURCE="..\src\broken-sun.h" -# End Source File -# Begin Source File - -SOURCE=..\src\buffer.c -# End Source File -# Begin Source File - -SOURCE=..\src\buffer.h -# End Source File -# Begin Source File - -SOURCE=..\src\bufslots.h -# End Source File -# Begin Source File - -SOURCE=..\src\bytecode.c -# End Source File -# Begin Source File - -SOURCE=..\src\bytecode.h -# End Source File -# Begin Source File - -SOURCE=..\src\callint.c -# End Source File -# Begin Source File - -SOURCE=..\src\casefiddle.c -# End Source File -# Begin Source File - -SOURCE=..\src\casetab.c -# End Source File -# Begin Source File - -SOURCE=..\src\chartab.c -# End Source File -# Begin Source File - -SOURCE=..\src\chartab.h -# End Source File -# Begin Source File - -SOURCE=..\src\cm.c -# End Source File -# Begin Source File - -SOURCE=..\src\cm.h -# End Source File -# Begin Source File - -SOURCE=..\src\cmdloop.c -# End Source File -# Begin Source File - -SOURCE=..\src\cmds.c -# End Source File -# Begin Source File - -SOURCE=..\src\commands.h -# End Source File -# Begin Source File - -SOURCE=..\src\config.h -# End Source File -# Begin Source File - -SOURCE=..\src\conslots.h -# End Source File -# Begin Source File - -SOURCE="..\src\console-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\console-msw.h" -# End Source File -# Begin Source File - -SOURCE="..\src\console-stream.c" -# End Source File -# Begin Source File - -SOURCE="..\src\console-stream.h" -# End Source File -# Begin Source File - -SOURCE="..\src\console-tty.c" -# End Source File -# Begin Source File - -SOURCE="..\src\console-tty.h" -# End Source File -# Begin Source File - -SOURCE="..\src\console-x.c" -# End Source File -# Begin Source File - -SOURCE="..\src\console-x.h" -# End Source File -# Begin Source File - -SOURCE=..\src\console.c -# End Source File -# Begin Source File - -SOURCE=..\src\console.h -# End Source File -# Begin Source File - -SOURCE=..\src\data.c -# End Source File -# Begin Source File - -SOURCE=..\src\database.c -# End Source File -# Begin Source File - -SOURCE=..\src\database.h -# End Source File -# Begin Source File - -SOURCE=..\src\debug.c -# End Source File -# Begin Source File - -SOURCE=..\src\debug.h -# End Source File -# Begin Source File - -SOURCE="..\src\device-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\device-tty.c" -# End Source File -# Begin Source File - -SOURCE="..\src\device-x.c" -# End Source File -# Begin Source File - -SOURCE=..\src\device.c -# End Source File -# Begin Source File - -SOURCE=..\src\device.h -# End Source File -# Begin Source File - -SOURCE=..\src\dgif_lib.c -# End Source File -# Begin Source File - -SOURCE="..\src\dialog-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\dialog-x.c" -# End Source File -# Begin Source File - -SOURCE=..\src\dialog.c -# End Source File -# Begin Source File - -SOURCE="..\src\dired-msw.c" -# End Source File -# Begin Source File - -SOURCE=..\src\dired.c -# End Source File -# Begin Source File - -SOURCE=..\src\doc.c -# End Source File -# Begin Source File - -SOURCE=..\src\doprnt.c -# End Source File -# Begin Source File - -SOURCE=..\src\dragdrop.c -# End Source File -# Begin Source File - -SOURCE=..\src\dragdrop.h -# End Source File -# Begin Source File - -SOURCE=..\src\dynarr.c -# End Source File -# Begin Source File - -SOURCE=..\src\ecrt0.c -# End Source File -# Begin Source File - -SOURCE=..\src\editfns.c -# End Source File -# Begin Source File - -SOURCE=..\src\eldap.c -# End Source File -# Begin Source File - -SOURCE=..\src\eldap.h -# End Source File -# Begin Source File - -SOURCE=..\src\elhash.c -# End Source File -# Begin Source File - -SOURCE=..\src\elhash.h -# End Source File -# Begin Source File - -SOURCE=..\src\Emacs.ad.h -# End Source File -# Begin Source File - -SOURCE=..\src\emacs.c -# End Source File -# Begin Source File - -SOURCE=..\src\EmacsFrame.c -# End Source File -# Begin Source File - -SOURCE=..\src\EmacsFrame.h -# End Source File -# Begin Source File - -SOURCE=..\src\EmacsFrameP.h -# End Source File -# Begin Source File - -SOURCE=..\src\EmacsManager.c -# End Source File -# Begin Source File - -SOURCE=..\src\EmacsManager.h -# End Source File -# Begin Source File - -SOURCE=..\src\EmacsManagerP.h -# End Source File -# Begin Source File - -SOURCE="..\src\EmacsShell-sub.c" -# End Source File -# Begin Source File - -SOURCE=..\src\EmacsShell.c -# End Source File -# Begin Source File - -SOURCE=..\src\EmacsShell.h -# End Source File -# Begin Source File - -SOURCE=..\src\EmacsShellP.h -# End Source File -# Begin Source File - -SOURCE=..\src\emodules.c -# End Source File -# Begin Source File - -SOURCE=..\src\emodules.h -# End Source File -# Begin Source File - -SOURCE=..\src\esd.c -# End Source File -# Begin Source File - -SOURCE=..\src\eval.c -# End Source File -# Begin Source File - -SOURCE="..\src\event-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\event-stream.c" -# End Source File -# Begin Source File - -SOURCE="..\src\event-tty.c" -# End Source File -# Begin Source File - -SOURCE="..\src\event-unixoid.c" -# End Source File -# Begin Source File - -SOURCE="..\src\event-Xt.c" -# End Source File -# Begin Source File - -SOURCE="..\src\events-mod.h" -# End Source File -# Begin Source File - -SOURCE=..\src\events.c -# End Source File -# Begin Source File - -SOURCE=..\src\events.h -# End Source File -# Begin Source File - -SOURCE=..\src\extents.c -# End Source File -# Begin Source File - -SOURCE=..\src\extents.h -# End Source File -# Begin Source File - -SOURCE="..\src\ExternalClient-Xlib.c" -# End Source File -# Begin Source File - -SOURCE=..\src\ExternalClient.c -# End Source File -# Begin Source File - -SOURCE=..\src\ExternalClient.h -# End Source File -# Begin Source File - -SOURCE=..\src\ExternalClientP.h -# End Source File -# Begin Source File - -SOURCE=..\src\ExternalShell.c -# End Source File -# Begin Source File - -SOURCE=..\src\ExternalShell.h -# End Source File -# Begin Source File - -SOURCE=..\src\ExternalShellP.h -# End Source File -# Begin Source File - -SOURCE="..\src\extw-Xlib.c" -# End Source File -# Begin Source File - -SOURCE="..\src\extw-Xlib.h" -# End Source File -# Begin Source File - -SOURCE="..\src\extw-Xt.c" -# End Source File -# Begin Source File - -SOURCE="..\src\extw-Xt.h" -# End Source File -# Begin Source File - -SOURCE=..\src\faces.c -# End Source File -# Begin Source File - -SOURCE=..\src\faces.h -# End Source File -# Begin Source File - -SOURCE="..\src\file-coding.c" -# End Source File -# Begin Source File - -SOURCE="..\src\file-coding.h" -# End Source File -# Begin Source File - -SOURCE=..\src\fileio.c -# End Source File -# Begin Source File - -SOURCE=..\src\filelock.c -# End Source File -# Begin Source File - -SOURCE=..\src\filemode.c -# End Source File -# Begin Source File - -SOURCE=..\src\floatfns.c -# End Source File -# Begin Source File - -SOURCE=..\src\fns.c -# End Source File -# Begin Source File - -SOURCE="..\src\font-lock.c" -# End Source File -# Begin Source File - -SOURCE="..\src\frame-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\frame-tty.c" -# End Source File -# Begin Source File - -SOURCE="..\src\frame-x.c" -# End Source File -# Begin Source File - -SOURCE=..\src\frame.c -# End Source File -# Begin Source File - -SOURCE=..\src\frame.h -# End Source File -# Begin Source File - -SOURCE=..\src\frameslots.h -# End Source File -# Begin Source File - -SOURCE="..\src\free-hook.c" -# End Source File -# Begin Source File - -SOURCE=..\src\gc.c -# End Source File -# Begin Source File - -SOURCE=..\src\gc.h -# End Source File -# Begin Source File - -SOURCE=..\src\general.c -# End Source File -# Begin Source File - -SOURCE=..\src\getloadavg.c -# End Source File -# Begin Source File - -SOURCE=..\src\getpagesize.h -# End Source File -# Begin Source File - -SOURCE=..\src\gif_io.c -# End Source File -# Begin Source File - -SOURCE=..\src\gifrlib.h -# End Source File -# Begin Source File - -SOURCE="..\src\glyphs-eimage.c" -# End Source File -# Begin Source File - -SOURCE="..\src\glyphs-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\glyphs-msw.h" -# End Source File -# Begin Source File - -SOURCE="..\src\glyphs-widget.c" -# End Source File -# Begin Source File - -SOURCE="..\src\glyphs-x.c" -# End Source File -# Begin Source File - -SOURCE="..\src\glyphs-x.h" -# End Source File -# Begin Source File - -SOURCE=..\src\glyphs.c -# End Source File -# Begin Source File - -SOURCE=..\src\glyphs.h -# End Source File -# Begin Source File - -SOURCE=..\src\gmalloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\gpmevent.c -# End Source File -# Begin Source File - -SOURCE=..\src\gpmevent.h -# End Source File -# Begin Source File - -SOURCE="..\src\gui-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\gui-x.c" -# End Source File -# Begin Source File - -SOURCE="..\src\gui-x.h" -# End Source File -# Begin Source File - -SOURCE=..\src\gui.c -# End Source File -# Begin Source File - -SOURCE=..\src\gui.h -# End Source File -# Begin Source File - -SOURCE=..\src\gutter.c -# End Source File -# Begin Source File - -SOURCE=..\src\gutter.h -# End Source File -# Begin Source File - -SOURCE=..\src\hash.c -# End Source File -# Begin Source File - -SOURCE=..\src\hash.h -# End Source File -# Begin Source File - -SOURCE=..\src\hftctl.c -# End Source File -# Begin Source File - -SOURCE=..\src\hpplay.c -# End Source File -# Begin Source File - -SOURCE=..\src\imgproc.c -# End Source File -# Begin Source File - -SOURCE=..\src\imgproc.h -# End Source File -# Begin Source File - -SOURCE=..\src\indent.c -# End Source File -# Begin Source File - -SOURCE=..\src\inline.c -# End Source File -# Begin Source File - -SOURCE="..\src\input-method-motif.c" -# End Source File -# Begin Source File - -SOURCE="..\src\input-method-xfs.c" -# End Source File -# Begin Source File - -SOURCE="..\src\input-method-xlib.c" -# End Source File -# Begin Source File - -SOURCE=..\src\insdel.c -# End Source File -# Begin Source File - -SOURCE=..\src\insdel.h -# End Source File -# Begin Source File - -SOURCE=..\src\intl.c -# End Source File -# Begin Source File - -SOURCE="..\src\iso-wide.h" -# End Source File -# Begin Source File - -SOURCE=..\src\keymap.c -# End Source File -# Begin Source File - -SOURCE=..\src\keymap.h -# End Source File -# Begin Source File - -SOURCE=..\src\lastfile.c -# End Source File -# Begin Source File - -SOURCE=..\src\libsst.c -# End Source File -# Begin Source File - -SOURCE=..\src\libsst.h -# End Source File -# Begin Source File - -SOURCE=..\src\libst.h -# End Source File -# Begin Source File - -SOURCE="..\src\line-number.c" -# End Source File -# Begin Source File - -SOURCE="..\src\line-number.h" -# End Source File -# Begin Source File - -SOURCE=..\src\linuxplay.c -# End Source File -# Begin Source File - -SOURCE="..\src\lisp-disunion.h" -# End Source File -# Begin Source File - -SOURCE="..\src\lisp-union.h" -# End Source File -# Begin Source File - -SOURCE=..\src\lisp.h -# End Source File -# Begin Source File - -SOURCE=..\src\lread.c -# End Source File -# Begin Source File - -SOURCE=..\src\lrecord.h -# End Source File -# Begin Source File - -SOURCE=..\src\lstream.c -# End Source File -# Begin Source File - -SOURCE=..\src\lstream.h -# End Source File -# Begin Source File - -SOURCE=..\src\macros.c -# End Source File -# Begin Source File - -SOURCE=..\src\macros.h -# End Source File -# Begin Source File - -SOURCE=..\src\malloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\marker.c -# End Source File -# Begin Source File - -SOURCE=..\src\mc-alloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\mc-alloc.h -# End Source File -# Begin Source File - -SOURCE=..\src\md5.c -# End Source File -# Begin Source File - -SOURCE="..\src\mem-limits.h" -# End Source File -# Begin Source File - -SOURCE="..\src\menubar-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\menubar-msw.h" -# End Source File -# Begin Source File - -SOURCE="..\src\menubar-x.c" -# End Source File -# Begin Source File - -SOURCE=..\src\menubar.c -# End Source File -# Begin Source File - -SOURCE=..\src\menubar.h -# End Source File -# Begin Source File - -SOURCE=..\src\minibuf.c -# End Source File -# Begin Source File - -SOURCE=..\src\miscplay.c -# End Source File -# Begin Source File - -SOURCE=..\src\miscplay.h -# End Source File -# Begin Source File - -SOURCE="..\src\mule-canna.c" -# End Source File -# Begin Source File - -SOURCE="..\src\mule-ccl.c" -# End Source File -# Begin Source File - -SOURCE="..\src\mule-ccl.h" -# End Source File -# Begin Source File - -SOURCE="..\src\mule-charset.c" -# End Source File -# Begin Source File - -SOURCE="..\src\mule-charset.h" -# End Source File -# Begin Source File - -SOURCE="..\src\mule-mcpath.c" -# End Source File -# Begin Source File - -SOURCE="..\src\mule-mcpath.h" -# End Source File -# Begin Source File - -SOURCE="..\src\mule-wnnfns.c" -# End Source File -# Begin Source File - -SOURCE=..\src\mule.c -# End Source File -# Begin Source File - -SOURCE=..\src\nas.c -# End Source File -# Begin Source File - -SOURCE=..\src\ndir.h -# End Source File -# Begin Source File - -SOURCE=..\src\nt.c -# End Source File -# Begin Source File - -SOURCE=..\src\nt.h -# End Source File -# Begin Source File - -SOURCE=..\src\ntheap.c -# End Source File -# Begin Source File - -SOURCE=..\src\ntheap.h -# End Source File -# Begin Source File - -SOURCE=..\src\ntplay.c -# End Source File -# Begin Source File - -SOURCE=..\src\ntproc.c -# End Source File -# Begin Source File - -SOURCE="..\src\objects-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\objects-msw.h" -# End Source File -# Begin Source File - -SOURCE="..\src\objects-tty.c" -# End Source File -# Begin Source File - -SOURCE="..\src\objects-tty.h" -# End Source File -# Begin Source File - -SOURCE="..\src\objects-x.c" -# End Source File -# Begin Source File - -SOURCE="..\src\objects-x.h" -# End Source File -# Begin Source File - -SOURCE=..\src\objects.c -# End Source File -# Begin Source File - -SOURCE=..\src\objects.h -# End Source File -# Begin Source File - -SOURCE="..\src\offix-cursors.h" -# End Source File -# Begin Source File - -SOURCE="..\src\offix-types.h" -# End Source File -# Begin Source File - -SOURCE=..\src\offix.c -# End Source File -# Begin Source File - -SOURCE=..\src\offix.h -# End Source File -# Begin Source File - -SOURCE=..\src\opaque.c -# End Source File -# Begin Source File - -SOURCE=..\src\opaque.h -# End Source File -# Begin Source File - -SOURCE=..\src\paths.h -# End Source File -# Begin Source File - -SOURCE="..\src\pre-crt0.c" -# End Source File -# Begin Source File - -SOURCE=..\src\print.c -# End Source File -# Begin Source File - -SOURCE="..\src\process-nt.c" -# End Source File -# Begin Source File - -SOURCE="..\src\process-unix.c" -# End Source File -# Begin Source File - -SOURCE=..\src\process.c -# End Source File -# Begin Source File - -SOURCE=..\src\process.h -# End Source File -# Begin Source File - -SOURCE=..\src\procimpl.h -# End Source File -# Begin Source File - -SOURCE=..\src\profile.c -# End Source File -# Begin Source File - -SOURCE=..\src\ralloc.c -# End Source File -# Begin Source File - -SOURCE=..\src\rangetab.c -# End Source File -# Begin Source File - -SOURCE=..\src\rangetab.h -# End Source File -# Begin Source File - -SOURCE=..\src\realpath.c -# End Source File -# Begin Source File - -SOURCE="..\src\redisplay-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\redisplay-output.c" -# End Source File -# Begin Source File - -SOURCE="..\src\redisplay-tty.c" -# End Source File -# Begin Source File - -SOURCE="..\src\redisplay-x.c" -# End Source File -# Begin Source File - -SOURCE=..\src\redisplay.c -# End Source File -# Begin Source File - -SOURCE=..\src\redisplay.h -# End Source File -# Begin Source File - -SOURCE=..\src\regex.c -# End Source File -# Begin Source File - -SOURCE=..\src\regex.h -# End Source File -# Begin Source File - -SOURCE="..\src\scrollbar-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\scrollbar-msw.h" -# End Source File -# Begin Source File - -SOURCE="..\src\scrollbar-x.c" -# End Source File -# Begin Source File - -SOURCE="..\src\scrollbar-x.h" -# End Source File -# Begin Source File - -SOURCE=..\src\scrollbar.c -# End Source File -# Begin Source File - -SOURCE=..\src\scrollbar.h -# End Source File -# Begin Source File - -SOURCE=..\src\search.c -# End Source File -# Begin Source File - -SOURCE="..\src\select-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\select-x.c" -# End Source File -# Begin Source File - -SOURCE=..\src\select.c -# End Source File -# Begin Source File - -SOURCE=..\src\select.h -# End Source File -# Begin Source File - -SOURCE=..\src\sgiplay.c -# End Source File -# Begin Source File - -SOURCE=..\src\sheap.c -# End Source File -# Begin Source File - -SOURCE=..\src\signal.c -# End Source File -# Begin Source File - -SOURCE=..\src\sound.c -# End Source File -# Begin Source File - -SOURCE=..\src\specifier.c -# End Source File -# Begin Source File - -SOURCE=..\src\specifier.h -# End Source File -# Begin Source File - -SOURCE=..\src\strcat.c -# End Source File -# Begin Source File - -SOURCE=..\src\strcmp.c -# End Source File -# Begin Source File - -SOURCE=..\src\strcpy.c -# End Source File -# Begin Source File - -SOURCE=..\src\strftime.c -# End Source File -# Begin Source File - -SOURCE="..\src\sunOS-fix.c" -# End Source File -# Begin Source File - -SOURCE=..\src\sunplay.c -# End Source File -# Begin Source File - -SOURCE=..\src\sunpro.c -# End Source File -# Begin Source File - -SOURCE=..\src\symbols.c -# End Source File -# Begin Source File - -SOURCE=..\src\symeval.h -# End Source File -# Begin Source File - -SOURCE=..\src\symsinit.h -# End Source File -# Begin Source File - -SOURCE=..\src\syntax.c -# End Source File -# Begin Source File - -SOURCE=..\src\syntax.h -# End Source File -# Begin Source File - -SOURCE=..\src\sysdep.c -# End Source File -# Begin Source File - -SOURCE=..\src\sysdep.h -# End Source File -# Begin Source File - -SOURCE=..\src\sysdir.h -# End Source File -# Begin Source File - -SOURCE=..\src\sysdll.c -# End Source File -# Begin Source File - -SOURCE=..\src\sysdll.h -# End Source File -# Begin Source File - -SOURCE=..\src\sysfile.h -# End Source File -# Begin Source File - -SOURCE=..\src\sysfloat.h -# End Source File -# Begin Source File - -SOURCE=..\src\sysproc.h -# End Source File -# Begin Source File - -SOURCE=..\src\syspwd.h -# End Source File -# Begin Source File - -SOURCE=..\src\syssignal.h -# End Source File -# Begin Source File - -SOURCE=..\src\systime.h -# End Source File -# Begin Source File - -SOURCE=..\src\systty.h -# End Source File -# Begin Source File - -SOURCE=..\src\syswait.h -# End Source File -# Begin Source File - -SOURCE=..\src\termcap.c -# End Source File -# Begin Source File - -SOURCE=..\src\terminfo.c -# End Source File -# Begin Source File - -SOURCE="..\src\toolbar-msw.c" -# End Source File -# Begin Source File - -SOURCE="..\src\toolbar-x.c" -# End Source File -# Begin Source File - -SOURCE=..\src\toolbar.c -# End Source File -# Begin Source File - -SOURCE=..\src\toolbar.h -# End Source File -# Begin Source File - -SOURCE=..\src\tooltalk.c -# End Source File -# Begin Source File - -SOURCE=..\src\tooltalk.h -# End Source File -# Begin Source File - -SOURCE=..\src\tparam.c -# End Source File -# Begin Source File - -SOURCE=..\src\undo.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexaix.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexalpha.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexapollo.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexconvex.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexcw.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexec.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexelf.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexelfsgi.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexencap.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexenix.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexfreebsd.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexfx2800.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexhp9k3.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexhp9k800.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexmips.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexnext.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexnt.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexsni.c -# End Source File -# Begin Source File - -SOURCE="..\src\unexsol2-6.c" -# End Source File -# Begin Source File - -SOURCE=..\src\unexsol2.c -# End Source File -# Begin Source File - -SOURCE=..\src\unexsunos4.c -# End Source File -# Begin Source File - -SOURCE=..\src\universe.h -# End Source File -# Begin Source File - -SOURCE=..\src\vdb.h -# End Source File -# Begin Source File - -SOURCE=..\src\vdb.c -# End Source File -# Begin Source File - -SOURCE=..\src\vdb-win32.c -# End Source File -# Begin Source File - -SOURCE="..\src\vm-limit.c" -# End Source File -# Begin Source File - -SOURCE=..\src\widget.c -# End Source File -# Begin Source File - -SOURCE=..\src\window.c -# End Source File -# Begin Source File - -SOURCE=..\src\window.h -# End Source File -# Begin Source File - -SOURCE=..\src\winslots.h -# End Source File -# Begin Source File - -SOURCE=.\xemacs.mak -# End Source File -# Begin Source File - -SOURCE=..\src\xgccache.c -# End Source File -# Begin Source File - -SOURCE=..\src\xgccache.h -# End Source File -# Begin Source File - -SOURCE=..\src\xintrinsic.h -# End Source File -# Begin Source File - -SOURCE=..\src\xintrinsicp.h -# End Source File -# Begin Source File - -SOURCE=..\src\xmmanagerp.h -# End Source File -# Begin Source File - -SOURCE=..\src\xmprimitivep.h -# End Source File -# Begin Source File - -SOURCE=..\src\xmu.c -# End Source File -# Begin Source File - -SOURCE=..\src\xmu.h -# End Source File -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="xemacs" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) External Target" 0x0106 + +CFG=xemacs - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xemacs.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xemacs.mak" CFG="xemacs - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xemacs - Win32 Release" (based on "Win32 (x86) External Target") +!MESSAGE "xemacs - Win32 Debug" (based on "Win32 (x86) External Target") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" + +!IF "$(CFG)" == "xemacs - Win32 Release" + +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Cmd_Line "NMAKE /f xemacs.mak" +# PROP BASE Rebuild_Opt "/a" +# PROP BASE Target_File "xemacs.exe" +# PROP BASE Bsc_Name "xemacs.bsc" +# PROP BASE Target_Dir "" +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\src" +# PROP Intermediate_Dir "obj" +# PROP Cmd_Line "NMAKE /f xemacs.mak" +# PROP Rebuild_Opt "/a" +# PROP Target_File "xemacs.exe" +# PROP Bsc_Name "xemacs.bsc" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "xemacs - Win32 Debug" + +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Cmd_Line "NMAKE /f xemacs.mak" +# PROP BASE Rebuild_Opt "/a" +# PROP BASE Target_File "xemacs.exe" +# PROP BASE Bsc_Name "xemacs.bsc" +# PROP BASE Target_Dir "" +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\src" +# PROP Intermediate_Dir "obj" +# PROP Cmd_Line "NMAKE /k /f xemacs.mak" +# PROP Rebuild_Opt "/a" +# PROP Target_File "..\src\xemacs.exe" +# PROP Bsc_Name "..\src\temacs.bsc" +# PROP Target_Dir "" + +!ENDIF + +# Begin Target + +# Name "xemacs - Win32 Release" +# Name "xemacs - Win32 Debug" + +!IF "$(CFG)" == "xemacs - Win32 Release" + +!ELSEIF "$(CFG)" == "xemacs - Win32 Debug" + +!ENDIF + +# Begin Source File + +SOURCE=..\src\abbrev.c +# End Source File +# Begin Source File + +SOURCE=..\src\alloc.c +# End Source File +# Begin Source File + +SOURCE=..\src\alloca.c +# End Source File +# Begin Source File + +SOURCE=..\src\backtrace.h +# End Source File +# Begin Source File + +SOURCE="..\src\balloon-x.c" +# End Source File +# Begin Source File + +SOURCE=..\src\balloon_help.c +# End Source File +# Begin Source File + +SOURCE=..\src\balloon_help.h +# End Source File +# Begin Source File + +SOURCE=..\src\bitmaps.h +# End Source File +# Begin Source File + +SOURCE=..\src\blocktype.c +# End Source File +# Begin Source File + +SOURCE=..\src\blocktype.h +# End Source File +# Begin Source File + +SOURCE="..\src\broken-sun.h" +# End Source File +# Begin Source File + +SOURCE=..\src\buffer.c +# End Source File +# Begin Source File + +SOURCE=..\src\buffer.h +# End Source File +# Begin Source File + +SOURCE=..\src\bufslots.h +# End Source File +# Begin Source File + +SOURCE=..\src\bytecode.c +# End Source File +# Begin Source File + +SOURCE=..\src\bytecode.h +# End Source File +# Begin Source File + +SOURCE=..\src\callint.c +# End Source File +# Begin Source File + +SOURCE=..\src\casefiddle.c +# End Source File +# Begin Source File + +SOURCE=..\src\casetab.c +# End Source File +# Begin Source File + +SOURCE=..\src\chartab.c +# End Source File +# Begin Source File + +SOURCE=..\src\chartab.h +# End Source File +# Begin Source File + +SOURCE=..\src\cm.c +# End Source File +# Begin Source File + +SOURCE=..\src\cm.h +# End Source File +# Begin Source File + +SOURCE=..\src\cmdloop.c +# End Source File +# Begin Source File + +SOURCE=..\src\cmds.c +# End Source File +# Begin Source File + +SOURCE=..\src\commands.h +# End Source File +# Begin Source File + +SOURCE=..\src\config.h +# End Source File +# Begin Source File + +SOURCE=..\src\conslots.h +# End Source File +# Begin Source File + +SOURCE="..\src\console-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\console-msw.h" +# End Source File +# Begin Source File + +SOURCE="..\src\console-stream.c" +# End Source File +# Begin Source File + +SOURCE="..\src\console-stream.h" +# End Source File +# Begin Source File + +SOURCE="..\src\console-tty.c" +# End Source File +# Begin Source File + +SOURCE="..\src\console-tty.h" +# End Source File +# Begin Source File + +SOURCE="..\src\console-x.c" +# End Source File +# Begin Source File + +SOURCE="..\src\console-x.h" +# End Source File +# Begin Source File + +SOURCE=..\src\console.c +# End Source File +# Begin Source File + +SOURCE=..\src\console.h +# End Source File +# Begin Source File + +SOURCE=..\src\data.c +# End Source File +# Begin Source File + +SOURCE=..\src\database.c +# End Source File +# Begin Source File + +SOURCE=..\src\database.h +# End Source File +# Begin Source File + +SOURCE=..\src\debug.c +# End Source File +# Begin Source File + +SOURCE=..\src\debug.h +# End Source File +# Begin Source File + +SOURCE="..\src\device-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\device-tty.c" +# End Source File +# Begin Source File + +SOURCE="..\src\device-x.c" +# End Source File +# Begin Source File + +SOURCE=..\src\device.c +# End Source File +# Begin Source File + +SOURCE=..\src\device.h +# End Source File +# Begin Source File + +SOURCE=..\src\dgif_lib.c +# End Source File +# Begin Source File + +SOURCE="..\src\dialog-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\dialog-x.c" +# End Source File +# Begin Source File + +SOURCE=..\src\dialog.c +# End Source File +# Begin Source File + +SOURCE="..\src\dired-msw.c" +# End Source File +# Begin Source File + +SOURCE=..\src\dired.c +# End Source File +# Begin Source File + +SOURCE=..\src\doc.c +# End Source File +# Begin Source File + +SOURCE=..\src\doprnt.c +# End Source File +# Begin Source File + +SOURCE=..\src\dragdrop.c +# End Source File +# Begin Source File + +SOURCE=..\src\dragdrop.h +# End Source File +# Begin Source File + +SOURCE=..\src\dynarr.c +# End Source File +# Begin Source File + +SOURCE=..\src\ecrt0.c +# End Source File +# Begin Source File + +SOURCE=..\src\editfns.c +# End Source File +# Begin Source File + +SOURCE=..\src\eldap.c +# End Source File +# Begin Source File + +SOURCE=..\src\eldap.h +# End Source File +# Begin Source File + +SOURCE=..\src\elhash.c +# End Source File +# Begin Source File + +SOURCE=..\src\elhash.h +# End Source File +# Begin Source File + +SOURCE=..\src\Emacs.ad.h +# End Source File +# Begin Source File + +SOURCE=..\src\emacs.c +# End Source File +# Begin Source File + +SOURCE=..\src\EmacsFrame.c +# End Source File +# Begin Source File + +SOURCE=..\src\EmacsFrame.h +# End Source File +# Begin Source File + +SOURCE=..\src\EmacsFrameP.h +# End Source File +# Begin Source File + +SOURCE=..\src\EmacsManager.c +# End Source File +# Begin Source File + +SOURCE=..\src\EmacsManager.h +# End Source File +# Begin Source File + +SOURCE=..\src\EmacsManagerP.h +# End Source File +# Begin Source File + +SOURCE="..\src\EmacsShell-sub.c" +# End Source File +# Begin Source File + +SOURCE=..\src\EmacsShell.c +# End Source File +# Begin Source File + +SOURCE=..\src\EmacsShell.h +# End Source File +# Begin Source File + +SOURCE=..\src\EmacsShellP.h +# End Source File +# Begin Source File + +SOURCE=..\src\emodules.c +# End Source File +# Begin Source File + +SOURCE=..\src\emodules.h +# End Source File +# Begin Source File + +SOURCE=..\src\esd.c +# End Source File +# Begin Source File + +SOURCE=..\src\eval.c +# End Source File +# Begin Source File + +SOURCE="..\src\event-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\event-stream.c" +# End Source File +# Begin Source File + +SOURCE="..\src\event-tty.c" +# End Source File +# Begin Source File + +SOURCE="..\src\event-unixoid.c" +# End Source File +# Begin Source File + +SOURCE="..\src\event-Xt.c" +# End Source File +# Begin Source File + +SOURCE="..\src\events-mod.h" +# End Source File +# Begin Source File + +SOURCE=..\src\events.c +# End Source File +# Begin Source File + +SOURCE=..\src\events.h +# End Source File +# Begin Source File + +SOURCE=..\src\extents.c +# End Source File +# Begin Source File + +SOURCE=..\src\extents.h +# End Source File +# Begin Source File + +SOURCE="..\src\ExternalClient-Xlib.c" +# End Source File +# Begin Source File + +SOURCE=..\src\ExternalClient.c +# End Source File +# Begin Source File + +SOURCE=..\src\ExternalClient.h +# End Source File +# Begin Source File + +SOURCE=..\src\ExternalClientP.h +# End Source File +# Begin Source File + +SOURCE=..\src\ExternalShell.c +# End Source File +# Begin Source File + +SOURCE=..\src\ExternalShell.h +# End Source File +# Begin Source File + +SOURCE=..\src\ExternalShellP.h +# End Source File +# Begin Source File + +SOURCE="..\src\extw-Xlib.c" +# End Source File +# Begin Source File + +SOURCE="..\src\extw-Xlib.h" +# End Source File +# Begin Source File + +SOURCE="..\src\extw-Xt.c" +# End Source File +# Begin Source File + +SOURCE="..\src\extw-Xt.h" +# End Source File +# Begin Source File + +SOURCE=..\src\faces.c +# End Source File +# Begin Source File + +SOURCE=..\src\faces.h +# End Source File +# Begin Source File + +SOURCE="..\src\file-coding.c" +# End Source File +# Begin Source File + +SOURCE="..\src\file-coding.h" +# End Source File +# Begin Source File + +SOURCE=..\src\fileio.c +# End Source File +# Begin Source File + +SOURCE=..\src\filelock.c +# End Source File +# Begin Source File + +SOURCE=..\src\filemode.c +# End Source File +# Begin Source File + +SOURCE=..\src\floatfns.c +# End Source File +# Begin Source File + +SOURCE=..\src\fns.c +# End Source File +# Begin Source File + +SOURCE="..\src\font-lock.c" +# End Source File +# Begin Source File + +SOURCE="..\src\frame-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\frame-tty.c" +# End Source File +# Begin Source File + +SOURCE="..\src\frame-x.c" +# End Source File +# Begin Source File + +SOURCE=..\src\frame.c +# End Source File +# Begin Source File + +SOURCE=..\src\frame.h +# End Source File +# Begin Source File + +SOURCE=..\src\frameslots.h +# End Source File +# Begin Source File + +SOURCE="..\src\free-hook.c" +# End Source File +# Begin Source File + +SOURCE=..\src\gc.c +# End Source File +# Begin Source File + +SOURCE=..\src\gc.h +# End Source File +# Begin Source File + +SOURCE=..\src\general.c +# End Source File +# Begin Source File + +SOURCE=..\src\getloadavg.c +# End Source File +# Begin Source File + +SOURCE=..\src\getpagesize.h +# End Source File +# Begin Source File + +SOURCE=..\src\gif_io.c +# End Source File +# Begin Source File + +SOURCE=..\src\gifrlib.h +# End Source File +# Begin Source File + +SOURCE="..\src\glyphs-eimage.c" +# End Source File +# Begin Source File + +SOURCE="..\src\glyphs-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\glyphs-msw.h" +# End Source File +# Begin Source File + +SOURCE="..\src\glyphs-widget.c" +# End Source File +# Begin Source File + +SOURCE="..\src\glyphs-x.c" +# End Source File +# Begin Source File + +SOURCE="..\src\glyphs-x.h" +# End Source File +# Begin Source File + +SOURCE=..\src\glyphs.c +# End Source File +# Begin Source File + +SOURCE=..\src\glyphs.h +# End Source File +# Begin Source File + +SOURCE=..\src\gmalloc.c +# End Source File +# Begin Source File + +SOURCE=..\src\gpmevent.c +# End Source File +# Begin Source File + +SOURCE=..\src\gpmevent.h +# End Source File +# Begin Source File + +SOURCE="..\src\gui-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\gui-x.c" +# End Source File +# Begin Source File + +SOURCE="..\src\gui-x.h" +# End Source File +# Begin Source File + +SOURCE=..\src\gui.c +# End Source File +# Begin Source File + +SOURCE=..\src\gui.h +# End Source File +# Begin Source File + +SOURCE=..\src\gutter.c +# End Source File +# Begin Source File + +SOURCE=..\src\gutter.h +# End Source File +# Begin Source File + +SOURCE=..\src\hash.c +# End Source File +# Begin Source File + +SOURCE=..\src\hash.h +# End Source File +# Begin Source File + +SOURCE=..\src\hftctl.c +# End Source File +# Begin Source File + +SOURCE=..\src\hpplay.c +# End Source File +# Begin Source File + +SOURCE=..\src\imgproc.c +# End Source File +# Begin Source File + +SOURCE=..\src\imgproc.h +# End Source File +# Begin Source File + +SOURCE=..\src\indent.c +# End Source File +# Begin Source File + +SOURCE=..\src\inline.c +# End Source File +# Begin Source File + +SOURCE="..\src\input-method-motif.c" +# End Source File +# Begin Source File + +SOURCE="..\src\input-method-xfs.c" +# End Source File +# Begin Source File + +SOURCE="..\src\input-method-xlib.c" +# End Source File +# Begin Source File + +SOURCE=..\src\insdel.c +# End Source File +# Begin Source File + +SOURCE=..\src\insdel.h +# End Source File +# Begin Source File + +SOURCE=..\src\intl.c +# End Source File +# Begin Source File + +SOURCE="..\src\iso-wide.h" +# End Source File +# Begin Source File + +SOURCE=..\src\keymap.c +# End Source File +# Begin Source File + +SOURCE=..\src\keymap.h +# End Source File +# Begin Source File + +SOURCE=..\src\lastfile.c +# End Source File +# Begin Source File + +SOURCE=..\src\libsst.c +# End Source File +# Begin Source File + +SOURCE=..\src\libsst.h +# End Source File +# Begin Source File + +SOURCE=..\src\libst.h +# End Source File +# Begin Source File + +SOURCE="..\src\line-number.c" +# End Source File +# Begin Source File + +SOURCE="..\src\line-number.h" +# End Source File +# Begin Source File + +SOURCE=..\src\linuxplay.c +# End Source File +# Begin Source File + +SOURCE="..\src\lisp-disunion.h" +# End Source File +# Begin Source File + +SOURCE="..\src\lisp-union.h" +# End Source File +# Begin Source File + +SOURCE=..\src\lisp.h +# End Source File +# Begin Source File + +SOURCE=..\src\lread.c +# End Source File +# Begin Source File + +SOURCE=..\src\lrecord.h +# End Source File +# Begin Source File + +SOURCE=..\src\lstream.c +# End Source File +# Begin Source File + +SOURCE=..\src\lstream.h +# End Source File +# Begin Source File + +SOURCE=..\src\macros.c +# End Source File +# Begin Source File + +SOURCE=..\src\macros.h +# End Source File +# Begin Source File + +SOURCE=..\src\malloc.c +# End Source File +# Begin Source File + +SOURCE=..\src\marker.c +# End Source File +# Begin Source File + +SOURCE=..\src\mc-alloc.c +# End Source File +# Begin Source File + +SOURCE=..\src\mc-alloc.h +# End Source File +# Begin Source File + +SOURCE=..\src\md5.c +# End Source File +# Begin Source File + +SOURCE="..\src\mem-limits.h" +# End Source File +# Begin Source File + +SOURCE="..\src\menubar-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\menubar-msw.h" +# End Source File +# Begin Source File + +SOURCE="..\src\menubar-x.c" +# End Source File +# Begin Source File + +SOURCE=..\src\menubar.c +# End Source File +# Begin Source File + +SOURCE=..\src\menubar.h +# End Source File +# Begin Source File + +SOURCE=..\src\minibuf.c +# End Source File +# Begin Source File + +SOURCE=..\src\miscplay.c +# End Source File +# Begin Source File + +SOURCE=..\src\miscplay.h +# End Source File +# Begin Source File + +SOURCE="..\src\mule-canna.c" +# End Source File +# Begin Source File + +SOURCE="..\src\mule-ccl.c" +# End Source File +# Begin Source File + +SOURCE="..\src\mule-ccl.h" +# End Source File +# Begin Source File + +SOURCE="..\src\mule-charset.c" +# End Source File +# Begin Source File + +SOURCE="..\src\mule-charset.h" +# End Source File +# Begin Source File + +SOURCE="..\src\mule-mcpath.c" +# End Source File +# Begin Source File + +SOURCE="..\src\mule-mcpath.h" +# End Source File +# Begin Source File + +SOURCE="..\src\mule-wnnfns.c" +# End Source File +# Begin Source File + +SOURCE=..\src\mule.c +# End Source File +# Begin Source File + +SOURCE=..\src\nas.c +# End Source File +# Begin Source File + +SOURCE=..\src\ndir.h +# End Source File +# Begin Source File + +SOURCE=..\src\nt.c +# End Source File +# Begin Source File + +SOURCE=..\src\nt.h +# End Source File +# Begin Source File + +SOURCE=..\src\ntheap.c +# End Source File +# Begin Source File + +SOURCE=..\src\ntheap.h +# End Source File +# Begin Source File + +SOURCE=..\src\ntplay.c +# End Source File +# Begin Source File + +SOURCE=..\src\ntproc.c +# End Source File +# Begin Source File + +SOURCE="..\src\objects-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\objects-msw.h" +# End Source File +# Begin Source File + +SOURCE="..\src\objects-tty.c" +# End Source File +# Begin Source File + +SOURCE="..\src\objects-tty.h" +# End Source File +# Begin Source File + +SOURCE="..\src\objects-x.c" +# End Source File +# Begin Source File + +SOURCE="..\src\objects-x.h" +# End Source File +# Begin Source File + +SOURCE=..\src\objects.c +# End Source File +# Begin Source File + +SOURCE=..\src\objects.h +# End Source File +# Begin Source File + +SOURCE="..\src\offix-cursors.h" +# End Source File +# Begin Source File + +SOURCE="..\src\offix-types.h" +# End Source File +# Begin Source File + +SOURCE=..\src\offix.c +# End Source File +# Begin Source File + +SOURCE=..\src\offix.h +# End Source File +# Begin Source File + +SOURCE=..\src\opaque.c +# End Source File +# Begin Source File + +SOURCE=..\src\opaque.h +# End Source File +# Begin Source File + +SOURCE=..\src\paths.h +# End Source File +# Begin Source File + +SOURCE="..\src\pre-crt0.c" +# End Source File +# Begin Source File + +SOURCE=..\src\print.c +# End Source File +# Begin Source File + +SOURCE="..\src\process-nt.c" +# End Source File +# Begin Source File + +SOURCE="..\src\process-unix.c" +# End Source File +# Begin Source File + +SOURCE=..\src\process.c +# End Source File +# Begin Source File + +SOURCE=..\src\process.h +# End Source File +# Begin Source File + +SOURCE=..\src\procimpl.h +# End Source File +# Begin Source File + +SOURCE=..\src\profile.c +# End Source File +# Begin Source File + +SOURCE=..\src\ralloc.c +# End Source File +# Begin Source File + +SOURCE=..\src\rangetab.c +# End Source File +# Begin Source File + +SOURCE=..\src\rangetab.h +# End Source File +# Begin Source File + +SOURCE=..\src\realpath.c +# End Source File +# Begin Source File + +SOURCE="..\src\redisplay-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\redisplay-output.c" +# End Source File +# Begin Source File + +SOURCE="..\src\redisplay-tty.c" +# End Source File +# Begin Source File + +SOURCE="..\src\redisplay-x.c" +# End Source File +# Begin Source File + +SOURCE=..\src\redisplay.c +# End Source File +# Begin Source File + +SOURCE=..\src\redisplay.h +# End Source File +# Begin Source File + +SOURCE=..\src\regex.c +# End Source File +# Begin Source File + +SOURCE=..\src\regex.h +# End Source File +# Begin Source File + +SOURCE="..\src\scrollbar-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\scrollbar-msw.h" +# End Source File +# Begin Source File + +SOURCE="..\src\scrollbar-x.c" +# End Source File +# Begin Source File + +SOURCE="..\src\scrollbar-x.h" +# End Source File +# Begin Source File + +SOURCE=..\src\scrollbar.c +# End Source File +# Begin Source File + +SOURCE=..\src\scrollbar.h +# End Source File +# Begin Source File + +SOURCE=..\src\search.c +# End Source File +# Begin Source File + +SOURCE="..\src\select-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\select-x.c" +# End Source File +# Begin Source File + +SOURCE=..\src\select.c +# End Source File +# Begin Source File + +SOURCE=..\src\select.h +# End Source File +# Begin Source File + +SOURCE=..\src\sgiplay.c +# End Source File +# Begin Source File + +SOURCE=..\src\sheap.c +# End Source File +# Begin Source File + +SOURCE=..\src\signal.c +# End Source File +# Begin Source File + +SOURCE=..\src\sound.c +# End Source File +# Begin Source File + +SOURCE=..\src\specifier.c +# End Source File +# Begin Source File + +SOURCE=..\src\specifier.h +# End Source File +# Begin Source File + +SOURCE=..\src\strcat.c +# End Source File +# Begin Source File + +SOURCE=..\src\strcmp.c +# End Source File +# Begin Source File + +SOURCE=..\src\strcpy.c +# End Source File +# Begin Source File + +SOURCE=..\src\strftime.c +# End Source File +# Begin Source File + +SOURCE="..\src\sunOS-fix.c" +# End Source File +# Begin Source File + +SOURCE=..\src\sunplay.c +# End Source File +# Begin Source File + +SOURCE=..\src\sunpro.c +# End Source File +# Begin Source File + +SOURCE=..\src\symbols.c +# End Source File +# Begin Source File + +SOURCE=..\src\symeval.h +# End Source File +# Begin Source File + +SOURCE=..\src\symsinit.h +# End Source File +# Begin Source File + +SOURCE=..\src\syntax.c +# End Source File +# Begin Source File + +SOURCE=..\src\syntax.h +# End Source File +# Begin Source File + +SOURCE=..\src\sysdep.c +# End Source File +# Begin Source File + +SOURCE=..\src\sysdep.h +# End Source File +# Begin Source File + +SOURCE=..\src\sysdir.h +# End Source File +# Begin Source File + +SOURCE=..\src\sysdll.c +# End Source File +# Begin Source File + +SOURCE=..\src\sysdll.h +# End Source File +# Begin Source File + +SOURCE=..\src\sysfile.h +# End Source File +# Begin Source File + +SOURCE=..\src\sysfloat.h +# End Source File +# Begin Source File + +SOURCE=..\src\sysproc.h +# End Source File +# Begin Source File + +SOURCE=..\src\syspwd.h +# End Source File +# Begin Source File + +SOURCE=..\src\syssignal.h +# End Source File +# Begin Source File + +SOURCE=..\src\systime.h +# End Source File +# Begin Source File + +SOURCE=..\src\systty.h +# End Source File +# Begin Source File + +SOURCE=..\src\syswait.h +# End Source File +# Begin Source File + +SOURCE=..\src\termcap.c +# End Source File +# Begin Source File + +SOURCE=..\src\terminfo.c +# End Source File +# Begin Source File + +SOURCE="..\src\toolbar-msw.c" +# End Source File +# Begin Source File + +SOURCE="..\src\toolbar-x.c" +# End Source File +# Begin Source File + +SOURCE=..\src\toolbar.c +# End Source File +# Begin Source File + +SOURCE=..\src\toolbar.h +# End Source File +# Begin Source File + +SOURCE=..\src\tooltalk.c +# End Source File +# Begin Source File + +SOURCE=..\src\tooltalk.h +# End Source File +# Begin Source File + +SOURCE=..\src\tparam.c +# End Source File +# Begin Source File + +SOURCE=..\src\undo.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexaix.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexalpha.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexapollo.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexconvex.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexcw.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexec.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexelf.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexelfsgi.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexencap.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexenix.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexfreebsd.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexfx2800.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexhp9k3.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexhp9k800.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexmips.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexnext.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexnt.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexsni.c +# End Source File +# Begin Source File + +SOURCE="..\src\unexsol2-6.c" +# End Source File +# Begin Source File + +SOURCE=..\src\unexsol2.c +# End Source File +# Begin Source File + +SOURCE=..\src\unexsunos4.c +# End Source File +# Begin Source File + +SOURCE=..\src\universe.h +# End Source File +# Begin Source File + +SOURCE=..\src\vdb.h +# End Source File +# Begin Source File + +SOURCE=..\src\vdb.c +# End Source File +# Begin Source File + +SOURCE=..\src\vdb-win32.c +# End Source File +# Begin Source File + +SOURCE="..\src\vm-limit.c" +# End Source File +# Begin Source File + +SOURCE=..\src\widget.c +# End Source File +# Begin Source File + +SOURCE=..\src\window.c +# End Source File +# Begin Source File + +SOURCE=..\src\window.h +# End Source File +# Begin Source File + +SOURCE=..\src\winslots.h +# End Source File +# Begin Source File + +SOURCE=.\xemacs.mak +# End Source File +# Begin Source File + +SOURCE=..\src\xgccache.c +# End Source File +# Begin Source File + +SOURCE=..\src\xgccache.h +# End Source File +# Begin Source File + +SOURCE=..\src\xintrinsic.h +# End Source File +# Begin Source File + +SOURCE=..\src\xintrinsicp.h +# End Source File +# Begin Source File + +SOURCE=..\src\xmmanagerp.h +# End Source File +# Begin Source File + +SOURCE=..\src\xmprimitivep.h +# End Source File +# Begin Source File + +SOURCE=..\src\xmu.c +# End Source File +# Begin Source File + +SOURCE=..\src\xmu.h +# End Source File +# End Target +# End Project diff --text -u 'xemacs-21.5.26/nt/xemacs.dsw' 'xemacs-21.5.27/nt/xemacs.dsw' Index: ./nt/xemacs.dsw --- ./nt/xemacs.dsw Fri Apr 13 03:23:00 2001 +++ ./nt/xemacs.dsw Thu Apr 27 06:22:22 2006 @@ -1,29 +1,29 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "xemacs"=.\xemacs.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "xemacs"=".\xemacs.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --text -u 'xemacs-21.5.26/src/ChangeLog' 'xemacs-21.5.27/src/ChangeLog' Index: ./src/ChangeLog --- ./src/ChangeLog Sat Apr 1 03:46:16 2006 +++ ./src/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,204 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + +2006-02-27 Joachim Schrod + + * mule-coding.c (iso2022_detect): Handle Latin-1 encoded files + that have several high-byte chars in a row. + +2006-05-08 Jerry James + + * number.c (Fcanonicalize_number): Use EMACS_INT instead of int, + which fixes bignum arithmetic on 64-bit platforms. + * number.h (bignum_fits_emacs_int_p): New macro. + * number.h (bignum_to_emacs_int): New macro. + +2006-03-30 Stephen J. Turnbull + + * objects-x.c (x_initialize_font_instance): + Ensure that duplicative X font gets freed if we have an Xft font. + Remove some redundant debug output. + Comment on frequency of calls to this function. + +2006-05-08 Stephen J. Turnbull + + * EmacsShell-sub.c (RootGeometryManager): + Change garbage to useful messages under DEBUG_GEOMETRY_MANAGEMENT. + Based on a suggestion by Francois L'Archeveque. + +2006-05-02 Stephen J. Turnbull + + * doc.c (extract_object_file_name): Fix buffer overrun. + +2006-04-30 Stephen J. Turnbull + + Move geometry management from EmacsFrameResize to x_set_frame_size. + Should fix "metacity maximization" bug. + Provide (deprecated, temporary) backward compatibility option. + + * EmacsFrame.c (EmacsFrameResize): + * frame-x.c (x_set_frame_size): + Move call of EmacsManagerChangeSize. + Don't bogusly notify WM about size changes the WM asked for. + + * console-x.c (wedge-metacity): New builtin Boolean Lisp variable. + * console-x-impl.h (wedge_metacity): Declare C variable. + * console-x.c (vars_of_console_x): New function to initialize it. + * symsinit.h (vars_of_console_x): declare it. + * emacs.c (main_1): Call vars_of_console_x. + + * EmacsFrameP.h (struct EmacsFrame): + * EmacsManager.c (EmacsManagerChangeSize): + * EmacsShell-sub.c (SuperClassRootGeometryManager): + * console-x-impl.h (wedge_metacity): + Various comments, some improved documentation, mostly sad comments + on the state of the art of Xt programming. + + * frame-x.c (defi): #undef it. (Random code cleanliness.) + +2006-05-06 Aidan Kehoe + + * lisp.h (struct Lisp_Subr): + Document that prompt, doc, and name should not be char *. + * symbols.c (Fsubr_name): + Cast name to const Ibyte * before returning it. + * sysfile.h: + Make versions of DIRECTORY_SEP, IS_DIRECTORY_SEP and IS_ANY_SEP + available to make-docfile and other non-emacs processes on win32. + +2006-04-30 Stephen J. Turnbull + + * font-mgr.c (string_list_to_fcobjectset): Remove debugging output. + +2006-04-29 Aidan Kehoe + + * symbols.c (Fsubr_name): New. + Taken from the FSF. Needed to find the real name of a possibly + aliased subr, in order to get its docstring. + * sysfile.h: + Make various file name primitives available to make-docfile and + other non-emacs environments; define a constant that says how long + a source filename can be in lib-src/DOC. + +2006-04-29 Aidan Kehoe + + * doc.c: + * doc.c (extract_object_file_name): + * doc.c (get_object_file_name): + * doc.c (Fbuilt_in_symbol_file): + Support saving and recovering the source file name of a built-in + symbol (that is, one created in C.) + +2006-04-29 Aidan Kehoe + + * lread.c: + * lread.c (read_escape): + Support \uABCD and \U00ABCDEF for specifying characters by their + Unicode code point. + +2006-04-25 Stephen J. Turnbull + + Repair busted commit, plus some gratuitous doc improvements. + + * emacs.c (main_1): Initialize display_use to NULL for clarity. + + * objects-x.c (x_color_list): + (x_initialize_font_instance): + (x_font_instance_truename): + (x_find_charset_font): + * font-mgr.h (Qfc_font_name_encoding): + Qxft_font_name_encoding -> Qfc_font_name_encoding. + + * console.h (header comment): + * font-mgr.c (vars_of_font_mgr): + * redisplay.c (Vwindow_system): + Improve comments. + +2006-04-22 Jerry James + + * event-stream.c (copy_command_builder): Also copy the console. + +2006-04-23 Aidan Kehoe + + * alloc.c: + * data.c: + * data.c (Fconsp): + * data.c (Flistp): + Take on board feedback from Stephen on my last change; move the + explanation of what a cons is to the cons docstring, add cross + references to that from the consp and atomp docstrings. + +2006-04-23 Stephen J. Turnbull + + * Makefile.in.in (x_objs): Change xft-fonts.o to font-mgr.o. + +2006-04-17 Stephen J. Turnbull + + * config.h.in: New symbol HAVE_FONTCONFIG. + +2006-04-22 Stephen J. Turnbull + + Rename xft-fonts.{c,h} to font-mgr.{c,h}. + + * font-mgr.c: + * emacs.c: + * symsinit.h: + (syms_of_font_mgr): + (vars_of_font_mgr): + (reinit_vars_of_font_mgr): + (complex_vars_of_font_mgr): + Renamed from *_xft_fonts versions. + + * font-mgr.c: + * inline.c: + * objects-x.c: + Update #includes and comments to refer to font-mgr.h. + N.B. The feature provided by objects-x.c is still "xft-fonts", + which is separate from the font management by fontconfig (from + font-mgr.*). + +2006-04-15 Stephen J. Turnbull + + * console-x.h (): Don't cater to Xft v.1. + +2006-04-17 Stephen J. Turnbull + + * unicode.c: Improve comment on to/from_unicode table design. + +2006-04-18 Jerry James + + * alsaplay.c: Explicitly include ALSA's version.h for older + versions of the library. Thanks to Ilya Golubev. + +2006-04-16 Aidan Kehoe + + * data.c (Fconsp): + * data.c (Fsymbolp): + * data.c (Fcar): + * data.c (Flistp): + * data.c (Fsetcar): + * data.c (Fsetcdr): + * data.c (Flss): + * data.c (Fgtr): + Short docstring clarifications to make life easier for people who + are learning Lisp; explain what a cons is in the consp docstring, + what a symbol is in the symbolp docstring, and so forth. Thank you + Alan Mackenzie on emacs-devel. + Expand on "monotonically increasing" and "monotonically + decreasing" in the Flss and Fgtr docstrings. + +2006-04-10 Jerry James + + * alsaplay.c: Support pre-1.0.10 versions of the ALSA library. + +2006-03-23 Tony Bennett + + * process-unix.c (unix_send_process): Reduce timeout for + Faccept_process_output to 10ms. This dramatically speeds up many + functions that read from processes, eg, inferior interpreter + processes as in ilisp or python-mode. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/src/EmacsFrame.c' 'xemacs-21.5.27/src/EmacsFrame.c' Index: ./src/EmacsFrame.c --- ./src/EmacsFrame.c Tue Oct 25 20:16:20 2005 +++ ./src/EmacsFrame.c Sun May 7 02:55:59 2006 @@ -360,19 +360,32 @@ pixel_to_char_size (f, ew->core.width, ew->core.height, &columns, &rows); change_frame_size (f, rows, columns, 0); - /* Now we tell the EmacsShell that we've changed the size of the non-fixed - portion of the frame. Note that, if we the resize occurred as a result - of EmacsFrameSetCharSize(), this information will be stored twice. - This is not a big deal, as storing this information doesn't actually - do anything until the next resize. */ - if (FRAME_X_TOP_LEVEL_FRAME_P (f)) - x_wm_set_variable_size (FRAME_X_SHELL_WIDGET (f), columns, rows); + /* The code below is just plain wrong. If the EmacsShell or EmacsManager + needs to know, they should just ask. If needed information is being + updated here, then we should set a dirty flag and have it updated on an + as-needed basis. + For now, conditionalize so people can get work done if this breaks + something. */ + if (wedge_metacity) /* cf. x_set_frame_size */ + { + /* Now we tell the EmacsShell that we've changed the size of the + non-fixed portion of the frame. Note that, if the resize occurred + as a result of EmacsFrameSetCharSize(), this information will be + stored twice. This is not a big deal, as storing this information + doesn't actually do anything until the next resize. */ + if (FRAME_X_TOP_LEVEL_FRAME_P (f)) + x_wm_set_variable_size (FRAME_X_SHELL_WIDGET (f), columns, rows); - /* Kick the manager so that it knows we've changed size. */ - req.request_mode = 0; - XtQueryGeometry (FRAME_X_CONTAINER_WIDGET (f), &req, &repl); - EmacsManagerChangeSize (FRAME_X_CONTAINER_WIDGET (f), repl.width, - repl.height); + /* Kick the manager so that it knows we've changed size. + #### No, no, no! If this does anything at all, it will involve + changing the manager's size. That's not something that a child + widget should initialize as part of a purely informational + method!! */ + req.request_mode = 0; + XtQueryGeometry (FRAME_X_CONTAINER_WIDGET (f), &req, &repl); + EmacsManagerChangeSize (FRAME_X_CONTAINER_WIDGET (f), + repl.width, repl.height); + } } static Boolean diff --text -u 'xemacs-21.5.26/src/EmacsFrameP.h' 'xemacs-21.5.27/src/EmacsFrameP.h' Index: ./src/EmacsFrameP.h --- ./src/EmacsFrameP.h Sun May 4 11:34:35 2003 +++ ./src/EmacsFrameP.h Sun May 7 02:55:59 2006 @@ -65,13 +65,16 @@ Boolean iconic; /* whether this frame is iconic */ /* The rest of this is crap and should be deleted. + #### Comments that start with + are fields that actually get referred + to somewhere aside from the init function. + I guess the "crap" has mostly moved to specifiers? */ Boolean minibuffer; /* 0: normal frames with minibuffers. * 1: frames without minibuffers * 2: minibuffer only. */ Boolean unsplittable; /* frame can only have one window */ - int internal_border_width; /* internal borders */ + int internal_border_width; /* + internal borders */ int scrollbar_width; /* width of frame vertical sb's */ int scrollbar_height; /* height of frame horizontal sb's */ int top_toolbar_height; /* height of top toolbar */ @@ -82,9 +85,9 @@ int bottom_toolbar_border_width; /* ... of bottom toolbar */ int left_toolbar_border_width; /* ... of left toolbar */ int right_toolbar_border_width; /* ... of right toolbar */ - Dimension toolbar_shadow_thickness; + Dimension toolbar_shadow_thickness; /* + of shadows */ unsigned char scrollbar_placement; - int interline; /* skips between lines */ + int interline; /* + skips between lines */ XFontStruct* font; /* font */ Pixel foreground_pixel; /* foreground */ @@ -97,7 +100,7 @@ int bell_volume; /* how loud is beep */ Boolean menubar_p; /* initially show a menubar? */ - Boolean initially_unmapped; /* inhibit initial window mapping */ + Boolean initially_unmapped; /* + inhibit initial window mapping */ Boolean use_backing_store; /* backing store for menubar & ew? */ Dimension preferred_width; /* if non-zero, preferred size for */ diff --text -u 'xemacs-21.5.26/src/EmacsManager.c' 'xemacs-21.5.27/src/EmacsManager.c' Index: ./src/EmacsManager.c --- ./src/EmacsManager.c Wed Dec 22 19:59:09 2004 +++ ./src/EmacsManager.c Sun May 7 02:55:59 2006 @@ -241,6 +241,12 @@ if (height == 0) height = w->core.height; + /* #### AFAICT this gets called in two places. One is in ChangeManaged(), + above. The other is in EmacsFrameResize(). Perhaps ChangeManaged() + should initiate resize requests, but EmacsFrameResize() should not. + Unfortunately, I've tried making this conditional on whether we're + called from EmacsFrameResize() or not, but that results in an infloop + via the callback to x_layout_widgets() in Resize(). Whee! */ /* do nothing if we're already that size */ if (w->core.width != width || w->core.height != height) { diff --text -u 'xemacs-21.5.26/src/EmacsShell-sub.c' 'xemacs-21.5.27/src/EmacsShell-sub.c' Index: ./src/EmacsShell-sub.c --- ./src/EmacsShell-sub.c Tue Jan 25 08:33:46 2005 +++ ./src/EmacsShell-sub.c Mon May 8 16:35:25 2006 @@ -278,7 +278,8 @@ GenericClassExtRec *gcer; /* find the shell extension record that specifies the - root geometry manager method */ + root geometry manager method + #### We could use XtGetClassExtension here. */ for (gcer = (GenericClassExtRec *) swc->shell_class.extension; gcer; gcer = (GenericClassExtRec *) gcer->next_extension) @@ -287,6 +288,9 @@ break; } + /* #### The R11.6.4 Xt specification says if we don't find NULLQUARK here, + we should assume root_geometry_manager = XtInheritRootGeometryManager. + Is that actually callable? */ if (!gcer) ABORT (); @@ -335,11 +339,16 @@ result == XtGeometryAlmost ? "XtGeometryAlmost" : "XtGeometryDone"); if (reply->request_mode & CWWidth) - printf ("width returned;"); + printf ("width returned was %d%s", + reply->width, + reply->request_mode & CWHeight ? "; " : ".\n"); if (reply->request_mode & CWHeight) - printf ("height returned;"); - printf ("\n"); - printf (" resulting shell size: %d %d\n", reply->width, reply->height); + printf ("height returned was %d.\n", reply->height); + /* #### does this also need to depend on the result? + With XtGeometryYes there doesn't seem to be a useful reply object. */ + printf (" resulting shell size: %d %d\n", + reply->request_mode & CWWidth ? reply->width : w->core.width, + reply->request_mode & CWHeight ? reply->height : w->core.height); printf ("----------\n"); fflush (stdout); #endif diff --text -u 'xemacs-21.5.26/src/Makefile.in.in' 'xemacs-21.5.27/src/Makefile.in.in' Index: ./src/Makefile.in.in --- ./src/Makefile.in.in Tue Feb 28 01:29:21 2006 +++ ./src/Makefile.in.in Mon Apr 24 01:11:32 2006 @@ -134,7 +134,7 @@ x_objs=console-x.o device-x.o event-Xt.o frame-x.o \ glyphs-x.o objects-x.o redisplay-x.o select-x.o xgccache.o intl-x.o #ifdef USE_XFT -x_objs += xft-fonts.o +x_objs += font-mgr.o #endif x_gui_objs=$(gui_objs:.o=-x.o) #ifdef HAVE_TOOLBARS diff --text -u 'xemacs-21.5.26/src/alloc.c' 'xemacs-21.5.27/src/alloc.c' Index: ./src/alloc.c --- ./src/alloc.c Mon Mar 27 00:24:26 2006 +++ ./src/alloc.c Mon Apr 24 05:12:31 2006 @@ -1255,7 +1255,16 @@ Lisp_Cons); DEFUN ("cons", Fcons, 2, 2, 0, /* -Create a new cons, give it CAR and CDR as components, and return it. +Create a new cons cell, give it CAR and CDR as components, and return it. + +A cons cell is a Lisp object (an area in memory) made up of two pointers +called the CAR and the CDR. Each of these pointers can point to any other +Lisp object. The common Lisp data type, the list, is a specially-structured +series of cons cells. + +The pointers are accessed from Lisp with `car' and `cdr', and mutated with +`setcar' and `setcdr' respectively. For historical reasons, the aliases +`rplaca' and `rplacd' (for `setcar' and `setcdr') are supported. */ (car, cdr)) { diff --text -u 'xemacs-21.5.26/src/alsaplay.c' 'xemacs-21.5.27/src/alsaplay.c' Index: ./src/alsaplay.c --- ./src/alsaplay.c Tue Mar 28 02:40:58 2006 +++ ./src/alsaplay.c Wed Apr 19 02:28:32 2006 @@ -30,6 +30,7 @@ /* We can't just include because it tries to redefine * several symbols defined by the previous header files. */ +#include #include #include #include @@ -41,6 +42,8 @@ #include #include +#define ALSA_VERSION(major,minor,sub) (((major)<<16) | ((minor)<<8)| (sub)) + struct mixer_state { snd_mixer_t *mixer; @@ -51,22 +54,26 @@ int reset_front_center; int reset_front_right; int reset_rear_left; - int reset_rear_center; int reset_rear_right; + int reset_woofer; +#if SND_LIB_VERSION >= ALSA_VERSION (1, 0, 10) + int reset_rear_center; int reset_side_left; int reset_side_right; - int reset_woofer; +#endif /* Old volumes for the channels */ long front_left_vol; long front_center_vol; long front_right_vol; long rear_left_vol; - long rear_center_vol; long rear_right_vol; + long woofer_vol; +#if SND_LIB_VERSION >= ALSA_VERSION (1, 0, 10) + long rear_center_vol; long side_left_vol; long side_right_vol; - long woofer_vol; +#endif }; /* Assemble a machine half-word in little-endian order */ @@ -227,9 +234,13 @@ } /* Translate the Lisp volume range to the device volume range */ +#if SND_LIB_VERSION < ALSA_VERSION (1, 0, 10) + snd_mixer_selem_get_playback_volume_range (mix->vol_ctl, &min_vol, &max_vol); +#else if (snd_mixer_selem_get_playback_volume_range (mix->vol_ctl, &min_vol, &max_vol) < 0) return; +#endif dev_vol = volume * (max_vol - min_vol) / 100 + min_vol; @@ -251,24 +262,26 @@ mix->reset_rear_left = 1; if (snd_mixer_selem_get_playback_volume - (mix->vol_ctl, SND_MIXER_SCHN_REAR_CENTER, &mix->rear_center_vol) >= 0) - mix->reset_rear_center = 1; - - if (snd_mixer_selem_get_playback_volume (mix->vol_ctl, SND_MIXER_SCHN_REAR_RIGHT, &mix->rear_right_vol) >= 0) mix->reset_rear_right = 1; if (snd_mixer_selem_get_playback_volume + (mix->vol_ctl, SND_MIXER_SCHN_WOOFER, &mix->woofer_vol) >= 0) + mix->reset_woofer = 1; + +#if SND_LIB_VERSION >= ALSA_VERSION (1, 0, 10) + if (snd_mixer_selem_get_playback_volume + (mix->vol_ctl, SND_MIXER_SCHN_REAR_CENTER, &mix->rear_center_vol) >= 0) + mix->reset_rear_center = 1; + + if (snd_mixer_selem_get_playback_volume (mix->vol_ctl, SND_MIXER_SCHN_SIDE_LEFT, &mix->side_left_vol) >= 0) mix->reset_side_left = 1; if (snd_mixer_selem_get_playback_volume (mix->vol_ctl, SND_MIXER_SCHN_SIDE_RIGHT, &mix->side_right_vol) >= 0) mix->reset_side_right = 1; - - if (snd_mixer_selem_get_playback_volume - (mix->vol_ctl, SND_MIXER_SCHN_WOOFER, &mix->woofer_vol) >= 0) - mix->reset_woofer = 1; +#endif /* Set the volume */ snd_mixer_selem_set_playback_volume_all (mix->vol_ctl, dev_vol); @@ -293,14 +306,19 @@ snd_mixer_selem_set_playback_volume (mix->vol_ctl, SND_MIXER_SCHN_REAR_LEFT, mix->rear_left_vol); - if (mix->reset_rear_center) - snd_mixer_selem_set_playback_volume - (mix->vol_ctl, SND_MIXER_SCHN_REAR_CENTER, mix->rear_center_vol); - if (mix->reset_rear_right) snd_mixer_selem_set_playback_volume (mix->vol_ctl, SND_MIXER_SCHN_REAR_RIGHT, mix->rear_right_vol); + if (mix->reset_woofer) + snd_mixer_selem_set_playback_volume + (mix->vol_ctl, SND_MIXER_SCHN_WOOFER, mix->woofer_vol); + +#if SND_LIB_VERSION >= ALSA_VERSION (1, 0, 10) + if (mix->reset_rear_center) + snd_mixer_selem_set_playback_volume + (mix->vol_ctl, SND_MIXER_SCHN_REAR_CENTER, mix->rear_center_vol); + if (mix->reset_side_left) snd_mixer_selem_set_playback_volume (mix->vol_ctl, SND_MIXER_SCHN_SIDE_LEFT, mix->side_left_vol); @@ -308,10 +326,7 @@ if (mix->reset_side_right) snd_mixer_selem_set_playback_volume (mix->vol_ctl, SND_MIXER_SCHN_SIDE_RIGHT, mix->side_right_vol); - - if (mix->reset_woofer) - snd_mixer_selem_set_playback_volume - (mix->vol_ctl, SND_MIXER_SCHN_WOOFER, mix->woofer_vol); +#endif snd_mixer_close (mix->mixer); } diff --text -u 'xemacs-21.5.26/src/config.h.in' 'xemacs-21.5.27/src/config.h.in' Index: ./src/config.h.in --- ./src/config.h.in Tue Mar 28 02:40:58 2006 +++ ./src/config.h.in Mon Apr 24 01:11:32 2006 @@ -206,6 +206,9 @@ /* Compile in support for the X window system? */ #undef HAVE_X_WINDOWS +/* Compile with support for fontconfig? */ +#undef HAVE_FONTCONFIG + /* Compile with support for Xft? */ #undef USE_XFT /* Per-widget stuff will go away? */ diff --text -u 'xemacs-21.5.26/src/console-x-impl.h' 'xemacs-21.5.27/src/console-x-impl.h' Index: ./src/console-x-impl.h --- ./src/console-x-impl.h Sat Nov 26 20:46:07 2005 +++ ./src/console-x-impl.h Sun May 7 02:55:59 2006 @@ -40,6 +40,8 @@ DECLARE_CONSOLE_TYPE (x); +extern int wedge_metacity; + struct x_device { #ifdef NEW_GC @@ -234,7 +236,8 @@ /* The maximum number of widgets that can be displayed above the text area at one time. Currently no more than 3 will ever actually be - displayed (menubar, psheet, debugger panel). */ + displayed (menubar, psheet, debugger panel). + #### Are "psheet" and "debugger panel" relevant any more? */ #define MAX_CONCURRENT_TOP_WIDGETS 8 struct x_frame @@ -243,12 +246,17 @@ struct lrecord_header header; #endif /* NEW_GC */ - /* The widget of this frame. This is an EmacsShell or an - ExternalShell. */ + /* The widget of this frame. + This is an EmacsShell or an ExternalShell. + It negotiates with the window manager or containing app on behalf of + the container widget. Should be (but isn't) invisible to Emacs. */ Widget widget; /* The parent of the EmacsFrame, the menubar, and the scrollbars. - This is an EmacsManager. */ + This is an EmacsManager. + It is responsible for managing the geometry of the frame. This is what + Emacs mostly talks to. Anything that affects its geometry will be + reflected in the Shell widget, and thus cause WM interaction. */ Widget container; /* The widget of the menubar, of whatever widget class it happens to be. */ diff --text -u 'xemacs-21.5.26/src/console-x.c' 'xemacs-21.5.27/src/console-x.c' Index: ./src/console-x.c --- ./src/console-x.c Sun Dec 18 04:47:02 2005 +++ ./src/console-x.c Sun May 7 02:55:59 2006 @@ -41,6 +41,8 @@ DEFINE_CONSOLE_TYPE (x); +int wedge_metacity; /* nonzero means update WM_HINTS always */ + extern void x_has_keysym (KeySym, Lisp_Object, int); static int @@ -399,6 +401,22 @@ CONSOLE_HAS_METHOD (x, perhaps_init_unseen_key_defaults); } + +void +vars_of_console_x (void) +{ + DEFVAR_BOOL ("wedge-metacity", &wedge_metacity /* +When non-nil, frame geometry management is backward-compatible. +This is known to create inflooping window jitter in metacity, et al. +It also does not conform to Xt conventions for geometry management. +Specifically, all frame resizes, XEmacs-initiated or not, update WM_HINTS. +Furthermore, geometry changes occur in the widget resize method. + +The default is nil. This probably gives correct behavior regardless of the +window manager used. +This variable is deprecated and will be removed. +*/ ); +} void reinit_console_type_create_x (void) diff --text -u 'xemacs-21.5.26/src/console-x.h' 'xemacs-21.5.27/src/console-x.h' Index: ./src/console-x.h --- ./src/console-x.h Sat Nov 26 20:46:07 2005 +++ ./src/console-x.h Mon Apr 24 01:11:32 2006 @@ -58,10 +58,6 @@ #include #undef glyph_index #undef face_index -/* #### this should be made gone */ -#ifndef XFT_VERSION -#define XFT_VERSION 1 -#endif #endif /* R5 defines the XPointer type, but R4 doesn't. diff --text -u 'xemacs-21.5.26/src/console.h' 'xemacs-21.5.27/src/console.h' Index: ./src/console.h --- ./src/console.h Tue Mar 9 00:23:02 2004 +++ ./src/console.h Tue Apr 25 23:02:08 2006 @@ -28,20 +28,25 @@ /* Devices and consoles are similar entities. The idea is that a console represents a physical keyboard/mouse/other-input-source while a device represents a display where frames appear on. + Nowadays "multi-headed" displays with multiple physical screens + are becoming familiar; in the XEmacs nomenclature, this maps to a + "console" supporting multiple "devices". + In the X world, a console is a "Display" while a device is a "Screen". Implementationally, it can sometimes get confusing: under X, multiple devices on a single console are different "Display" connections to what is in reality the same Display on - the same server. Because of this, input comes from the device - and not from the console. This is OK because events are basically - always tagged to a particular X window (i.e. frame), - which exists on only one screen; therefore the event won't be - reported multiple times even if there are multiple devices on - the same physical display. This is an implementation detail - specific to X consoles (e.g. under NeXTstep or Windows, this - could be different, and input would come directly from the console). -*/ + the same server. Furthermore, in the X model input comes from the + device and not from the console. This causes no confusion because + events are basically always tagged to a particular X window (i.e. + frame), which exists on only one screen; therefore the event won't + be reported multiple times even if there are multiple devices on + the same physical display. + This is an implementation detail specific to X consoles (e.g. under + NeXTstep or Windows, this could be different, and input would come + directly from the console). +*/ /* GCC does not like forward enum declaration. This needs to be defined here. What a disgust! */ diff --text -u 'xemacs-21.5.26/src/data.c' 'xemacs-21.5.27/src/data.c' Index: ./src/data.c --- ./src/data.c Mon Oct 24 19:07:35 2005 +++ ./src/data.c Mon Apr 24 05:12:31 2006 @@ -216,6 +216,9 @@ DEFUN ("consp", Fconsp, 1, 1, 0, /* Return t if OBJECT is a cons cell. `nil' is not a cons cell. + +See the documentation for `cons' or the Lisp manual for more details on what +a cons cell is. */ (object)) { @@ -224,6 +227,9 @@ DEFUN ("atom", Fatom, 1, 1, 0, /* Return t if OBJECT is not a cons cell. `nil' is not a cons cell. + +See the documentation for `cons' or the Lisp manual for more details on what +a cons cell is. */ (object)) { @@ -232,6 +238,10 @@ DEFUN ("listp", Flistp, 1, 1, 0, /* Return t if OBJECT is a list. `nil' is a list. + +A list is either the Lisp object nil (a symbol), interpreted as the empty +list in this context, or a cons cell whose CDR refers to either nil or a +cons cell. A "proper list" contains no cycles. */ (object)) { @@ -256,6 +266,9 @@ DEFUN ("symbolp", Fsymbolp, 1, 1, 0, /* Return t if OBJECT is a symbol. + +A symbol is a Lisp object with a name. It can optionally have any and all of +a value, a property list and an associated function. */ (object)) { @@ -600,19 +613,21 @@ /* Extract and set components of lists */ DEFUN ("car", Fcar, 1, 1, 0, /* -Return the car of LIST. If arg is nil, return nil. -Error if arg is not nil and not a cons cell. See also `car-safe'. +Return the car of CONS. If CONS is nil, return nil. +The car of a list or a dotted pair is its first element. + +Error if CONS is not nil and not a cons cell. See also `car-safe'. */ - (list)) + (cons)) { while (1) { - if (CONSP (list)) - return XCAR (list); - else if (NILP (list)) + if (CONSP (cons)) + return XCAR (cons); + else if (NILP (cons)) return Qnil; else - list = wrong_type_argument (Qlistp, list); + cons = wrong_type_argument (Qlistp, cons); } } @@ -625,19 +640,22 @@ } DEFUN ("cdr", Fcdr, 1, 1, 0, /* -Return the cdr of LIST. If arg is nil, return nil. +Return the cdr of CONS. If CONS is nil, return nil. +The cdr of a list is the list without its first element. The cdr of a +dotted pair (A . B) is the second element, B. + Error if arg is not nil and not a cons cell. See also `cdr-safe'. */ - (list)) + (cons)) { while (1) { - if (CONSP (list)) - return XCDR (list); - else if (NILP (list)) + if (CONSP (cons)) + return XCDR (cons); + else if (NILP (cons)) return Qnil; else - list = wrong_type_argument (Qlistp, list); + cons = wrong_type_argument (Qlistp, cons); } } @@ -651,6 +669,7 @@ DEFUN ("setcar", Fsetcar, 2, 2, 0, /* Set the car of CONS-CELL to be NEWCAR. Return NEWCAR. +The car of a list or a dotted pair is its first element. */ (cons_cell, newcar)) { @@ -663,6 +682,8 @@ DEFUN ("setcdr", Fsetcdr, 2, 2, 0, /* Set the cdr of CONS-CELL to be NEWCDR. Return NEWCDR. +The cdr of a list is the list without its first element. The cdr of a +dotted pair (A . B) is the second element, B. */ (cons_cell, newcdr)) { @@ -986,7 +1007,12 @@ DEFUN ("<", Flss, 1, MANY, 0, /* Return t if the sequence of arguments is monotonically increasing. -The arguments may be numbers, characters or markers. + +(That is, if there is a second argument, it must be numerically greater than +the first. If there is a third, it must be numerically greater than the +second, and so on.) At least one argument is required. + +The arguments may be numbers, characters or markers. */ (int nargs, Lisp_Object *args)) { @@ -995,6 +1021,11 @@ DEFUN (">", Fgtr, 1, MANY, 0, /* Return t if the sequence of arguments is monotonically decreasing. + +(That is, if there is a second argument, it must be numerically less than +the first. If there is a third, it must be numerically less than the +second, and so forth.) At least one argument is required. + The arguments may be numbers, characters or markers. */ (int nargs, Lisp_Object *args)) diff --text -u 'xemacs-21.5.26/src/depend' 'xemacs-21.5.27/src/depend' Index: ./src/depend --- ./src/depend Tue Mar 28 06:51:28 2006 +++ ./src/depend Mon Apr 24 06:51:28 2006 @@ -48,7 +48,7 @@ gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h events.h frame.h glyphs.h gui.h menubar.h opaque.h redisplay.h scrollbar.h specifier.h systime.h window-impl.h window.h winslots.h xintrinsic.h xmotif.h intl-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h console-x.h console.h xintrinsic.h menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h gui.h keymap.h menubar.h opaque.h redisplay.h scrollbar.h systime.h window-impl.h window.h winslots.h xintrinsic.h -objects-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h insdel.h objects-impl.h objects-x-impl.h objects-x.h objects.h specifier.h xft-fonts.h xintrinsic.h +objects-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h font-mgr.h insdel.h objects-impl.h objects-x-impl.h objects-x.h objects.h specifier.h xintrinsic.h redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h conslots.h console-impl.h console-x-impl.h console-x.h console.h debug.h device-impl.h device.h devslots.h faces.h file-coding.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gutter.h mule-ccl.h objects-impl.h objects-x-impl.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h syssignal.h systime.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h redisplay.h scrollbar-x.h scrollbar.h specifier.h window-impl.h window.h winslots.h xintrinsic.h select-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h frame-impl.h frame.h frameslots.h objects-x.h objects.h opaque.h redisplay.h select-common.h select.h systime.h xintrinsic.h xmotif.h @@ -151,6 +151,7 @@ floatfns.o: $(LISP_H) sysfloat.h syssignal.h fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h console.h device.h events.h extents.h frame.h insdel.h lstream.h opaque.h process.h redisplay.h sysfile.h sysproc.h syssignal.h systime.h font-lock.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h insdel.h syntax.h +font-mgr.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h font-mgr.h hash.h objects-impl.h objects-x-impl.h objects-x.h objects.h specifier.h xintrinsic.h frame.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h process.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window-impl.h window.h winslots.h free-hook.o: $(LISP_H) hash.h gc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h coding-system-slots.h conslots.h console-impl.h console-stream.h console.h device.h elhash.h events.h extents-impl.h extents.h file-coding.h frame-impl.h frame.h frameslots.h glyphs.h lstream.h opaque.h process.h profile.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h window-impl.h window.h winslots.h @@ -170,7 +171,7 @@ hpplay.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h sound.h imgproc.o: $(LISP_H) imgproc.h indent.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h device.h extents.h faces.h frame.h glyphs.h insdel.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h -inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h coding-system-slots.h conslots.h console-gtk.h console-impl.h console-msw.h console.h database.h device-impl.h device.h devslots.h elhash.h events.h extents-impl.h extents.h faces.h file-coding.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h intl-auto-encap-win32.h keymap.h lstream.h objects-impl.h objects.h opaque.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h sysdll.h sysfile.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window-impl.h window.h winslots.h xft-fonts.h xintrinsic.h +inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h coding-system-slots.h conslots.h console-gtk.h console-impl.h console-msw.h console.h database.h device-impl.h device.h devslots.h elhash.h events.h extents-impl.h extents.h faces.h file-coding.h font-mgr.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h intl-auto-encap-win32.h keymap.h lstream.h objects-impl.h objects.h opaque.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h sysdll.h sysfile.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window-impl.h window.h winslots.h xintrinsic.h input-method-motif.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device.h frame-impl.h frame.h frameslots.h redisplay.h xintrinsic.h xmotif.h input-method-xlib.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h redisplay.h scrollbar.h systime.h window-impl.h window.h winslots.h xintrinsic.h insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h device.h extents.h frame.h insdel.h line-number.h lstream.h redisplay.h @@ -272,5 +273,4 @@ widget.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h win32.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h charset.h chartab.h console-msw.h console.h hash.h intl-auto-encap-win32.h profile.h sysfile.h sysproc.h syssignal.h systime.h syswindows.h window.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gutter.h objects.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h -xft-fonts.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h hash.h objects-impl.h objects-x-impl.h objects-x.h objects.h specifier.h xft-fonts.h xintrinsic.h xmu.o: $(CONFIG_H) diff --text -u 'xemacs-21.5.26/src/doc.c' 'xemacs-21.5.27/src/doc.c' Index: ./src/doc.c --- ./src/doc.c Tue Oct 25 20:16:22 2005 +++ ./src/doc.c Sun May 7 23:20:36 2006 @@ -39,10 +39,127 @@ Lisp_Object QSsubstitute; -/* Read and return doc string or instructions from open file descriptor FD - at position POSITION. Does not close the file. Returns string; or if - error, returns a cons holding the error data to pass to Fsignal. - NAME_NONRELOC and NAME_RELOC are only used for the error messages. */ +/* Work out what source file a function or variable came from, taking the + information from the documentation file. */ + +static Lisp_Object +extract_object_file_name (int fd, EMACS_INT doc_pos, + Ibyte *name_nonreloc, Lisp_Object name_reloc, + int standard_doc_file) +{ + Ibyte buf[DOC_MAX_FILENAME_LENGTH+1]; + Ibyte *buffer = buf; + int buffer_size = sizeof (buf), space_left; + Ibyte *from, *to; + REGISTER Ibyte *p = buffer; + Lisp_Object return_me; + Lisp_Object fdstream = Qnil, instream = Qnil; + struct gcpro gcpro1, gcpro2; + EMACS_INT position, seenS = 0; + + GCPRO2 (fdstream, instream); + + position = doc_pos > DOC_MAX_FILENAME_LENGTH ? + doc_pos - DOC_MAX_FILENAME_LENGTH : 0; + + if (0 > lseek (fd, position, 0)) + { + if (name_nonreloc) + name_reloc = build_intstring (name_nonreloc); + return_me = list3 (build_msg_string + ("Position out of range in doc string file"), + name_reloc, make_int (position)); + goto done; + } + + fdstream = make_filedesc_input_stream (fd, 0, -1, 0); + Lstream_set_buffering (XLSTREAM (fdstream), LSTREAM_UNBUFFERED, 0); + instream = + make_coding_input_stream + (XLSTREAM (fdstream), standard_doc_file ? Qescape_quoted : Qbinary, + CODING_DECODE, 0); + Lstream_set_buffering (XLSTREAM (instream), LSTREAM_UNBUFFERED, 0); + + space_left = buffer_size - (p - buffer); + while (space_left > 0) + { + int nread; + + nread = Lstream_read (XLSTREAM (instream), p, space_left); + if (nread < 0) + { + return_me = list1 (build_msg_string + ("Read error on documentation file")); + goto done; + } + + p[nread] = 0; + + if (!nread) + break; + + p += nread; + space_left = buffer_size - (p - buffer); + } + + /* First, search backward for the "\037S" that marks the beginning of the + file name, then search forward from that to the newline or to the end + of the buffer. */ + from = p; + + while (from > buf) + { + --from; + if (seenS) + { + if ('\037' == *from) + { + /* Got a file name; adjust `from' to point to it, break out of + the loop. */ + from += 2; + break; + } + } + /* Is *from 'S' ? */ + seenS = ('S' == *from); + } + + if (buf == from) + { + /* We've scanned back to the beginning of the buffer without hitting + the file name. Either the file name plus the symbol name is longer + than DOC_MAX_FILENAME_LENGTH--which shouldn't happen, because it'll + trigger an assertion failure in make-docfile, the DOC file is + corrupt, or it was produced by a version of make-docfile that + doesn't store the file name with the symbol name and docstring. */ + return_me = list1 (build_msg_string + ("Object file name not stored in doc file")); + goto done; + } + + to = from; + /* Search for the end of the file name. */ + while (++to < p) + { + if ('\n' == *to || '\037' == *to) + { + break; + } + } + + /* Don't require the file name to end in a newline. */ + return_me = make_string (from, to - from); + + done: + if (!NILP (instream)) + { + Lstream_delete (XLSTREAM (instream)); + Lstream_delete (XLSTREAM (fdstream)); + } + + UNGCPRO; + return return_me; +} Lisp_Object unparesseuxify_doc_string (int fd, EMACS_INT position, @@ -287,6 +404,150 @@ return Fread (string); } +static Lisp_Object +get_object_file_name (Lisp_Object filepos) +{ + REGISTER int fd; + REGISTER Ibyte *name_nonreloc = 0; + EMACS_INT position; + Lisp_Object file, tem; + Lisp_Object name_reloc = Qnil; + int standard_doc_file = 0; + + if (INTP (filepos)) + { + file = Vinternal_doc_file_name; + standard_doc_file = 1; + position = XINT (filepos); + } + else if (CONSP (filepos) && INTP (XCDR (filepos))) + { + file = XCAR (filepos); + position = XINT (XCDR (filepos)); + if (position < 0) + position = - position; + } + else + return Qnil; + + if (!STRINGP (file)) + return Qnil; + + /* Put the file name in NAME as a C string. + If it is relative, combine it with Vdoc_directory. */ + + tem = Ffile_name_absolute_p (file); + if (NILP (tem)) + { + Bytecount minsize; + /* XEmacs: Move this check here. OK if called during loadup to + load byte code instructions. */ + if (!STRINGP (Vdoc_directory)) + return Qnil; + + minsize = XSTRING_LENGTH (Vdoc_directory); + /* sizeof ("../lib-src/") == 12 */ + if (minsize < 12) + minsize = 12; + name_nonreloc = alloca_ibytes (minsize + XSTRING_LENGTH (file) + 8); + string_join (name_nonreloc, Vdoc_directory, file); + } + else + name_reloc = file; + + fd = qxe_open (name_nonreloc ? name_nonreloc : + XSTRING_DATA (name_reloc), O_RDONLY | OPEN_BINARY, 0); + if (fd < 0) + { + if (purify_flag) + { + /* sizeof ("../lib-src/") == 12 */ + name_nonreloc = alloca_ibytes (12 + XSTRING_LENGTH (file) + 8); + /* Preparing to dump; DOC file is probably not installed. + So check in ../lib-src. */ + qxestrcpy_ascii (name_nonreloc, "../lib-src/"); + qxestrcat (name_nonreloc, XSTRING_DATA (file)); + + fd = qxe_open (name_nonreloc, O_RDONLY | OPEN_BINARY, 0); + } + + if (fd < 0) + report_file_error ("Cannot open doc string file", + name_nonreloc ? build_intstring (name_nonreloc) : + name_reloc); + } + + tem = extract_object_file_name (fd, position, name_nonreloc, name_reloc, + standard_doc_file); + retry_close (fd); + + if (!STRINGP (tem)) + signal_error_1 (Qinvalid_byte_code, tem); + + return tem; +} + + +static void +weird_doc (Lisp_Object sym, const CIbyte *weirdness, const CIbyte *type, + int pos) +{ + if (!strcmp (weirdness, GETTEXT ("duplicate"))) return; + message ("Note: Strange doc (%s) for %s %s @ %d", + weirdness, type, XSTRING_DATA (XSYMBOL (sym)->name), pos); +} + +DEFUN ("built-in-symbol-file", Fbuilt_in_symbol_file, 1, 1, 0, /* +Return the C source file built-in symbol SYM comes from. +Don't use this. Use the more general `symbol-file' (q.v.) instead. +*/ + (symbol)) +{ + /* This function can GC */ + Lisp_Object fun; + Lisp_Object filename = Qnil; + + if (EQ(Ffboundp(symbol), Qt)) + { + fun = Findirect_function (symbol); + + if (SUBRP (fun)) + { + if (XSUBR (fun)->doc == 0) + return Qnil; + + if ((EMACS_INT) XSUBR (fun)->doc >= 0) + { + weird_doc (symbol, "No file info available for function", + GETTEXT("function"), 0); + return Qnil; + } + else + filename = get_object_file_name + (make_int (- (EMACS_INT) XSUBR (fun)->doc)); + } + } + else if (EQ(Fboundp(symbol), Qt)) + { + Lisp_Object doc_offset = Fget (symbol, Qvariable_documentation, Qnil); + + if (!NILP(doc_offset)) + { + if (INTP(doc_offset)) + { + filename = get_object_file_name + (XINT (doc_offset) > 0 ? doc_offset + : make_int (- XINT (doc_offset))); + } + else if (CONSP(doc_offset)) + { + filename = get_object_file_name(doc_offset); + } + } + } + return filename; +} + DEFUN ("documentation", Fdocumentation, 1, 2, 0, /* Return the documentation string of FUNCTION. Unless a non-nil second argument RAW is given, the @@ -419,14 +680,6 @@ return doc; } -static void -weird_doc (Lisp_Object sym, const CIbyte *weirdness, const CIbyte *type, - int pos) -{ - if (!strcmp (weirdness, GETTEXT ("duplicate"))) return; - message ("Note: Strange doc (%s) for %s %s @ %d", - weirdness, type, XSTRING_DATA (XSYMBOL (sym)->name), pos); -} DEFUN ("Snarf-documentation", Fsnarf_documentation, 1, 1, 0, /* Used during Emacs initialization, before dumping runnable Emacs, @@ -1008,6 +1261,7 @@ void syms_of_doc (void) { + DEFSUBR (Fbuilt_in_symbol_file); DEFSUBR (Fdocumentation); DEFSUBR (Fdocumentation_property); DEFSUBR (Fsnarf_documentation); diff --text -u 'xemacs-21.5.26/src/emacs.c' 'xemacs-21.5.27/src/emacs.c' Index: ./src/emacs.c --- ./src/emacs.c Tue Feb 28 01:29:23 2006 +++ ./src/emacs.c Sun May 7 02:55:59 2006 @@ -911,7 +911,7 @@ #endif /* not SYSTEM_MALLOC or HAVE_LIBMCHECK or DOUG_LEA_MALLOC */ noninteractive = 0; - display_use = 0; + display_use = NULL; inhibit_non_essential_conversion_operations = 1; #ifdef NEW_GC @@ -1620,7 +1620,7 @@ #endif /* HAVE_XIM */ #ifdef USE_XFT - syms_of_xft_fonts(); + syms_of_font_mgr(); #endif #endif /* HAVE_X_WINDOWS */ @@ -2186,6 +2186,7 @@ #ifdef HAVE_BALLOON_HELP vars_of_balloon_x (); #endif + vars_of_console_x (); vars_of_device_x (); #ifdef HAVE_X_DIALOGS vars_of_dialog_x (); @@ -2205,7 +2206,7 @@ #endif #ifdef USE_XFT - vars_of_xft_fonts (); + vars_of_font_mgr (); #endif #endif /* HAVE_X_WINDOWS */ @@ -2335,7 +2336,7 @@ reinit_vars_of_gui_x (); #endif #ifdef USE_XFT - reinit_vars_of_xft_fonts (); + reinit_vars_of_font_mgr (); #endif #endif /* HAVE_X_WINDOWS */ @@ -2407,7 +2408,7 @@ #ifdef USE_XFT /* This uses coding systems. Must be done before faces are init'ed. */ /* not in xft reloaded #3 */ - complex_vars_of_xft_fonts (); + complex_vars_of_font_mgr (); #endif /* Depends on specifiers. */ diff --text -u 'xemacs-21.5.26/src/event-stream.c' 'xemacs-21.5.27/src/event-stream.c' Index: ./src/event-stream.c --- ./src/event-stream.c Tue Feb 28 01:29:24 2006 +++ ./src/event-stream.c Tue Apr 25 01:10:01 2006 @@ -429,6 +429,8 @@ if (!new_buildings) new_buildings = XCOMMAND_BUILDER (allocate_command_builder (Qnil, 0)); + new_buildings->console = collapsing->console; + new_buildings->self_insert_countdown = collapsing->self_insert_countdown; deallocate_event_chain (new_buildings->current_events); diff --text -u /dev/null 'xemacs-21.5.27/src/font-mgr.c' Index: ./src/font-mgr.c --- ./src/font-mgr.c Thu Jan 1 09:00:00 1970 +++ ./src/font-mgr.c Tue May 2 03:17:23 2006 @@ -0,0 +1,780 @@ +/* Lisp font handling implementation for X with Xft. + +Copyright (C) 2003 Eric Knauel and Matthias Neubauer +Copyright (C) 2005 Eric Knauel +Copyright (C) 2004, 2005 Free Software Foundation, Inc. + +Authors: Eric Knauel + Matthias Neubauer + Stephen J. Turnbull +Created: 27 Oct 2003 +Updated: 05 Mar 2005 by Stephen J. Turnbull + +This file is part of XEmacs. + +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with XEmacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in GNU Emacs. */ + +/* This module provides the Lisp interface to fonts in X11, including Xft, + but (at least at first) not GTK+ or Qt. + + Sealevel code should be in ../lwlib/lwlib-fonts.c or + ../lwlib/lwlib-colors.c. +*/ + +#include +#include "lisp.h" +#include "device.h" +#include "device-impl.h" +#include "console-x-impl.h" +#include "objects-x.h" +#include "objects-x-impl.h" +#include "hash.h" +#include "font-mgr.h" + +/* #### TO DO #### + . The "x-xft-*" and "x_xft_*" nomenclature is mostly redundant, especially + if we separate X fonts from Xft fonts, and use fontconfig more generally. + . We should support the most recent Xft first, old Xft libraries later. + . We may (think about it) wish to use fontconfig generally, even if we're + not using Xft. Either way, names that are really from fontconfig should + use the Fc* namespace. + . Mule-ize this file. + . Separate X Font Struct ops from Xft Font ops; give precedence to Xft but + allow fallback to X. + . Push decisions about font choice, defaults, fallbacks to Lisp; if we + really need efficiency, can reimplement in C later. + . Implement symbols interned in this file in the Q* namespace. + . Implement FcMatrix (Lisp vector). + . Implement FcCharSets (Lisp chartable? For implementation hints, see + FcCharSetFirstPage and FcCharSetNextPage). + . Implement FcConfigs. + DONE + . Fontconfig fontnames are encoded in UTF-8. +*/ + +Lisp_Object Qfont_mgr; +Lisp_Object Qfc_patternp; +Lisp_Object Qfc_fontsetp; +/* Lisp_Object Qfc_result_match; */ /* FcResultMatch */ +Lisp_Object Qfc_result_type_mismatch; /* FcResultTypeMismatch */ +Lisp_Object Qfc_result_no_match; /* FcResultNoMatch */ +Lisp_Object Qfc_result_no_id; /* FcResultNoId */ +Lisp_Object Qfc_internal_error; +Lisp_Object Vxlfd_font_name_regexp; /* #### Really needed? */ +Lisp_Object Vxft_version; +/* Lisp_Object Vfc_version; */ /* #### Should have this, too! */ +Fixnum debug_xft; /* Set to 1 enables lots of obnoxious messages. + Setting it to 2 or 3 enables even more. */ + +/**************************************************************** +* FcPattern objects * +****************************************************************/ + +static void +finalize_fc_pattern (void *header, int UNUSED (for_disksave)) +{ + struct fc_pattern *p = (struct fc_pattern *) header; + if (p->fcpatPtr) + { + FcPatternDestroy (p->fcpatPtr); + p->fcpatPtr = 0; + } +} + +static const struct memory_description fcpattern_description [] = { + /* #### nothing here, is this right?? */ + { XD_END } +}; + +DEFINE_LRECORD_IMPLEMENTATION("fc-pattern", fc_pattern, + 0, 0, 0, finalize_fc_pattern, 0, 0, + fcpattern_description, + struct fc_pattern); + +/* + * Helper Functions + */ +static Lisp_Object make_xlfd_font_regexp (void); +static void string_list_to_fcobjectset (Lisp_Object list, FcObjectSet *os); + +/* + extract the C representation of the Lisp string STR and convert it + to the encoding used by the Fontconfig API for property and font + names. I suppose that Qnative is the right encoding, the manual + doesn't say much about this topic. This functions assumes that STR + is a Lisp string. +*/ +#define extract_fcapi_string(str) \ + ((FcChar8 *) NEW_LISP_STRING_TO_EXTERNAL ((str), Qfc_font_name_encoding)) + +/* #### This homebrew lashup should be replaced with FcConstants. + + fontconfig assumes that objects (property names) are statically allocated, + and you will get bizarre results if you pass Lisp string data or strings + allocated on the stack as objects. fontconfig _does_ copy values, so we + (I hope) don't have to worry about that member. + + Probably these functions don't get called so often that the memory leak + due to strdup'ing every time we add a property would matter, but XEmacs + _is_ a long-running process. So we hash them. + + I suspect that using symbol names or even keywords does not provide + assurance that the string won't move in memory. So we hash them + ourselves; hash.c hashtables do not interpret the value pointers. + + This array should be FcChar8**, but GCC 4.x bitches about signedness. */ +static Extbyte *fc_standard_properties[] = { + /* treated specially, ordered first */ + "family", "size", + /* remaining are alphabetized by group */ + /* standard properties in fontconfig and Xft v.2 */ + "antialias", "aspect", "autohint", "charset", "dpi", "file", + "foundry", "ftface", "globaladvance", "hinting", "index", "lang", + "minspace", "outline", "pixelsize", "rasterizer", "rgba", "scalable", + "scale", "slant", "spacing", "style", "verticallayout", "weight", + /* common in modern fonts */ + "fontformat", "fontversion", + /* obsolete after Xft v. 1 */ + "charwidth", "charheight", "core", "encoding", "render" +}; + +static struct hash_table *fc_property_name_hash_table; + +/* #### Maybe fc_intern should be exposed to LISP? The idea is that + fc-pattern-add could warn or error if the property isn't interned. */ + +static FcChar8 * +fc_intern (Lisp_Object property) +{ + const void *dummy; + FcChar8 *prop = extract_fcapi_string (property); + const void *val = gethash (prop, fc_property_name_hash_table, &dummy); + + /* extract_fcapi_string returns something alloca'd + so we can just drop the old value of prop on the floor */ + if (val) + prop = (FcChar8 *) val; + else + { + prop = FcStrCopy (prop); + puthash (prop, NULL, fc_property_name_hash_table); + } + return prop; +} + +DEFUN("fc-pattern-p", Ffc_pattern_p, 1, 1, 0, /* +Returns t if OBJECT is of type fc-pattern, nil otherwise. +*/ + (object)) +{ + return FCPATTERNP(object) ? Qt : Qnil; +} + +DEFUN("fc-pattern-create", Ffc_pattern_create, 0, 0, 0, /* +Return a new, empty fc-pattern object. +*/ + ()) +{ + fc_pattern *fcpat = + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + + fcpat->fcpatPtr = FcPatternCreate(); + return wrap_fcpattern(fcpat); +} + +DEFUN("fc-name-parse", Ffc_name_parse, 1, 1, 0, /* +Parse an Fc font name and return its representation as a fc pattern object. +*/ + (name)) +{ + struct fc_pattern *fcpat = + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + + CHECK_STRING(name); /* #### MEMORY LEAK!! maybe not ... */ + + fcpat->fcpatPtr = FcNameParse (extract_fcapi_string (name)); + return wrap_fcpattern(fcpat); +} + +/* #### Ga-a-ack! Xft's similar function is actually a different API. + We provide both. */ +DEFUN("fc-name-unparse", Ffc_name_unparse, 1, 1, 0, /* +Unparse an fc pattern object to a string. +*/ + (pattern)) +{ + CHECK_FCPATTERN(pattern); + { + FcChar8 *temp = FcNameUnparse(XFCPATTERN_PTR(pattern)); + Lisp_Object res = build_ext_string (temp, Qfc_font_name_encoding); + free (temp); + return res; + } +} + +DEFUN("fc-pattern-duplicate", Ffc_pattern_duplicate, 1, 1, 0, /* +Make a copy of the fc pattern object PATTERN and return it. +*/ + (pattern)) +{ + struct fc_pattern *copy = NULL; + CHECK_FCPATTERN(pattern); + + copy = ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + copy->fcpatPtr = FcPatternDuplicate(XFCPATTERN_PTR(pattern)); + return wrap_fcpattern(copy); +} + +DEFUN("fc-pattern-add", Ffc_pattern_add, 3, 3, 0, /* +Add attributes to the pattern object PATTERN. PROPERTY is a string naming +the attribute to add, VALUE the value for this attribute. + +VALUE may be a string, integer, float, or symbol, in which case the value +will be added as an FcChar8[], int, double, or FcBool respectively. +*/ + (pattern, property, value)) +{ + Bool res = 0; + Extbyte *obj; + FcPattern *fcpat; + + CHECK_FCPATTERN(pattern); + CHECK_STRING(property); + + obj = fc_intern (property); + fcpat = XFCPATTERN_PTR (pattern); + + if (STRINGP(value)) + { + FcChar8 *str = (FcChar8 *) extract_fcapi_string (value); + res = FcPatternAddString (fcpat, obj, str); + } + else if (INTP(value)) + { + res = FcPatternAddInteger (fcpat, obj, XINT(value)); + } + else if (FLOATP(value)) + { + res = FcPatternAddDouble (fcpat, obj, (double) XFLOAT_DATA(value)); + } + else if (SYMBOLP(value)) + { + res = FcPatternAddBool (fcpat, obj, !NILP(value)); + } + /* else ... maybe we should wta here? */ + + return res ? Qt : Qnil; +} + +DEFUN("fc-pattern-del", Ffc_pattern_del, 2, 2, 0, /* +Remove attribute PROPERTY from fc pattern object OBJECT. +*/ + (pattern, property)) +{ + Bool res; + + CHECK_FCPATTERN(pattern); + CHECK_STRING(property); + + res = FcPatternDel(XFCPATTERN_PTR(pattern), + extract_fcapi_string (property)); + return res ? Qt : Qnil; +} + +/* Generic interface to FcPatternGet() + * Don't support the losing symbol-for-property interface. + */ +DEFUN("fc-pattern-get", Ffc_pattern_get, 2, 4, 0, /* +From PATTERN, extract PROPERTY for the ID'th member, of type TYPE. + +PATTERN is an Xft (fontconfig) pattern object. +PROPERTY is a string naming an fontconfig font property. +Optional ID is a nonnegative integer indexing the list of values for PROPERTY + stored in PATTERN, defaulting to 0 (the first value). +Optional TYPE is a symbol, one of 'string, 'boolean, 'integer, 'float, + 'double, 'matrix, 'charset, or 'void, corresponding to the FcValue types. + ('float is an alias for 'double). + +The Lisp types returned will conform to TYPE: + string string + boolean `t' or `nil' + integer integer + double (float) float + matrix not implemented + charset not implemented + void not implemented + +Symbols with names of the form "fc-result-DESCRIPTION" are returned when +the desired value is not available. These are + + fc-result-type-mismatch the value found has an unexpected type + fc-result-no-match there is no such attribute + fc-result-no-id there is no value for the requested ID + +The types of the following standard properties are predefined by fontconfig. +The symbol 'fc-result-type-mismatch will be returned if the object exists but +TYPE does not match the predefined type. It is best not to specify a type +for predefined properties, as a mistake here ensures error returns on the +correct type. + +Each standard property has a convenience accessor defined in fontconfig.el, +named in the form "fc-pattern-get-PROPERTY". The convenience functions are +preferred to `fc-pattern-get' since a typo in the string naming a property +will result in a silent null return, while a typo in a function name will +usually result in a compiler or runtime \"not fboundp\" error. You may use +`defsubst' to define convenience functions for non-standard properties. + +family String Font family name +style String Font style. Overrides weight and slant +slant Int Italic, oblique or roman +weight Int Light, medium, demibold, bold or black +size Double Point size +aspect Double Stretches glyphs horizontally before hinting +pixelsize Double Pixel size +spacing Int Proportional, monospace or charcell +foundry String Font foundry name +antialias Bool Whether glyphs can be antialiased +hinting Bool Whether the rasterizer should use hinting +verticallayout Bool Use vertical layout +autohint Bool Use autohinter instead of normal hinter +globaladvance Bool Use font global advance data +file String The filename holding the font +index Int The index of the font within the file +ftface FT_Face Use the specified FreeType face object +rasterizer String Which rasterizer is in use +outline Bool Whether the glyphs are outlines +scalable Bool Whether glyphs can be scaled +scale Double Scale factor for point->pixel conversions +dpi Double Target dots per inch +rgba Int unknown, rgb, bgr, vrgb, vbgr, none - subpixel geometry +minspace Bool Eliminate leading from line spacing +charset CharSet Unicode chars encoded by the font +lang String List of RFC-3066-style languages this font supports + +The FT_Face, Matrix, CharSet types are unimplemented, so the corresponding +properties are not accessible from Lisp at this time. If the value of a +property returned has type FT_Face, FcCharSet, or FcMatrix, +`fc-result-type-mismatch' is returned. + +The following properties which were standard in Xft v.1 are obsolete in +Xft v.2: encoding, charwidth, charheight, core, and render. */ + (pattern, property, id, type)) +{ + FcChar8 *fc_property; /* UExtbyte * */ + FcResult fc_result; + FcValue fc_value; + + /* + process arguments + */ + CHECK_FCPATTERN (pattern); + +#if 0 + /* Don't support the losing symbol-for-property interface. */ + property = SYMBOLP (property) ? symbol_name (XSYMBOL (property)) : property; +#endif + if (STRINGP (property)) + { + fc_property = (FcChar8 *) extract_fcapi_string (property); + } + else + { + /* if we allow symbols, this would need to be + list3 (Qlambda, list1 (Qobject), + list3 (Qor, list2 (Qstringp, Qobject), + list2 (Qsymbolp, Qobject))) + or something like that? */ + dead_wrong_type_argument (Qstringp, property); + } + + if (!NILP (id)) CHECK_NATNUM (id); + if (!NILP (type)) CHECK_SYMBOL (type); + + /* get property */ + fc_result = FcPatternGet (XFCPATTERN_PTR (pattern), + fc_property, + NILP (id) ? 0 : XINT(id), + &fc_value); + + switch (fc_result) + { + case FcResultMatch: + /* wrap it and return */ + switch (fc_value.type) + { + case FcTypeInteger: + return ((!NILP (type) && !EQ (type, Qinteger)) + ? Qfc_result_type_mismatch : make_int (fc_value.u.i)); + case FcTypeDouble: + return ((!NILP (type) && !EQ (type, intern ("double")) + && !EQ (type, Qfloat)) + ? Qfc_result_type_mismatch : make_float (fc_value.u.d)); + case FcTypeString: + return ((!NILP (type) && !EQ (type, Qstring)) + ? Qfc_result_type_mismatch + : build_ext_string (fc_value.u.s, Qfc_font_name_encoding)); + case FcTypeBool: + return ((!NILP (type) && !EQ (type, Qboolean)) + ? Qfc_result_type_mismatch : fc_value.u.b ? Qt : Qnil); + case FcTypeMatrix: + return Qfc_result_type_mismatch; + /* #### unimplemented + return ((!NILP (type) && !EQ (type, intern ("matrix"))) + ? Qfc_result_type_mismatch : make_int (fc_value.u.m)); + */ + case FcTypeCharSet: + return Qfc_result_type_mismatch; + /* #### unimplemented + return ((!NILP (type) && !EQ (type, intern ("charset"))) + ? Qfc_result_type_mismatch : make_int (fc_value.u.c)); + */ + } + case FcResultTypeMismatch: + return Qfc_result_type_mismatch; + case FcResultNoMatch: + return Qfc_result_no_match; + case FcResultNoId: + return Qfc_result_no_id; + default: + return Qfc_internal_error; + } +} + +DEFUN("fc-font-match", Ffc_font_match, 2, 2, 0, /* +Return the font on DEVICE that most closely matches PATTERN. + +DEVICE is an X11 device. +PATTERN is a fontconfig pattern object. +Returns a fontconfig pattern object representing the closest match to the +given pattern, or an error code. Possible error codes are +`fc-result-no-match' and `fc-result-no-id'. */ + (device, pattern)) +{ + FcResult res; + + struct fc_pattern *res_fcpat = + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + CHECK_FCPATTERN(pattern); /* #### MEMORY LEAKS!!! */ + if (NILP(device)) + return Qnil; + CHECK_X_DEVICE(device); + if (!DEVICE_LIVE_P(XDEVICE(device))) + return Qnil; + + { + FcPattern *p = XFCPATTERN_PTR(pattern); + FcConfig *fcc = FcConfigGetCurrent (); + + FcConfigSubstitute (fcc, p, FcMatchPattern); + FcDefaultSubstitute (p); + res_fcpat->fcpatPtr = FcFontMatch (fcc, p, &res); + } + + if (res_fcpat->fcpatPtr == NULL) + switch (res) { + case FcResultNoMatch: + return Qfc_result_no_match; + case FcResultNoId: + return Qfc_result_no_id; + default: + return Qfc_internal_error; + } + else + return wrap_fcpattern(res_fcpat); +} + +/* NOTE NOTE NOTE This function destroys the FcFontSet passed to it. */ +static Lisp_Object +fontset_to_list (FcFontSet *fontset) +{ + int idx; + Lisp_Object fontlist = Qnil; + fc_pattern *fcpat; + + /* #### improve this error message */ + if (!fontset) + Fsignal (Qinvalid_state, + list1 (build_string ("failed to create FcFontSet"))); + for (idx = 0; idx < fontset->nfont; ++idx) + { + fcpat = + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + fcpat->fcpatPtr = FcPatternDuplicate (fontset->fonts[idx]); + fontlist = Fcons (wrap_fcpattern(fcpat), fontlist); + } + FcFontSetDestroy (fontset); + return fontlist; +} + +/* #### fix this name to correspond to Ben's new nomenclature */ +DEFUN("fc-list-fonts-pattern-objects", Ffc_list_fonts_pattern_objects, + 3, 3, 0, /* +Return a list of fonts on DEVICE that match PATTERN for PROPERTIES. +Each font is represented by a fontconfig pattern object. + +DEVICE is an X11 device. +PATTERN is a fontconfig pattern to be matched. +PROPERTIES is a list of property names (strings) that should match. + +#### DEVICE is unused, ignored, and may be removed if it's not needed to +match other font-listing APIs. */ + (UNUSED (device), pattern, properties)) +{ + FcObjectSet *os; + FcFontSet *fontset; + + CHECK_FCPATTERN (pattern); + CHECK_LIST (properties); + + os = FcObjectSetCreate (); + string_list_to_fcobjectset (properties, os); + /* #### why don't we need to do the "usual substitutions"? */ + fontset = FcFontList (NULL, XFCPATTERN_PTR (pattern), os); + FcObjectSetDestroy (os); + + return fontset_to_list (fontset); + +} + +/* #### maybe this can/should be folded into fc-list-fonts-pattern-objects? */ +DEFUN("fc-font-sort", Ffc_font_sort, 2, 4, 0, /* +Return a list of all fonts sorted by proximity to PATTERN. +Each font is represented by a fontconfig pattern object. + +DEVICE is an X11 device. +PATTERN is a fontconfig pattern to be matched. +Optional argument TRIM, if non-nil, means to trim trailing fonts that do not +contribute new characters to the union repertoire. + +#### Optional argument NOSUB, if non-nil, suppresses some of the usual +property substitutions. DON'T USE THIS in production code, it is intended +for exploring behavior of fontconfig and will be removed when this code is +stable. + +#### DEVICE is unused, ignored, and may be removed if it's not needed to +match other font-listing APIs. */ + (UNUSED (device), pattern, trim, nosub)) +{ + CHECK_FCPATTERN (pattern); + + { + FcConfig *fcc = FcConfigGetCurrent(); + FcFontSet *fontset; + FcPattern *p = XFCPATTERN_PTR (pattern); + FcResult fcresult; + + if (NILP(nosub)) /* #### temporary debug hack */ + FcDefaultSubstitute (p); + FcConfigSubstitute (fcc, p, FcMatchPattern); + fontset = FcFontSort (fcc, p, !NILP(trim), NULL, &fcresult); + + return fontset_to_list (fontset); + } +} + +DEFUN("xlfd-font-name-p", Fxlfd_font_name_p, 1, 1, 0, /* +Check whether the string FONTNAME is a XLFD font name. */ + (fontname)) +{ + CHECK_STRING(fontname); + /* #### should bind `case-fold-search' here? */ + return Fstring_match(Vxlfd_font_name_regexp, fontname, Qnil, Qnil); +} + +/* FcPatternPrint: there is no point in having wrappers fc-pattern-print, + Ffc_pattern_print since this function prints to stdout. */ + +/* Initialization of font-mgr */ + +#define XE_XLFD_SEPARATOR "-" + /* XLFD specifies ISO 8859-1 encoding, but we can't handle non-ASCII + in Mule when this function is called. So use HPC. */ +#if 0 +#define XE_XLFD_PREFIX "\\(\\+[\040-\176\240-\377]*\\)?-" +#define XE_XLFD_OPT_TEXT "\\([\040-\044\046-\176\240-\377]*\\)" +#define XE_XLFD_TEXT "\\([\040-\044\046-\176\240-\377]+\\)" +#else +#define XE_XLFD_PREFIX "\\(\\+[\040-\176]*\\)?-" +#define XE_XLFD_OPT_TEXT "\\([^-]*\\)" +#define XE_XLFD_TEXT "\\([^-]+\\)" +#endif + +#define XE_XLFD_SLANT "\\([0-9ior?*][iot]?\\)" +#define XE_XLFD_SPACING "\\([cmp?*]\\)" + /* Hyphen as minus conflicts with use as separator. */ +#define XE_XLFD_OPT_NEGATE "~?" +#define XE_XLFD_NUMBER "\\([0-9?*]+\\)" +#define XE_XLFD_PSIZE "\\([0-9?*]+\\|\\[[ 0-9+~.e?*]+\\]\\)" + +/* Call this only from the init code + #### This is really horrible, let's get rid of it, please. */ +static Lisp_Object +make_xlfd_font_regexp (void) +{ + struct gcpro gcpro1; + unsigned i; + Lisp_Object reg = Qnil; + const Extbyte *re[] = /* #### This could just be catenated by + cpp and passed to build_ext_string. */ + { + /* Regular expression matching XLFDs as defined by XLFD v. 1.5. + Matches must be case-insensitive. + PSIZE is a pixel or point size, which may be a "matrix". The + syntax of a matrix is not checked, just some lexical properties. + AFAICT none of the TEXT fields except adstyle is optional. + + NB. It should not be a problem if this matches "too much", since + an "old" server will simply not be able to find a matching font. */ + "\\`", + XE_XLFD_PREFIX, /* prefix */ + XE_XLFD_TEXT, /* foundry */ + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* family */ + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* weight */ + XE_XLFD_SEPARATOR, + XE_XLFD_SLANT, /* slant */ + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* swidth */ + XE_XLFD_SEPARATOR, + XE_XLFD_OPT_TEXT, /* adstyle */ + XE_XLFD_SEPARATOR, + XE_XLFD_PSIZE, /* pixelsize */ + XE_XLFD_SEPARATOR, + XE_XLFD_PSIZE, /* pointsize */ + XE_XLFD_SEPARATOR, + XE_XLFD_NUMBER, /* resx */ + XE_XLFD_SEPARATOR, + XE_XLFD_NUMBER, /* resy */ + XE_XLFD_SEPARATOR, + XE_XLFD_SPACING, /* spacing */ + XE_XLFD_SEPARATOR, + XE_XLFD_OPT_NEGATE, /* avgwidth */ + XE_XLFD_NUMBER, + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* registry */ + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* encoding */ + "\\'" + }; + + GCPRO1 (reg); + for (i = 0; i < sizeof(re)/sizeof(Extbyte *); i++) + { + /* #### Currently this is Host Portable Coding, not ISO 8859-1. */ + reg = concat2(reg, build_ext_string (re[i], Qx_font_name_encoding)); + } + + RETURN_UNGCPRO (reg); +} +#undef XE_XLFD_SEPARATOR +#undef XE_XLFD_PREFIX +#undef XE_XLFD_OPT_TEXT +#undef XE_XLFD_TEXT +#undef XE_XLFD_OPT_SLANT +#undef XE_XLFD_OPT_SPACING +#undef XE_XLFD_OPT_NEGATE +#undef XE_XLFD_NUMBER +#undef XE_XLFD_PSIZE + +#define MINL(x,y) ((((unsigned long) (x)) < ((unsigned long) (y))) \ + ? ((unsigned long) (x)) : ((unsigned long) (y))) + +static void +string_list_to_fcobjectset (Lisp_Object list, FcObjectSet *os) +{ + EXTERNAL_LIST_LOOP_2 (elt, list) + { + FcChar8 *s; + + CHECK_STRING (elt); + s = fc_intern (elt); + FcObjectSetAdd (os, s); + } +} + +void +syms_of_font_mgr (void) +{ + INIT_LRECORD_IMPLEMENTATION(fc_pattern); + + DEFSYMBOL_MULTIWORD_PREDICATE(Qfc_patternp); + + DEFSYMBOL(Qfc_result_type_mismatch); + DEFSYMBOL(Qfc_result_no_match); + DEFSYMBOL(Qfc_result_no_id); + DEFSYMBOL(Qfc_internal_error); + DEFSYMBOL(Qfont_mgr); + + DEFSUBR(Ffc_pattern_p); + DEFSUBR(Ffc_pattern_create); + DEFSUBR(Ffc_name_parse); + DEFSUBR(Ffc_name_unparse); + DEFSUBR(Ffc_pattern_duplicate); + DEFSUBR(Ffc_pattern_add); + DEFSUBR(Ffc_pattern_del); + DEFSUBR(Ffc_pattern_get); + DEFSUBR(Ffc_list_fonts_pattern_objects); + DEFSUBR(Ffc_font_sort); + DEFSUBR(Ffc_font_match); + DEFSUBR(Fxlfd_font_name_p); +} + +void +vars_of_font_mgr (void) +{ + /* #### The next two functions belong somewhere else. */ + + /* #### I know, but the right fix is use the generic debug facility. */ + DEFVAR_INT ("xft-debug-level", &debug_xft /* +Level of debugging messages to issue to stderr for Xft. +A nonnegative integer. Set to 0 to suppress all warnings. +Default is 1 to ensure a minimum of debugging output at initialization. +Higher levels give even more information. +*/ ); + debug_xft = 1; + + DEFVAR_LISP("xft-version", &Vxft_version /* +The major version number of the Xft library being used. +*/ ); + Vxft_version = make_int(XFT_VERSION); + + Fprovide (intern ("font-mgr")); +} + +void +complex_vars_of_font_mgr (void) +{ + DEFVAR_LISP("xft-xlfd-font-regexp", &Vxlfd_font_name_regexp /* +The regular expression used to match XLFD font names. */ + ); + Vxlfd_font_name_regexp = make_xlfd_font_regexp(); +} + +void +reinit_vars_of_font_mgr (void) +{ + int i, size = (int) countof (fc_standard_properties); + + FcInit (); + + fc_property_name_hash_table = make_string_hash_table (size); + for (i = 0; i < size; ++i) + puthash (fc_standard_properties[i], NULL, fc_property_name_hash_table); +} + diff --text -u /dev/null 'xemacs-21.5.27/src/font-mgr.h' Index: ./src/font-mgr.h --- ./src/font-mgr.h Thu Jan 1 09:00:00 1970 +++ ./src/font-mgr.h Tue Apr 25 23:02:09 2006 @@ -0,0 +1,71 @@ +/* Lisp font data structures for X and Xft. + +Copyright (C) 2003 Eric Knauel and Matthias Neubauer +Copyright (C) 2005 Eric Knauel +Copyright (C) 2004, 2005 Free Software Foundation, Inc. + +Authors: Eric Knauel + Matthias Neubauer + Stephen J. Turnbull +Created: 27 Oct 2003 +Updated: 05 Mar 2005 by Stephen J. Turnbull + +This file is part of XEmacs. + +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with XEmacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in GNU Emacs. */ + +/* This module provides the Lisp interface to fonts in X11, including Xft, + but (at least at first) not GTK+ or Qt. + + It should be renamed to fonts-x.h. + + Sealevel code should be in ../lwlib/lwlib-fonts.h or + ../lwlib/lwlib-colors.h. +*/ + + +#ifndef INCLUDED_font_mgr_h_ +#define INCLUDED_font_mgr_h_ + +#include "../lwlib/lwlib-fonts.h" +#include "../lwlib/lwlib-colors.h" + +extern Fixnum debug_xft; + +/* Standard for fontconfig. Use a macro to show we're not guessing. */ +#define Qfc_font_name_encoding Qutf_8 + +#define XE_XLFD_MAKE_LISP_STRING(s) (make_string(s, strlen(s))) + +struct fc_pattern +{ + struct LCRECORD_HEADER header; + FcPattern *fcpatPtr; +}; + +typedef struct fc_pattern fc_pattern; + +DECLARE_LRECORD(fc_pattern, struct fc_pattern); +#define XFCPATTERN(x) XRECORD (x, fc_pattern, struct fc_pattern) +#define wrap_fcpattern(p) wrap_record (p, fc_pattern) +#define FCPATTERNP(x) RECORDP (x, fc_pattern) +#define CHECK_FCPATTERN(x) CHECK_RECORD (x, fc_pattern) +#define CONCHECK_FCPATTERN(x) CONCHECK_RECORD (x, fc_pattern) +#define XFCPATTERN_PTR(x) (XFCPATTERN(x)->fcpatPtr) + +#endif /* INCLUDED_font_mgr_h_ */ diff --text -u 'xemacs-21.5.26/src/frame-x.c' 'xemacs-21.5.27/src/frame-x.c' Index: ./src/frame-x.c --- ./src/frame-x.c Sat Nov 26 20:46:08 2005 +++ ./src/frame-x.c Sun May 7 02:56:00 2006 @@ -507,6 +507,7 @@ defi(Qtop, XtNy); #undef def +#undef defi } static Lisp_Object @@ -2307,6 +2308,17 @@ x_set_frame_size (struct frame *f, int cols, int rows) { EmacsFrameSetCharSize (FRAME_X_TEXT_WIDGET (f), cols, rows); + + if (!wedge_metacity) /* cf. EmacsFrameResize */ + { + /* Kick the manager so that it knows we've changed size. */ + XtWidgetGeometry req, repl; + req.request_mode = 0; + XtQueryGeometry (FRAME_X_CONTAINER_WIDGET (f), &req, &repl); + EmacsManagerChangeSize (FRAME_X_CONTAINER_WIDGET (f), + repl.width, repl.height); + } + #if 0 /* this is not correct. x_set_frame_size() is called from Fset_frame_size(), which may or may not have been called diff --text -u 'xemacs-21.5.26/src/inline.c' 'xemacs-21.5.27/src/inline.c' Index: ./src/inline.c --- ./src/inline.c Sat Nov 26 20:46:09 2005 +++ ./src/inline.c Mon Apr 24 01:11:33 2006 @@ -101,7 +101,7 @@ #ifdef HAVE_X_WINDOWS #include "glyphs-x.h" #ifdef USE_XFT -#include "xft-fonts.h" +#include "font-mgr.h" #endif #endif diff --text -u 'xemacs-21.5.26/src/lisp.h' 'xemacs-21.5.27/src/lisp.h' Index: ./src/lisp.h --- ./src/lisp.h Fri Mar 31 08:10:38 2006 +++ ./src/lisp.h Sat May 6 17:09:36 2006 @@ -2676,6 +2676,8 @@ struct lrecord_header lheader; short min_args; short max_args; + /* #### We should make these const Ascbyte * or const Ibyte *, not const + char *. */ const char *prompt; const char *doc; const char *name; diff --text -u 'xemacs-21.5.26/src/lread.c' 'xemacs-21.5.27/src/lread.c' Index: ./src/lread.c --- ./src/lread.c Wed Jul 13 08:26:49 2005 +++ ./src/lread.c Sat Apr 29 23:36:57 2006 @@ -208,6 +208,8 @@ static int locate_file_open_or_access_file (Ibyte *fn, int access_mode); EXFUN (Fread_from_string, 3); +EXFUN (Funicode_to_char, 2); /* In unicode.c. */ + /* When errors are signaled, the actual readcharfun should not be used as an argument if it is an lstream, so that lstreams don't escape to the Lisp level. */ @@ -1675,6 +1677,9 @@ { /* This function can GC */ Ichar c = readchar (readcharfun); + /* \u allows up to four hex digits, \U up to eight. Default to the + behaviour for \u, and change this value in the case that \U is seen. */ + int unicode_hex_count = 4; if (c < 0) signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun)); @@ -1763,7 +1768,7 @@ } } if (i >= 0400) - syntax_error ("Attempt to create non-ASCII/ISO-8859-1 character", + syntax_error ("Non-ISO-8859-1 character specified with octal escape", make_int (i)); return i; } @@ -1791,11 +1796,51 @@ } return i; } + case 'U': + /* Post-Unicode-2.0: Up to eight hex chars */ + unicode_hex_count = 8; + case 'u': + /* A Unicode escape, as in C# (though we only permit them in strings + and characters, not arbitrarily in the source code.) */ + { + REGISTER Ichar i = 0; + REGISTER int count = 0; + Lisp_Object lisp_char; + while (++count <= unicode_hex_count) + { + c = readchar (readcharfun); + /* Remember, can't use isdigit(), isalpha() etc. on Ichars */ + if (c >= '0' && c <= '9') i = (i << 4) + (c - '0'); + else if (c >= 'a' && c <= 'f') i = (i << 4) + (c - 'a') + 10; + else if (c >= 'A' && c <= 'F') i = (i << 4) + (c - 'A') + 10; + else + { + syntax_error ("Non-hex digit used for Unicode escape", + make_char (c)); + break; + } + } + + lisp_char = Funicode_to_char(make_int(i), Qnil); + + if (EQ(Qnil, lisp_char)) + { + /* This is ugly and horrible and trashes the user's data, but + it's what unicode.c does. In the future, unicode-to-char + should not return nil. */ #ifdef MULE - /* #### need some way of reading an extended character with - an escape sequence. */ + i = make_ichar (Vcharset_japanese_jisx0208, 34 + 128, 46 + 128); +#else + i = '~'; #endif + return i; + } + else + { + return XCHAR(lisp_char); + } + } default: return c; diff --text -u 'xemacs-21.5.26/src/mule-coding.c' 'xemacs-21.5.27/src/mule-coding.c' Index: ./src/mule-coding.c --- ./src/mule-coding.c Tue Nov 22 16:19:32 2005 +++ ./src/mule-coding.c Thu May 11 17:58:01 2006 @@ -2927,7 +2927,20 @@ } else if (data->odd_high_byte_groups > 0 && data->even_high_byte_groups > 0) - SET_DET_RESULTS (st, iso2022, DET_SOMEWHAT_UNLIKELY); + { + /* Well, this could be a Latin-1 text, with most high-byte + characters single, but sometimes two are together, though + this happens not as often. This is common for Western + European languages like German, French, Danish, Swedish, etc. + Then we would either have a rather small file and + even_high_byte_groups would be low. + Or we would have a larger file and the ratio of odd to even + groups would be very high. */ + SET_DET_RESULTS (st, iso2022, DET_SOMEWHAT_UNLIKELY); + if (data->even_high_byte_groups <= 3 || + data->odd_high_byte_groups >= 10 * data->even_high_byte_groups) + DET_RESULT (st, iso_8_1) = DET_SOMEWHAT_LIKELY; + } else SET_DET_RESULTS (st, iso2022, DET_AS_LIKELY_AS_UNLIKELY); } diff --text -u 'xemacs-21.5.26/src/number.c' 'xemacs-21.5.27/src/number.c' Index: ./src/number.c --- ./src/number.c Tue Oct 25 20:16:26 2005 +++ ./src/number.c Thu May 11 00:03:35 2006 @@ -408,9 +408,9 @@ number = make_bignum_bg (XRATIO_NUMERATOR (number)); #endif #ifdef HAVE_BIGNUM - if (BIGNUMP (number) && bignum_fits_int_p (XBIGNUM_DATA (number))) + if (BIGNUMP (number) && bignum_fits_emacs_int_p (XBIGNUM_DATA (number))) { - int n = bignum_to_int (XBIGNUM_DATA (number)); + EMACS_INT n = bignum_to_emacs_int (XBIGNUM_DATA (number)); if (NUMBER_FITS_IN_AN_EMACS_INT (n)) number = make_int (n); } diff --text -u 'xemacs-21.5.26/src/number.h' 'xemacs-21.5.27/src/number.h' Index: ./src/number.h --- ./src/number.h Sat May 22 05:56:32 2004 +++ ./src/number.h Thu May 11 00:03:35 2006 @@ -100,6 +100,16 @@ return Fcanonicalize_number (retval); \ } while (0) +#if SIZEOF_EMACS_INT == SIZEOF_LONG +# define bignum_fits_emacs_int_p(b) bignum_fits_long_p(b) +# define bignum_to_emacs_int(b) bignum_to_long(b) +#elif SIZEOF_EMACS_INT == SIZEOF_INT +# define bignum_fits_emacs_int_p(b) bignum_fits_int_p(b) +# define bignum_to_emacs_int(b) bignum_to_int(b) +#else +# error Bignums currently do not work with long long Emacs integers. +#endif + extern Lisp_Object make_bignum (long); extern Lisp_Object make_bignum_bg (bignum); extern bignum scratch_bignum, scratch_bignum2; diff --text -u 'xemacs-21.5.26/src/objects-x.c' 'xemacs-21.5.27/src/objects-x.c' Index: ./src/objects-x.c --- ./src/objects-x.c Fri Mar 17 23:30:45 2006 +++ ./src/objects-x.c Tue May 9 19:40:09 2006 @@ -39,7 +39,7 @@ #include "objects-x-impl.h" #ifdef USE_XFT -#include "xft-fonts.h" +#include "font-mgr.h" #endif int x_handle_non_fully_specified_fonts; @@ -206,7 +206,7 @@ /************************************************************************/ #ifdef USE_XFT -/* #### all these #defines should probably move to xft-fonts.h */ +/* #### all these #defines should probably move to font-mgr.h */ /* The format of a fontname (as returned by fontconfig) is not well-documented, @@ -255,7 +255,7 @@ DECLARE_EISTRING (eistrpxft_name); \ FcChar8 *name = FcNameUnparse (pattern); \ \ - eicpy_ext(eistrpxft_name, name, Qxft_font_name_encoding); \ + eicpy_ext(eistrpxft_name, name, Qfc_font_name_encoding); \ DEBUG_XFT1 (level, format, eidata(eistrpxft_name)); \ free (name); \ } while (0) @@ -267,7 +267,7 @@ #define CHECKING_LANG(level,font,lang) \ do { \ DECLARE_EISTRING (eistrcl_name); \ - eicpy_ext(eistrcl_name, font, Qxft_font_name_encoding); \ + eicpy_ext(eistrcl_name, font, Qfc_font_name_encoding); \ DEBUG_XFT2 (level, "checking if %s handles %s\n", \ eidata(eistrcl_name), lang); \ } while (0) @@ -295,7 +295,7 @@ The problem is that the fontconfig/Xft functions work much too hard to ensure that something is returned; but that something need not be at all close to what we asked for. */ - LISP_STRING_TO_EXTERNAL (f->name, extname, Qxft_font_name_encoding); + LISP_STRING_TO_EXTERNAL (f->name, extname, Qfc_font_name_encoding); rf = xft_open_font_by_name (dpy, extname); #endif LISP_STRING_TO_EXTERNAL (f->name, extname, Qx_font_name_encoding); @@ -309,6 +309,12 @@ return 0; } + if (rf && fs) + { + XFreeFont (dpy, fs); + fs = NULL; /* we don' need no steenkin' X font */ + } + if (fs && !fs->max_bounds.width) { /* yes, this has been known to happen. */ @@ -316,8 +322,7 @@ fs = NULL; maybe_signal_error (Qgui_error, "X font is too small", f->name, Qfont, errb); - if (!rf) - return 0; + return 0; } /* Now that we're sure that we will succeed, we can allocate data without @@ -353,11 +358,12 @@ f->height = rf->height; f->proportional_p = 1; /* we can't recognize monospaced fonts! */ - DEBUG_XFT4 (0, "initialized metrics ascent %d descent %d width %d height %d\n", - f->ascent, f->descent, f->width, f->height); - /* we also output on initialization of any font below */ - DEBUG_XFT1 (2, "initialized Xft font %s\n", XSTRING_DATA(f->name)); - fs = NULL; /* we don' need no steenkin' X font */ + /* #### This message appears wa-a-ay too often! + We probably need to cache truenames or something? + Even if Xft does it for us, we cons too many font instances. */ + DEBUG_XFT4 (0, + "initialized metrics ascent %d descent %d width %d height %d\n", + f->ascent, f->descent, f->width, f->height); } else { @@ -808,7 +814,7 @@ if (res) { FONT_INSTANCE_TRUENAME (f) = - build_ext_string (res, Qxft_font_name_encoding); + build_ext_string (res, Qfc_font_name_encoding); free (res); return FONT_INSTANCE_TRUENAME (f); } @@ -1218,7 +1224,7 @@ DECLARE_EISTRING (eistr_longname); /* omit FC_LANG and FC_CHARSET */ DECLARE_EISTRING (eistr_fullname); /* everything */ - LISP_STRING_TO_EXTERNAL (font, patternext, Qxft_font_name_encoding); + LISP_STRING_TO_EXTERNAL (font, patternext, Qfc_font_name_encoding); fcc = FcConfigGetCurrent (); /* parse the name, do the substitutions, and match the font */ @@ -1251,7 +1257,7 @@ /* full name, including language coverage and repertoire */ name = FcNameUnparse (p); - eicpy_ext (eistr_fullname, name, Qxft_font_name_encoding); + eicpy_ext (eistr_fullname, name, Qfc_font_name_encoding); free (name); /* long name, omitting coverage and repertoire, plus a number @@ -1268,7 +1274,7 @@ FcPatternDel (p, FC_SCALE); FcPatternDel (p, FC_FONTVERSION); name = FcNameUnparse (p); - eicpy_ext (eistr_longname, name, Qxft_font_name_encoding); + eicpy_ext (eistr_longname, name, Qfc_font_name_encoding); free (name); /* nickname, just family and size, but @@ -1282,7 +1288,7 @@ FcPatternDel (p, FC_SCALABLE); FcPatternDel (p, FC_DPI); name = FcNameUnparse (p); - eicpy_ext (eistr_shortname, name, Qxft_font_name_encoding); + eicpy_ext (eistr_shortname, name, Qfc_font_name_encoding); free (name); FcPatternDestroy (p); diff --text -u 'xemacs-21.5.26/src/process-unix.c' 'xemacs-21.5.27/src/process-unix.c' Index: ./src/process-unix.c --- ./src/process-unix.c Fri Feb 4 13:06:34 2005 +++ ./src/process-unix.c Sun Apr 2 01:21:11 2006 @@ -1545,10 +1545,13 @@ } while (Lstream_was_blocked_p (XLSTREAM (p->pipe_outstream))) { - /* Buffer is full. Wait, accepting input; - that may allow the program - to finish doing output and read more. */ - Faccept_process_output (Qnil, make_int (1), Qnil); + /* Buffer is full. Wait 10ms, accepting input; that may + allow the program to finish doing output and read more. + Used to be 1s, but that's excruciating. nt_send_process + uses geometrically increasing timeouts (up to 1s). This + might be a good idea here. + N.B. timeout_secs = Qnil is faster than Qzero. */ + Faccept_process_output (Qnil, Qnil, make_int (10)); /* It could have *really* finished, deleting the process */ if (NILP(p->pipe_outstream)) return; diff --text -u 'xemacs-21.5.26/src/redisplay.c' 'xemacs-21.5.27/src/redisplay.c' Index: ./src/redisplay.c --- ./src/redisplay.c Sat Nov 26 20:46:10 2005 +++ ./src/redisplay.c Tue Apr 25 23:02:09 2006 @@ -470,9 +470,12 @@ where one page is used for Emacs and another for all else. */ int no_redraw_on_reenter; -Lisp_Object Vwindow_system; /* nil or a symbol naming the window system +Lisp_Object Vwindow_system; /* #### this variable is deprecated + nil or a symbol naming the window system under which emacs is running - (`x' is the only current possibility) */ + (`x', `gtk', `mswindows', and `tty' are + supported -- yes, TTYs are window systems + for this purpose. */ Lisp_Object Vinitial_window_system; Lisp_Object Vglobal_mode_string; diff --text -u 'xemacs-21.5.26/src/symbols.c' 'xemacs-21.5.27/src/symbols.c' Index: ./src/symbols.c --- ./src/symbols.c Tue Feb 28 01:29:28 2006 +++ ./src/symbols.c Sat May 6 17:09:37 2006 @@ -719,6 +719,18 @@ return newdef; } +DEFUN ("subr-name", Fsubr_name, 1, 1, 0, /* +Return name of function SUBR. +SUBR must be a built-in function. +*/ + (subr)) +{ + const char *name; + if (!SUBRP (subr)) + wrong_type_argument (Qsubrp, subr); + name = XSUBR (subr)->name; + return make_string ((const Ibyte *)name, strlen (name)); +} DEFUN ("setplist", Fsetplist, 2, 2, 0, /* Set SYMBOL's property list to NEWPLIST, and return NEWPLIST. @@ -3706,6 +3718,7 @@ DEFSUBR (Ffset); DEFSUBR (Fdefine_function); Ffset (intern ("defalias"), intern ("define-function")); + DEFSUBR (Fsubr_name); DEFSUBR (Fsetplist); DEFSUBR (Fsymbol_value_in_buffer); DEFSUBR (Fsymbol_value_in_console); diff --text -u 'xemacs-21.5.26/src/symsinit.h' 'xemacs-21.5.27/src/symsinit.h' Index: ./src/symsinit.h --- ./src/symsinit.h Tue Feb 28 01:29:29 2006 +++ ./src/symsinit.h Sun May 7 02:56:00 2006 @@ -149,7 +149,7 @@ void syms_of_menubar_x (void); void syms_of_minibuf (void); void syms_of_module (void); -void syms_of_canna_api (void); +EXTERN_C void syms_of_canna_api (void); void syms_of_mule_ccl (void); void syms_of_mule_charset (void); void syms_of_mule_coding (void); @@ -160,7 +160,7 @@ void syms_of_objects_mswindows (void); void syms_of_objects_tty (void); void syms_of_objects_x (void); -void syms_of_xft_fonts (void); +void syms_of_font_mgr (void); EXTERN_C void syms_of_postgresql (void); void syms_of_print (void); void syms_of_process (void); @@ -306,6 +306,7 @@ void vars_of_console_stream (void); void vars_of_console_mswindows (void); void vars_of_console_tty (void); +void vars_of_console_x (void); void vars_of_data (void); void vars_of_database (void); void vars_of_debug (void); @@ -388,7 +389,7 @@ void reinit_vars_of_minibuf (void); void vars_of_module (void); void reinit_vars_of_module (void); -void vars_of_canna_api (void); +EXTERN_C void vars_of_canna_api (void); void vars_of_mule_ccl(void); void vars_of_mule_charset (void); void vars_of_mule_coding (void); @@ -398,8 +399,8 @@ void vars_of_nt (void); void vars_of_number (void); void vars_of_objects (void); -void vars_of_xft_fonts (void); -void reinit_vars_of_xft_fonts (void); +void vars_of_font_mgr (void); +void reinit_vars_of_font_mgr (void); void reinit_vars_of_objects (void); void vars_of_objects_tty (void); void vars_of_objects_mswindows (void); @@ -484,7 +485,7 @@ void complex_vars_of_minibuf (void); void reinit_complex_vars_of_minibuf (void); void complex_vars_of_keymap (void); -void complex_vars_of_xft_fonts (void); +void complex_vars_of_font_mgr (void); /* Late initialization -- stuff pertaining only to interactive usage, I/O, or Lisp reading. (Dump-time and run-time, but the code itself diff --text -u 'xemacs-21.5.26/src/sysfile.h' 'xemacs-21.5.27/src/sysfile.h' Index: ./src/sysfile.h --- ./src/sysfile.h Tue Oct 25 20:16:28 2005 +++ ./src/sysfile.h Sat May 6 17:09:37 2006 @@ -447,8 +447,6 @@ separator. */ -#ifdef emacs - /* We used to put some of this stuff in the s+m files for the various types of MS Windows, but that's disingenuous. The various definitions above were specifically created for MS Windows, and the "if not, then @@ -469,6 +467,7 @@ #define SEPCHAR ';' #define DEFAULT_DIRECTORY_SEP '\\' +#ifdef emacs DECLARE_INLINE_HEADER (Ibyte sysfile_get_directory_sep (void)) { if (!CHARP (Vdirectory_sep_char) @@ -486,6 +485,13 @@ } #define DIRECTORY_SEP sysfile_get_directory_sep() +#else /* emacs */ + +/* The above Lisp variables are not available to make-docfile, etc. */ +#define DIRECTORY_SEP DEFAULT_DIRECTORY_SEP + +#endif /* emacs */ + #else /* not WIN32_NATIVE */ #define SEPCHAR ':' @@ -501,6 +507,8 @@ #define IS_DEVICE_SEP(c) ((c) == DEVICE_SEP) +#ifdef emacs + DECLARE_INLINE_HEADER (int IS_DIRECTORY_SEP (Ichar c)) { return (c == '/' || c == '\\'); @@ -511,6 +519,22 @@ return (c == '/' || c == '\\' || c == ':'); } +#else /* emacs */ + +/* The Ichar typedef is not available to make-docfile, etc. */ + +DECLARE_INLINE_HEADER (int IS_DIRECTORY_SEP (int c)) +{ + return (c == '/' || c == '\\'); +} + +DECLARE_INLINE_HEADER (int IS_ANY_SEP (int c)) +{ + return (c == '/' || c == '\\' || c == ':'); +} + +#endif + #else /* not WIN32_ANY */ #define IS_DEVICE_SEP(c) 0 @@ -518,6 +542,12 @@ #define IS_ANY_SEP(c) IS_DIRECTORY_SEP (c) #endif /* WIN32_ANY */ + +/* How long can a source filename be in DOC (including "\037S" at the start + and "\n" at the end) ? */ +#define DOC_MAX_FILENAME_LENGTH 2048 + +#ifdef emacs #if defined (WIN32_NATIVE) #define PATHNAME_RESOLVE_LINKS(path, pathout) \ diff --text -u 'xemacs-21.5.26/src/unicode.c' 'xemacs-21.5.27/src/unicode.c' Index: ./src/unicode.c --- ./src/unicode.c Tue Oct 25 20:16:29 2005 +++ ./src/unicode.c Sun Apr 23 00:18:55 2006 @@ -202,11 +202,10 @@ #ifdef MULE -/* #### Using ints for to_unicode is OK (as long as they are >= 32 bits). - However, shouldn't the shorts below be unsigned? - - Answer: Doesn't matter because the values being converted to are only - 96x96. */ +/* Using ints for to_unicode is OK (as long as they are >= 32 bits). + In from_unicode, we're converting from Mule characters, which means + that the values being converted to are only 96x96, and we can save + space by using shorts (signedness doesn't matter). */ static int *to_unicode_blank_1; static int **to_unicode_blank_2; diff --text -u 'xemacs-21.5.26/tests/ChangeLog' 'xemacs-21.5.27/tests/ChangeLog' Index: ./tests/ChangeLog --- ./tests/ChangeLog Sat Apr 1 03:46:16 2006 +++ ./tests/ChangeLog Tue May 16 13:16:06 2006 @@ -1,3 +1,7 @@ +2006-05-16 Stephen J. Turnbull + + * XEmacs 21.5.27 "fiddleheads" is released. + 2006-03-31 Stephen J. Turnbull * XEmacs 21.5.26 "endive" is released. diff --text -u 'xemacs-21.5.26/version.sh' 'xemacs-21.5.27/version.sh' Index: ./version.sh --- ./version.sh Sat Apr 1 03:46:16 2006 +++ ./version.sh Tue May 16 13:16:07 2006 @@ -2,11 +2,11 @@ emacs_is_beta=t emacs_major_version=21 emacs_minor_version=5 -emacs_beta_version=26 -xemacs_codename="endive" +emacs_beta_version=27 +xemacs_codename="fiddleheads" emacs_kit_version= infodock_major_version=4 infodock_minor_version=0 infodock_build_version=8 xemacs_extra_name="" -xemacs_release_date="2006-04-01" +xemacs_release_date="2006-05-16" #### End of Patch data #### #### ApplyPatch data follows #### # Data version : 1.0 # Date generated : Tue May 16 13:16:37 2006 # Generated by : makepatch 2.00_12* # Recurse directories : Yes # Excluded files : (\A|/).*\~\Z # (\A|/).*\.a\Z # (\A|/).*\.bak\Z # (\A|/).*\.BAK\Z # (\A|/).*\.elc\Z # (\A|/).*\.exe\Z # (\A|/).*\.gz\Z # (\A|/).*\.ln\Z # (\A|/).*\.o\Z # (\A|/).*\.obj\Z # (\A|/).*\.olb\Z # (\A|/).*\.old\Z # (\A|/).*\.orig\Z # (\A|/).*\.rej\Z # (\A|/).*\.so\Z # (\A|/).*\.Z\Z # (\A|/)\.del\-.*\Z # (\A|/)\.make\.state\Z # (\A|/)\.nse_depinfo\Z # (\A|/)core\Z # (\A|/)tags\Z # (\A|/)TAGS\Z # (\A|/).*\~\Z # (\A|/)\.cvsignore\Z # (\A|/)CVS\Z # (\A|/)MANIFEST\Z # (\A|/)\.precious\Z # (\A|/)TAGS\Z # (\A|/)xemacs\-packages\Z # (\A|/)mule\-packages\Z # (\A|/)autom4te.*\Z # (\A|/)\+build\Z # (\A|/).*\.gz\Z # (\A|/)display\Z # (\A|/)TUTORIAL\.ru\Z # (\A|/)TUTORIAL\.th\Z # (\A|/).*\.png\Z # (\A|/).*\.bmp\Z # (\A|/).*\.ico\Z # (\A|/).*\.elc\Z # (\A|/).*\.info.*\Z # r './src/xft-fonts.h' 2274 0 # r './src/xft-fonts.c' 26551 0 # r './modules/auto-autoloads.el' 1757 0 # r './lisp/mule/custom-load.el' 4430 0 # r './lisp/mule/auto-autoloads.el' 35808 0 # r './lisp/finder-inf.el' 21778 0 # r './lisp/custom-load.el' 44056 0 # r './lisp/auto-autoloads.el' 138551 0 # r './etc/PROBLEMS' 91668 0 # p './COPYING' 18063 1147360039 0100644 # p './ChangeLog' 181233 1147752966 0100644 # p './configure' 1259966 1147752964 0100755 # p './configure.ac' 224169 1145808677 0100644 # p './etc/ChangeLog' 48290 1147752966 0100644 # p './lib-src/ChangeLog' 53833 1147752966 0100644 # p './lib-src/make-docfile.c' 32374 1146327321 0100644 # p './lisp/ChangeLog' 815174 1147752966 0100644 # p './lisp/cl.el' 25690 1145823146 0100644 # p './lisp/cmdloop.el' 27760 1145207370 0100644 # p './lisp/dumped-lisp.el' 10426 1146327326 0100644 # p './lisp/faces.el' 88032 1145973712 0100644 # c './lisp/font-mgr.el' 0 1145973713 0100644 # p './lisp/font.el' 51999 1145973713 0100644 # p './lisp/fontconfig.el' 21460 1145973713 0100644 # p './lisp/help.el' 65854 1146327326 0100644 # p './lisp/loadhist.el' 5551 1146327326 0100644 # p './lisp/mule/ethio-util.el' 71325 1146336932 0100644 # p './lisp/simple.el' 181454 1145994384 0100644 # p './lisp/startup.el' 63702 1145973713 0100644 # p './lisp/x-faces.el' 39195 1145973714 0100644 # p './lisp/x-font-menu.el' 14130 1147359425 0100644 # p './lisp/x-init.el' 15839 1145973714 0100644 # p './lwlib/ChangeLog' 32865 1147752966 0100644 # p './lwlib/lwlib-Xaw.c' 27224 1146583832 0100644 # p './lwlib/lwlib-fonts.c' 3593 1145973724 0100644 # p './lwlib/lwlib-fonts.h' 1703 1147461929 0100644 # p './lwlib/xlwgauge.c' 28360 1146583832 0100644 # p './lwlib/xlwmenu.c' 105482 1147461929 0100644 # p './lwlib/xlwmenuP.h' 2845 1147461929 0100644 # p './lwlib/xlwtabs.c' 70713 1147461929 0100644 # p './lwlib/xlwtabs.h' 5898 1147461929 0100644 # p './lwlib/xlwtabsP.h' 4052 1147461929 0100644 # p './man/ChangeLog' 194536 1147752966 0100644 # p './man/beta.texi' 35262 1147151715 0100644 # p './man/internals/internals.texi' 1392411 1145808688 0100644 # p './man/lispref/objects.texi' 81961 1146321414 0100644 # p './man/xemacs/custom.texi' 108825 1147150830 0100644 # p './man/xemacs/xemacs.texi' 46676 1147150830 0100644 # p './modules/ChangeLog' 13498 1147752966 0100644 # p './netinstall/ChangeLog' 14204 1147752966 0100644 # p './nt/ChangeLog' 69647 1147752966 0100644 # p './nt/installer/Wise/ChangeLog' 2746 1147752966 0100644 # p './nt/xemacs.dsp' 23797 1146086542 0100644 # p './nt/xemacs.dsw' 506 1146086542 0100644 # p './src/ChangeLog' 1578111 1147752966 0100644 # p './src/EmacsFrame.c' 22758 1146938159 0100644 # p './src/EmacsFrameP.h' 4554 1146938159 0100644 # p './src/EmacsManager.c' 8499 1146938159 0100644 # p './src/EmacsShell-sub.c' 13351 1147073725 0100644 # p './src/Makefile.in.in' 34130 1145808692 0100644 # p './src/alloc.c' 150132 1145823151 0100644 # p './src/alsaplay.c' 11033 1145381312 0100644 # p './src/config.h.in' 33976 1145808692 0100644 # p './src/console-x-impl.h' 15005 1146938159 0100644 # p './src/console-x.c' 11461 1146938159 0100644 # p './src/console-x.h' 7540 1145808692 0100644 # p './src/console.h' 5506 1145973728 0100644 # p './src/data.c' 98383 1145823151 0100644 # p './src/depend' 43081 1145829088 0100644 # p './src/doc.c' 29411 1147011636 0100644 # p './src/emacs.c' 146974 1146938159 0100644 # p './src/event-stream.c' 175081 1145895001 0100644 # c './src/font-mgr.c' 0 1146507443 0100644 # c './src/font-mgr.h' 0 1145973729 0100644 # p './src/frame-x.c' 85211 1146938160 0100644 # p './src/inline.c' 3709 1145808693 0100644 # p './src/lisp.h' 211388 1146902976 0100644 # p './src/lread.c' 93320 1146321417 0100644 # p './src/mule-coding.c' 95830 1147337881 0100644 # p './src/number.c' 21364 1147273415 0100644 # p './src/number.h' 10370 1147273415 0100644 # p './src/objects-x.c' 50817 1147171209 0100644 # p './src/process-unix.c' 66959 1143908471 0100644 # p './src/redisplay.c' 300821 1145973729 0100644 # p './src/symbols.c' 118593 1146902977 0100644 # p './src/symsinit.h' 19285 1146938160 0100644 # p './src/sysfile.h' 14834 1146902977 0100644 # p './src/unicode.c' 72092 1145719135 0100644 # p './tests/ChangeLog' 23529 1147752966 0100644 # p './version.sh' 266 1147752967 0100644 #### End of ApplyPatch data #### #### End of Patch kit [created: Tue May 16 13:16:37 2006] #### #### Patch checksum: 9351 301143 27107 #### #### Checksum: 9394 302623 19418 ####