User: stephent
Date: 05/09/27 18:29:54
Branch: xemacs sjt-xft
xemacs/lisp sjt-xft
xemacs/lwlib sjt-xft
xemacs/man sjt-xft
xemacs/man/internals sjt-xft
xemacs/man/lispref sjt-xft
xemacs/modules sjt-xft
xemacs/nt sjt-xft
xemacs/src sjt-xft
Modified: xemacs/src ChangeLog ChangeLog.Xft Makefile.in.in
console-impl.h event-Xt.c glyphs-eimage.c
glyphs-gtk.c glyphs-msw.c glyphs-x.c glyphs.c
intl.c lisp.h nt.c number-gmp.c number-gmp.h
objects-x.c rangetab.c specifier.c sysdep.c text.c
Log:
<87vf0m8qoz.fsf_-_(a)tleepslib.sk.tsukuba.ac.jp>
<87r7ba8ojc.fsf_-_(a)tleepslib.sk.tsukuba.ac.jp>
* Synch with mainline 2005-09-26.
* Improve buildability on non-Athena+Xft platforms.
- Wrap error checking of rf in an #ifdef USE_XFT, from Clemens Fruhwirth.
- Prevent Xft and Motif from mixing, from Olivier Galibert.
Revision Changes Path
1.984.2.8 +1 -1 XEmacs/xemacs/version.sh
Index: version.sh
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v
retrieving revision 1.984.2.7
retrieving revision 1.984.2.8
diff -u -p -r1.984.2.7 -r1.984.2.8
--- version.sh 2005/09/23 18:20:28 1.984.2.7
+++ version.sh 2005/09/27 16:28:45 1.984.2.8
@@ -8,5 +8,5 @@ emacs_kit_version=
infodock_major_version=4
infodock_minor_version=0
infodock_build_version=8
-xemacs_extra_name="(+Xft+CVS-20050922)"
+xemacs_extra_name="(+Xft+CVS-20050926)"
xemacs_release_date="2005-09-14"
1.599.2.11 +0 -13 XEmacs/xemacs/lisp/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v
retrieving revision 1.599.2.10
retrieving revision 1.599.2.11
diff -u -p -r1.599.2.10 -r1.599.2.11
--- ChangeLog 2005/09/24 14:02:18 1.599.2.10
+++ ChangeLog 2005/09/27 16:28:49 1.599.2.11
@@ -1,16 +1,3 @@
-2005-09-22 Stephen J. Turnbull <stephen(a)xemacs.org>
-
- * mule/canna-leim.el: Add comment on autoloading strategy.
- (canna-activate): Handle CANNA in ELL.
-
- * dumped-lisp.el (preloaded-file-list): Remove dependency of
- canna-leim on CANNA. Canna may be an ELL.
-
-2005-09-21 Stephen J. Turnbull <stephen(a)xemacs.org>
-
- * mule/mule-cmds.el (input-method-alist, register-input-method):
- Improve docstrings and formal parameter names.
-
2005-09-14 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.22 "cucumber" is released.
1.1.2.5 +13 -0 XEmacs/xemacs/lisp/Attic/ChangeLog.Xft
Index: ChangeLog.Xft
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/Attic/ChangeLog.Xft,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.4 -r1.1.2.5
--- ChangeLog.Xft 2005/09/08 06:56:17 1.1.2.4
+++ ChangeLog.Xft 2005/09/27 16:28:51 1.1.2.5
@@ -1,3 +1,16 @@
+2005-09-22 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * mule/canna-leim.el: Add comment on autoloading strategy.
+ (canna-activate): Handle CANNA in ELL.
+
+ * dumped-lisp.el (preloaded-file-list): Remove dependency of
+ canna-leim on CANNA. Canna may be an ELL.
+
+2005-09-21 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * mule/mule-cmds.el (input-method-alist, register-input-method):
+ Improve docstrings and formal parameter names.
+
2005-09-07 Clemens Fruhwirth <clemens(a)endorphin.org>
* font.el (font-default-font-for-device): Remove vestigial code
1.1.2.6 +14 -12 XEmacs/xemacs/lisp/Attic/fontconfig.el
Index: fontconfig.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/Attic/fontconfig.el,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -p -r1.1.2.5 -r1.1.2.6
--- fontconfig.el 2005/09/06 08:24:45 1.1.2.5
+++ fontconfig.el 2005/09/27 16:28:51 1.1.2.6
@@ -7,10 +7,12 @@
(defmacro fc-define-property (property type docfrag &optional obsolete-p)
"Define PROPERTY as a fontconfig font property of type TYPE using DOCFRAG.
-This macro creates convenience wrappers around `fc-pattern-get' and
-`fc-pattern-add' for PROPERTY. Wrappers are preferred to use of the
-primitives with a string as the OBJECT argument because typos result in
-\"not fboundp\" errors rather than silent null returns.
+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.
PROPERTY is a string.
TYPE is a symbol indicating the type of the property value. It is used only
@@ -20,14 +22,12 @@ interpolated into a format to create the
OBSOLETE-P if non-nil marks the property as pertaining only to older versions
of fontconfig or Xft. This merely adds a deprecation to the docstrings.
-A font property is a key in a fontconfig pattern and is associated with
-one or more values of a given type. This macro defines an accessor named
-`fc-pattern-get-PROPERTY' which takes a fontconfig pattern object and an
-integer as arguments, and returns the value associated with PROPERTY and ID
-in the pattern object. Since it is not possible to associate a value to
-PROPERTY for a particular ID, it is not very useful to interpret the values
-associated with a given id for different properties as being linked to each
- other in some way.
+This macro defines an accessor named `fc-pattern-get-PROPERTY' which takes
+a fontconfig pattern object and an integer as arguments, and returns the
+value associated with PROPERTY and ID in the pattern object. Since it is
+not possible to associate a value to PROPERTY for a particular ID, it is
+not very useful to interpret the values associated with a given id for
+different properties as being linked to each other in some way.
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
@@ -391,3 +391,5 @@ A new object is allocated and returned."
(not (equal result 'fc-internal-error))))
(provide 'fontconfig)
+
+;;; fontconfig.el ends here
1.1.2.3 +6 -0 XEmacs/xemacs/lwlib/Attic/ChangeLog.Xft
Index: ChangeLog.Xft
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/Attic/ChangeLog.Xft,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -p -r1.1.2.2 -r1.1.2.3
--- ChangeLog.Xft 2005/09/06 08:24:48 1.1.2.2
+++ ChangeLog.Xft 2005/09/27 16:28:55 1.1.2.3
@@ -1,3 +1,9 @@
+2005-09-26 Olivier Galibert <galibert(a)xemacs.org>
+
+ * xlwmenu.c:
+ * xlwmenuP.h:
+ Give USE_XFT_MENUBARS priority over USE_MOTIF.
+
2005-09-06 Stephen J. Turnbull <stephen(a)xemacs.org>
* lwlib-fonts.c (xft_open_font_by_name): Fix heuristic for XLFDs.
1.37.2.4 +22 -22 XEmacs/xemacs/lwlib/xlwmenu.c
Index: xlwmenu.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwmenu.c,v
retrieving revision 1.37.2.3
retrieving revision 1.37.2.4
diff -u -p -r1.37.2.3 -r1.37.2.4
--- xlwmenu.c 2005/09/06 08:24:48 1.37.2.3
+++ xlwmenu.c 2005/09/27 16:28:55 1.37.2.4
@@ -74,7 +74,7 @@ extern Widget lw_menubar_widget;
static XtResource
xlwMenuResources[] =
{
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
/* There are three font list resources, so that we can accept either of
the resources *fontList: or *font:, and so that we can tell the
difference between them being specified, and being defaulted to a
@@ -175,7 +175,7 @@ static void Start (Widget w, XEvent *ev,
static void Drag (Widget w, XEvent *ev, String *params, Cardinal *num_params);
static void Select(Widget w, XEvent *ev, String *params, Cardinal *num_params);
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
static XFontStruct *default_font_of_font_list (XmFontList);
#endif
@@ -314,14 +314,14 @@ close_to_reference_time (Widget w, Time
/* Size code */
static int
string_width (XlwMenuWidget mw,
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
XmString s
#else
char *s
#endif
)
{
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
Dimension width, height;
XmStringExtent (mw->menu.font_list, s, &width, &height);
return width;
@@ -368,14 +368,14 @@ initialize_massaged_resource_char (void)
static int
string_width_u (XlwMenuWidget mw,
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
XmString string
#else
char *string
#endif
)
{
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
Dimension width, height;
XmString newstring;
#else
@@ -395,7 +395,7 @@ string_width_u (XlwMenuWidget mw,
char *chars;
int i, j;
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
chars = "";
if (!XmStringGetLtoR (string, XmFONTLIST_DEFAULT_TAG, &chars))
chars = "";
@@ -412,7 +412,7 @@ string_width_u (XlwMenuWidget mw,
newchars[j++] = chars[i];
newchars[j] = '\0';
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
newstring = XmStringLtoRCreate (newchars, XmFONTLIST_DEFAULT_TAG);
XmStringExtent (mw->menu.font_list, newstring, &width, &height);
XmStringFree (newstring);
@@ -597,7 +597,7 @@ parameterize_string (const char *string,
return result;
}
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
static XmString
resource_widget_value (XlwMenuWidget mw, widget_value *val)
@@ -772,14 +772,14 @@ string_draw (XlwMenuWidget mw,
#else
GC gc,
#endif
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
XmString string
#else
char *string
#endif
)
{
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
XmStringDraw (XtDisplay (mw), window,
mw->menu.font_list,
string, gc,
@@ -832,7 +832,7 @@ string_draw_range (
int end
)
{
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
Dimension width, height;
XmString newstring;
int c;
@@ -926,7 +926,7 @@ string_draw_u (XlwMenuWidget mw,
#else
GC gc,
#endif
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
XmString string
#else
char *string
@@ -936,7 +936,7 @@ string_draw_u (XlwMenuWidget mw,
int i, s = 0;
char *chars;
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
chars = "";
if (!XmStringGetLtoR (string, XmFONTLIST_DEFAULT_TAG, &chars))
chars = "";
@@ -969,7 +969,7 @@ string_draw_u (XlwMenuWidget mw,
#else
x += string_draw_range (mw, window, x, y, gc, chars, s, i);
#endif
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
XtFree (chars);
#endif
}
@@ -984,7 +984,7 @@ binding_draw (XlwMenuWidget mw, Window w
#endif
char *value)
{
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
XmString xm_value = XmStringCreateLtoR(value, XmSTRING_DEFAULT_CHARSET);
string_draw (mw, w, x, y, gc, xm_value);
XmStringFree (xm_value);
@@ -1708,7 +1708,7 @@ push_button_size (XlwMenuWidget mw,
if (!in_menubar && val->key)
{
int w;
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
XmString key = XmStringCreateLtoR (val->key, XmSTRING_DEFAULT_CHARSET);
w = string_width (mw, key);
XmStringFree (key);
@@ -2796,7 +2796,7 @@ make_drawing_gcs (XlwMenuWidget mw)
unsigned long flags = (GCFont | GCForeground | GCBackground);
#endif
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
xgcv.font = default_font_of_font_list (mw->menu.font_list)->fid;
#else
#ifndef USE_XFT_MENUBARS
@@ -3047,7 +3047,7 @@ release_shadow_gcs (XlwMenuWidget mw)
static void
extract_font_extents (XlwMenuWidget mw)
{
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
/* Find the maximal ascent/descent of the fonts in the font list
so that all menu items can be the same height... */
mw->menu.font_ascent = 0;
@@ -3143,7 +3143,7 @@ extract_font_extents (XlwMenuWidget mw)
#endif /* NEED_MOTIF */
}
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
static XFontStruct *
default_font_of_font_list (XmFontList font_list)
{
@@ -3213,7 +3213,7 @@ XlwMenuInitialize (Widget UNUSED (reques
XCreatePixmapFromBitmapData (display, window, (char *) gray_bits,
gray_width, gray_height, 1, 0, 1);
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
/* #### Even if it's a kludge!!!, we should consider doing the same for
X Font Sets. */
/* The menu.font_list slot came from the *fontList resource (Motif standard.)
@@ -3385,7 +3385,7 @@ XlwMenuSetValues (Widget current, Widget
if (newmw->core.background_pixel != oldmw->core.background_pixel
|| newmw->menu.foreground != oldmw->menu.foreground
/* For the XEditResource protocol, which may want to change the font. */
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
|| newmw->menu.font_list != oldmw->menu.font_list
|| newmw->menu.font_list_2 != oldmw->menu.font_list_2
|| newmw->menu.fallback_font_list != oldmw->menu.fallback_font_list
1.4.20.3 +1 -1 XEmacs/xemacs/lwlib/xlwmenuP.h
Index: xlwmenuP.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwmenuP.h,v
retrieving revision 1.4.20.2
retrieving revision 1.4.20.3
diff -u -p -r1.4.20.2 -r1.4.20.3
--- xlwmenuP.h 2004/12/10 06:43:26 1.4.20.2
+++ xlwmenuP.h 2005/09/27 16:28:55 1.4.20.3
@@ -27,7 +27,7 @@ typedef struct _XlwMenu_part
{
/* slots set by the resources */
-#ifdef NEED_MOTIF
+#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS)
XmFontList font_list;
XmFontList font_list_2;
XmFontList fallback_font_list;
1.269.2.10 +49 -0 XEmacs/xemacs/man/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v
retrieving revision 1.269.2.9
retrieving revision 1.269.2.10
diff -u -p -r1.269.2.9 -r1.269.2.10
--- ChangeLog 2005/09/22 15:42:47 1.269.2.9
+++ ChangeLog 2005/09/27 16:28:57 1.269.2.10
@@ -1,3 +1,52 @@
+2005-09-27 Adrian Aichner <adrian(a)xemacs.org>
+
+ * lispref/packaging.texi: Get file to compile with teinfmt.el.
+ * lispref/packaging.texi (Packaging): Ditto.
+ * lispref/packaging.texi (Package Overview): Ditto.
+ * lispref/packaging.texi (The User View): Ditto.
+ * lispref/packaging.texi (The Library Maintainer View): Ditto.
+ * lispref/packaging.texi (Infrastructure): Ditto.
+ * lispref/packaging.texi (Obtaining): Ditto.
+ * lispref/packaging.texi (Local.rules File): Ditto.
+ * lispref/packaging.texi (package-info.in): Ditto.
+ * lispref/packaging.texi (Makefile): Ditto.
+ * lispref/packaging.texi (Documenting Packages): Ditto.
+
+2005-09-27 Adrian Aichner <adrian(a)xemacs.org>
+
+ * internals/internals.texi (A Summary of the Various XEmacs
+ Modules): Get file to compile with texinfmt.el.
+ * internals/internals.texi (Windows Build Flags): Ditto.
+
+2005-09-26 Ben Wing <ben(a)xemacs.org>
+
+ * lispref/glyphs.texi (Images):
+ * lispref/glyphs.texi (Image Instantiators):
+ * lispref/glyphs.texi (Image Instantiator Formats):
+ * lispref/glyphs.texi (Image Instances):
+ * lispref/glyphs.texi (Image Instance Functions):
+ * lispref/glyphs.texi (Creating Glyphs):
+ * lispref/glyphs.texi (Lisp API to Native Widgets):
+ * lispref/glyphs.texi (Glyph Properties):
+ * lispref/glyphs.texi (Glyph Examples):
+ * lispref/lispref.texi (Top):
+ * lispref/specifiers.texi (Specifiers):
+ * lispref/specifiers.texi (Introduction to Specifiers):
+ * lispref/specifiers.texi (Simple Specifier Usage):
+ * lispref/specifiers.texi (Specifiers In-Depth):
+ * lispref/specifiers.texi (Specifier Instantiation):
+ * lispref/specifiers.texi (Retrieving Specifications):
+ * lispref/specifiers.texi (Specifier Tag Functions):
+ * lispref/specifiers.texi (Specifier Validation Functions):
+ Use "instantiation" not "instancing". Fix some places where
+ "specifier" is used to mean "instantiator".
+
+2005-09-25 Adrian Aichner <adrian(a)xemacs.org>
+
+ * lispref/compile.texi (Compilation Options): Supply missing
+ argument to @var{}, using same SYMBOL as in variable docstring of
+ `byte-compile-print-gensym'.
+
2005-09-14 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.22 "cucumber" is released.
1.52.2.8 +3 -2 XEmacs/xemacs/man/internals/internals.texi
Index: internals.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/internals/internals.texi,v
retrieving revision 1.52.2.7
retrieving revision 1.52.2.8
diff -u -p -r1.52.2.7 -r1.52.2.8
--- internals.texi 2005/09/20 16:05:36 1.52.2.7
+++ internals.texi 2005/09/27 16:28:59 1.52.2.8
@@ -2774,7 +2774,8 @@ question.
The following table contains cross-references from each module in XEmacs
21.5 to the section (if any) describing it.
-@multitable {(a)file{intl-auto-encap-win32.c}} {@ref{Modules for Other Aspects of the
Lisp Interpreter and Object System}}
+@multitable @columnfractions .25 .75
+@item @file{intl-auto-encap-win32.c} @tab @ref{Modules for Other Aspects of the Lisp
Interpreter and Object System}.
@item @file{Emacs.ad.h} @tab @ref{Modules for Interfacing with X Windows}.
@item @file{EmacsFrame.c} @tab @ref{Modules for Interfacing with X Windows}.
@item @file{EmacsFrame.h} @tab @ref{Modules for Interfacing with X Windows}.
@@ -17504,7 +17505,7 @@ code from GNU Emacs and such:
@c @multitable {Old Constant} {determine whether this code is really specific to MS-DOS
(and not Windows -- e.g. DJGPP code}
@multitable @columnfractions .25 .75
@item Old Constant @tab New Constant
-@item ----------------------------------------------------------------
+@item ---------------------------------------------------------------- @tab
@item @code{WINDOWSNT}
@tab @code{WIN32_NATIVE}
@item @code{WIN32}
1.6.4.1 +2 -2 XEmacs/xemacs/man/lispref/compile.texi
Index: compile.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/compile.texi,v
retrieving revision 1.6
retrieving revision 1.6.4.1
diff -u -p -r1.6 -r1.6.4.1
--- compile.texi 2002/11/12 03:57:48 1.6
+++ compile.texi 2005/09/27 16:29:06 1.6.4.1
@@ -503,8 +503,8 @@ Default: @code{nil} when Emacs version i
@defvar byte-compile-print-gensym
When non-@code{nil}, the compiler may generate code that creates unique
symbols at run-time. This is achieved by printing uninterned symbols
-using the @code{#:@var{}} notation, so that they will be read uninterned
-when run.
+using the @code{#:@var{SYMBOL}} notation, so that they will be read
+uninterned when run.
With this feature, code that uses uninterned symbols in macros will
not be runnable under pre-21.0 XEmacsen.
1.9.2.1 +39 -39 XEmacs/xemacs/man/lispref/glyphs.texi
Index: glyphs.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/glyphs.texi,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -p -r1.9 -r1.9.2.1
--- glyphs.texi 2004/09/22 02:06:27 1.9
+++ glyphs.texi 2005/09/27 16:29:06 1.9.2.1
@@ -88,25 +88,25 @@ more information about specifier locales
@section Images
@menu
-* Image Specifiers:: Specifying an image's appearance.
+* Image Instantiators:: Specifying an image's appearance.
* Image Instantiator Conversion:: Lazy realization of graphics.
* Image Instantiator Formats:: A catalog of image descriptors.
* Image Instances:: Classes of graphical objects.
@end menu
-@node Image Specifiers
-@subsection Image Specifiers
-@cindex image specifiers
+@node Image Instantiators
+@subsection Image Instantiators
+@cindex image instantiators
- An image specifier is a description of the actual graphical
+ An @dfn{image instantiator} is a description of the actual graphical
realization of a glyph. For example, a typical image description is
@emph{the file system path to a PNG file}. Since redisplay doesn't know
about files, and in any case the image may need to be manipulated
(@emph{e.g.}, a face's background pixmap must be clipped and tiled), the
PNG file must be converted internally to a window system bitmap or
pixmap object. We describe this process by writing that when XEmacs
-displays the image, it @dfn{instantiates} the @dfn{image instantiator}
+displays the image, it @dfn{instantiates} the image instantiator
into an @dfn{image instance}. Image instances are an internal object
type (similar to font instances and color instances), describing how the
image appears in a particular domain. On the other hand, image
@@ -114,8 +114,8 @@ instantiators, which are just descriptio
appear, are represented using Lisp strings or vectors.
Furthermore the graphical realization will vary, and for some devices
-may not even be a bitmapped graphic. These variations may be controlled
-by the program by specifying different @dfn{image instantiators} in
+may not even be a bitmapped graphic. These variations may be
+controlled by the program by specifying different instantiators in
different locales. This is implemented with an @dfn{image specifier},
a specifier whose specifications are image instantiators.
@@ -156,9 +156,9 @@ pointers]; etc.)
It is important to keep the distinction between image instantiator
format and image instance type in mind. Typically, a given image
instantiator format can result in many different image instance types.
-For example, @code{xpm} can be instanced as @code{color-pixmap},
+For example, @code{xpm} can be instantiated as @code{color-pixmap},
@code{mono-pixmap}, or @code{pointer}; whereas @code{cursor-font} can be
-instanced only as @code{pointer}. On the other hand, a particular image
+instantiated only as @code{pointer}. On the other hand, a particular image
instance type can be generated by many different image instantiator
formats (e.g. @code{color-pixmap} can be generated by @code{xpm},
@code{gif}, @code{jpeg}, etc.).
@@ -372,11 +372,11 @@ are usable with each, and the kinds of i
@table @code
@item nothing
Don't display anything; no keywords are valid for this format. Can only be
-instanced as @code{nothing}.
+instantiated as @code{nothing}.
@item string
-Display this image as a text string. Can only be instanced
-as @code{text}, although support for instancing as @code{mono-pixmap}
+Display this image as a text string. Can only be instantiated
+as @code{text}, although support for instantiation as @code{mono-pixmap}
should be added. The valid keyword is @code{:data}. The value should
be a string, and it is interpreted as a string of characters.
@@ -432,7 +432,7 @@ XBM file.
@item xpm
An XPM pixmap; only available if XPM support was compiled into this XEmacs.
-Can be instanced as @code{color-pixmap}, @code{mono-pixmap}, or
+Can be instantiated as @code{color-pixmap}, @code{mono-pixmap}, or
@code{pointer}.
XPM is an add-on library for X that was designed to rectify the
@@ -476,7 +476,7 @@ used to generate the alist.
An X-Face bitmap, used to encode people's faces in e-mail messages;
only available if X-Face support was compiled into this XEmacs.
-Will be instanced as @code{mono-pixmap}, @code{color-pixmap}, or
+Will be instantiated as @code{mono-pixmap}, @code{color-pixmap}, or
@code{pointer}, depending on the target instance type and the presence
of color keywords.
@@ -526,7 +526,7 @@ places'') and linked into the build.
Note that PNG is the standard format for images distributed with XEmacs,
so it is highly recommended that PNG support be built in.
-All of these instantiators will be instanced as @code{color-pixmap}.
+All of these instantiators will be instantiated as @code{color-pixmap}.
The valid keywords and their values are
@table @code
@@ -539,7 +539,7 @@ The name of a file containing standard-f
@item cursor-font
Most window systems provide a set of standard cursors, which in X11 is
-called a cursor font. Can only be instanced as @code{pointer}. This
+called a cursor font. Can only be instantiated as @code{pointer}. This
should probably be fixed.
The valid keyword is @code{:data}. Its value should be a string
@@ -555,14 +555,14 @@ Other window systems may have different
A glyph from a font; i.e. the name of a font, and glyph index into it
of the form @samp{@var{font} fontname index [[mask-font] mask-index]}.
Only if X support was compiled into this XEmacs. Currently can only be
-instanced as @code{pointer}. This should probably be fixed.
+instantiated as @code{pointer}. This should probably be fixed.
@c #### The above description is not very helpful, so it's not obvious
@c how to instantiate a font image.
@item mswindows-resource
An MS Windows pointer resource. Specifies a resource to retrieve
directly from the system (an OEM resource) or from a file, particularly
-an executable file. Can be instanced as @code{pointer} or
+an executable file. Can be instantiated as @code{pointer} or
@code{color-pixmap}.
The valid keywords and their values are
@@ -601,23 +601,23 @@ For icons:
@end table
@item subwindow
-An embedded windowing system window. Can only be instanced as
+An embedded windowing system window. Can only be instantiated as
@code{subwindow}. Not implemented.
@c #### Check status of subwindows ... I thought Andy implemented them.
@item button
A button widget; either a push button, radio button or toggle button.
-Can only be instanced as @code{widget}.
+Can only be instantiated as @code{widget}.
@item combo-box
A drop list of selectable items in a widget, for editing text.
-Can only be instanced as @code{widget}.
+Can only be instantiated as @code{widget}.
@item edit-field
-A text editing widget. Can only be instanced as @code{widget}.
+A text editing widget. Can only be instantiated as @code{widget}.
@item label
-A static, text-only, widget; for displaying text. Can only be instanced
+A static, text-only, widget; for displaying text. Can only be instantiated
as @code{widget}.
@item layout
@@ -625,19 +625,19 @@ A widget for controlling the positioning
Through the use of nested layouts, a widget hierarchy can be created
which can have the appearance of any standard dialog box or similar
arrangement; all of this is counted as one @dfn{glyph} and could appear
-in many of the places that expect a single glyph. Can only be instanced
+in many of the places that expect a single glyph. Can only be instantiated
as @code{widget}.
@item native-layout
The native version of a layout widget.
-Can only be instanced as @code{widget}.
+Can only be instantiated as @code{widget}.
@item progress-gauge
-A sliding widget, for showing progress. Can only be instanced as
+A sliding widget, for showing progress. Can only be instantiated as
@code{widget}.
@item tab-control
-A tab widget; a series of user selectable tabs. Can only be instanced
+A tab widget; a series of user selectable tabs. Can only be instantiated
as @code{widget}.
The required keyword is @code{:items}. Its value should be a list of
@@ -654,10 +654,10 @@ and @code{:pixel-height} (positive integ
(The above is incomplete and may be inaccurate.)
@item tree-view
-A folding widget. Can only be instanced as @code{widget}.
+A folding widget. Can only be instantiated as @code{widget}.
@item scrollbar
-A scrollbar widget. Can only be instanced as @code{widget}.
+A scrollbar widget. Can only be instantiated as @code{widget}.
@item autodetect
XEmacs tries to guess what format the data is in. If X support exists,
@@ -672,7 +672,7 @@ the image will always be displayed as te
@item inherit
Inherit from the background-pixmap property of a face. Can only be
-instanced as @code{mono-pixmap}.
+instantiated as @code{mono-pixmap}.
@end table
There are two convenience variables for use with the XBM and XPM image
@@ -719,7 +719,7 @@ This function returns non-@code{nil} if
@end defun
@menu
-* Image Instance Types:: Each image instances has a particular type.
+* Image Instance Types:: Each image instance has a particular type.
* Image Instance Functions:: Functions for working with image instances.
@end menu
@@ -834,7 +834,7 @@ Return non-@code{nil} if @var{object} is
This function creates a new image-instance object.
@var{data} is an image instantiator, which describes the image
-(@pxref{Image Specifiers}).
+(@pxref{Image Instantiators}).
@var{dest-types} should be a list of allowed image instance types that
can be generated. The @var{dest-types} list is unordered. If multiple
@@ -991,7 +991,7 @@ if known.
@end defun
Mono pixmaps and pointers may have their foreground and background
-colors set when instanced. Use these functions to access color
+colors set when instantiated. Use these functions to access color
information.
@defun image-instance-foreground image-instance
@@ -1104,7 +1104,7 @@ vector. The vector's first element spec
of the data, such as a string, a PNG file, or an MS Windows resource.
This is followed by properties (keyword-value pairs) specifying such
information as the name of a file containing an image, or pixmap data
-directly. @xref{Image Specifiers}.
+directly. @xref{Image Instantiators}.
The optional @var{type} specifies the type of the glyph. @var{type}
should be one of @code{buffer} (used for glyphs in an extent, the
@@ -1488,7 +1488,7 @@ search dialog is formatted using layouts
Native widgets are manipulated as @emph{glyphs} (@pxref{Glyphs}). Thus
they are created using @code{make-glyph}, with a format of one of the
widget types and a @code{:data} property specific to the widget being
-instanced.
+instantiated.
However, there is a technical difference between widgets and other kinds
of glyphs that is theoretically important. Because widgets
@@ -1838,7 +1838,7 @@ specification.
If @var{property} does not name a built-in property, its value will
simply be returned unless it is a specifier object, in which case it
-will be instanced using @code{specifier-instance}.
+will be instantiated using @code{specifier-instance}.
Optional arguments @var{default} and @var{no-fallback} are the same as
in @code{specifier-instance}. @xref{Specifiers}.
@@ -2065,7 +2065,7 @@ The parameters passed to @code{make-glyp
Specifiers", and can handle more image types than those shown above.
You can also put the raw image data into a string (e.g., if you put the
contents of a JPEG file into a string), and use that to create a glyph.
-@xref{Image Specifiers}, for more information.
+@xref{Image Instantiators}, for more information.
@quotation
@strong{Caution}: In order for XEmacs to read a particular graphics file
@@ -2079,7 +2079,7 @@ To programmatically query whether or not
supported, you can use the @code{featurep} function, with one of:
@code{gif}, @code{tiff}, @code{jpeg}, @code{xpm}, @code{xbm},
@code{png}, or @code{xface}. For an up-to-date list, @ref{Image
-Specifiers}. Example:
+Instantiators}. Example:
@example
;; Returns `t' if TIFF is supported:
1.20.2.5 +9 -17 XEmacs/xemacs/man/lispref/lispref.texi
Index: lispref.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/lispref.texi,v
retrieving revision 1.20.2.4
retrieving revision 1.20.2.5
diff -u -p -r1.20.2.4 -r1.20.2.5
--- lispref.texi 2005/09/20 16:05:44 1.20.2.4
+++ lispref.texi 2005/09/27 16:29:07 1.20.2.5
@@ -941,15 +941,15 @@ Specifiers
(under user control) in a wide variety
of contexts.
* Specifiers In-Depth:: Gory details about specifier innards.
-* Specifier Instancing:: Instancing means obtaining the ``value'' of
+* Specifier Instantiation:: Instantiation means obtaining the ``value'' of
a specifier in a particular context.
* Specifier Types:: Specifiers come in different flavors.
* Adding Specifications:: Specifications control a specifier's ``value''
by giving conditions under which a
particular value is valid.
* Retrieving Specifications:: Querying a specifier's specifications.
-* Specifier Instancing Functions::
- Functions to instance a specifier.
+* Specifier Instantiation Functions::
+ Functions to instantiate a specifier.
* Specifier Examples:: Making all this stuff clearer.
* Creating Specifiers:: Creating specifiers for your own use.
* Specifier Validation Functions::
@@ -977,21 +977,21 @@ Faces
Fonts
* Font Specifiers:: Specifying how a font will appear.
-* Font Instances:: What a font specifier gets instanced as.
+* Font Instances:: What a font specifier gets instantiated as.
* Font Instance Names:: The name of a font instance.
* Font Instance Size:: The size of a font instance.
* Font Instance Characteristics:: Display characteristics of font instances.
* Font Convenience Functions:: Convenience functions that automatically
- instance and retrieve the properties
+ instantiate and retrieve the properties
of a font specifier.
Colors
* Color Specifiers:: Specifying how a color will appear.
-* Color Instances:: What a color specifier gets instanced as.
+* Color Instances:: What a color specifier gets instantiated as.
* Color Instance Properties:: Properties of color instances.
* Color Convenience Functions:: Convenience functions that automatically
- instance and retrieve the properties
+ instantiate and retrieve the properties
of a color specifier.
Glyphs
@@ -1004,22 +1004,14 @@ Glyphs
Images
-* Image Specifiers:: Specifying an image's appearance.
+* Image Instantiators:: Specifying an image's appearance.
* Image Instantiator Conversion:: Lazy realization of graphics.
* Image Instantiator Formats:: A catalog of image descriptors.
* Image Instances:: Classes of graphical objects.
Image Instances
-* Image Instance Types:: Each image instances has a particular type.
-* Image Instance Functions:: Functions for working with image instances.
-
-Using Glyphs
-
-
-Image Instances
-
-* Image Instance Types:: Each image instances has a particular type.
+* Image Instance Types:: Each image instance has a particular type.
* Image Instance Functions:: Functions for working with image instances.
Using Glyphs
1.11.2.1 +33 -37 XEmacs/xemacs/man/lispref/packaging.texi
Index: packaging.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/packaging.texi,v
retrieving revision 1.11
retrieving revision 1.11.2.1
diff -u -p -r1.11 -r1.11.2.1
--- packaging.texi 2003/10/10 12:39:34 1.11
+++ packaging.texi 2005/09/27 16:29:07 1.11.2.1
@@ -8,18 +8,14 @@
@c Macro to make formatting of the XEmacs pms name consistent.
@c Maybe @sc looks OK in HTML? If so, condition on Info.
@iftex
-@macro xpms
-XE@sc{macs} Packaging System
-@end macro
+@set xpms XE@sc{macs} Packaging System
@end iftex
@ifnottex
-@macro xpms
-XEmacs Packaging System
-@end macro
+@set xpms XEmacs Packaging System
@end ifnottex
@node Packaging, Lisp Data Types, Introduction, Top
-@chapter The @xpms{}
+@chapter The @value{xpms}
@cindex package
@cindex packaging
@@ -32,7 +28,7 @@ easy. This gives an installer the abili
installation for local needs with safe removal of unnecessary code.
This chapter describes how to package Lisp libraries for use with the
-@xpms{}.
+@value{xpms}.
@emph{Please note carefully} that the term @dfn{package} as used in
XEmacs refers to an aggregation of Lisp code and/or data distributed as
@@ -50,13 +46,13 @@ Packaging Lisp Libraries:
* Package Terminology:: Basic stuff.
* Building Packages:: Turn packaged source into a tarball.
* Makefile Targets:: Package @file{Makefile} targets
-* Local.rules File:: Tell the @xpms{} about your host.
-* Creating Packages:: Tell the @xpms{} about your package.
+* Local.rules File:: Tell the @value{xpms} about your host.
+* Creating Packages:: Tell the @value{xpms} about your package.
* Documenting Packages:: Explain your package to users and hackers.
-@c * History:: History of the @xpms{}
-@c * Installation:: Installing the @xpms{} with your (X)Emacs.
-@c * Configuration:: Configuring the @xpms{} for use.
-@c * Usage:: An overview of the operation of the @xpms{}.
+@c * History:: History of the @value{xpms}
+@c * Installation:: Installing the @value{xpms} with your (X)Emacs.
+@c * Configuration:: Configuring the @value{xpms} for use.
+@c * Usage:: An overview of the operation of the @value{xpms}.
@c * Bug Reports:: Reporting Bugs and Problems
@c * Frequently Asked Questions:: Questions and answers from the mailing list.
@@ -65,9 +61,9 @@ Internals and Package Release Engineerin
@end menu
@node Package Overview, Package Terminology, , Packaging
-@chapter An overview of the @xpms{}
+@chapter An overview of the @value{xpms}
-The @xpms{} is a system for administering the installation, upgrade, and
+The @value{xpms} is a system for administering the installation, upgrade, and
removal of Lisp libraries. For the end user, it provides facilities for
determining availability of packages and which versions at remote
sites. It will download and automatically install a package, ensuring
@@ -92,10 +88,10 @@ the structure of an installed package.
Meeting these requirements, as well as simply providing the
auto-autoloads and the information about availability and so on does
-impose some costs on the library maintainer. The @xpms{} also provides
+impose some costs on the library maintainer. The @value{xpms} also provides
structure and utilities to the library maintainer to make these tasks
easier. This manual documents the requirements and the tools that the
-@xpms{} provides to ensure that a package satisfies them.
+@value{xpms} provides to ensure that a package satisfies them.
@menu
* The User View::
@@ -122,7 +118,7 @@ unpacked from the top of a package hiera
is basically an image of a classic Emacs ``run-in-place'' tree, with
@file{lisp}, @file{etc}, @file{info}, @file{man}, @file{lib-src}, and
@file{pkginfo} subdirectories of the top. The @file{pkginfo}
-subdirectory is for use by the @xpms{} administration tools, and
+subdirectory is for use by the @value{xpms} administration tools, and
currently contains a @file{MANIFEST.@var{package-name}} file for each
package to ensure that no cruft remains when a package is removed or
updated. The @file{lisp}, @file{etc}, and @file{lib-src} subdirectories
@@ -242,7 +238,7 @@ receiving a @code{load-path} initialized
@node The Library Maintainer View, The Package Release Engineer View, The User View,
Package Overview
@section The Library Maintainer View
-From the library maintainer's viewpoint, the advantages to the @xpms{}
+From the library maintainer's viewpoint, the advantages to the @value{xpms}
stem from the convenience to the user of installation and upgrade.
Since an installed package automatically registers its entry points via
autoload and its configuration variables with the Customize system,
@@ -252,14 +248,14 @@ posting a FAQ whose answer is ``long sin
This comes at some cost, as the library maintainer needs to arrange that
the package be installed in a directory structure that satisfies the
-requirements of the @xpms{}. Autoload cookies and defcustoms must also
-be added to existing libraries. The @xpms{} provides infrastructure to
+requirements of the @value{xpms}. Autoload cookies and defcustoms must also
+be added to existing libraries. The @value{xpms} provides infrastructure to
assure that all of these annoyances need only be dealt with once. The
autoload cookies and defcustoms are beyond the scope of this chapter, but
most maintainers of modern packages are already familiar with these
mechanisms.
-The @xpms{} may be divided into the @dfn{infrastructure} common to all
+The @value{xpms} may be divided into the @dfn{infrastructure} common to all
packages, and the package-specific @dfn{control files}. The
infrastructure supports global builds, installation, and generation of
the ``sumo'' bundles of packages, as well as generation of individual
@@ -269,13 +265,13 @@ package's source tree and provide admini
@menu
* Infrastructure:: Global Makefiles and common rules.
* Control Files:: Package-specific Makefiles and administrative files.
-* Obtaining:: Obtaining the @xpms{} and required utilities.
+* Obtaining:: Obtaining the @value{xpms} and required utilities.
@end menu
@node Infrastructure, Control Files, , The Library Maintainer View
@subsection Infrastructure
-In order to get the greatest benefit from the @xpms{}, a library
+In order to get the greatest benefit from the @value{xpms}, a library
maintainer should place the package sources in an appropriate place in
the XEmacs source package hierarchy, and arrange to have the source
package imported into the XEmacs CVS repository.
@@ -412,14 +408,14 @@ forms for the usre configuration variabl
@node Obtaining, , Control Files, The Library Maintainer View
-@subsection Obtaining the @xpms{} and Required Utilities
+@subsection Obtaining the @value{xpms} and Required Utilities
Currently both the infrastructure for creating XEmacs packages and the
package sources themselves are available only by CVS. See
@uref{http://www.xemacs.org/Develop/cvsaccess.html} for more
intformation.
-The @xpms{} currently requires GNU @file{make}, and XEmacs, to build
+The @value{xpms} currently requires GNU @file{make}, and XEmacs, to build
packages.
@@ -617,7 +613,7 @@ Does most of the work. Builds the elcs,
@comment node-name, next, previous, up
@cindex local.rules
@heading The Local.rules File:
-This file in @file{packages} provides the @xpms{} with information about
+This file in @file{packages} provides the @value{xpms} with information about
the local configuration and environment. To create @file{Local.rules},
simply copy @file{Local.rules.template} from that directory to
@file{Local.rules} and edit it to suit your needs.
@@ -905,7 +901,7 @@ The @samp{category} of the package. It
packages. The is also provision for @samp{unsupported} in this field
which would be for packages that
XEmacs.org do not distribute.
-(a)strong{N.B.} As yet, the @xpms{} does @emph{not} support this type of
+(a)strong{N.B.} As yet, the @value{xpms} does @emph{not} support this type of
package. It will in the future.
@item dump
@@ -983,7 +979,7 @@ specified in the @samp{REQUIRES} variabl
some cases the @samp{PRELOADS} (autoloads used in libraries mentioned
in @samp{PRELOADS}).
-There isn't much to an @xpms{} @file{Makefile}, basically it just
+There isn't much to an @value{xpms} @file{Makefile}, basically it just
contains a few @file{Makefile} variables and that's it. See the
example.
@@ -1040,11 +1036,11 @@ be the first to need such hackery and it
for.
@subheading @file{Makefile} Variables Explained:
-A number of @file{make} variables are defined by the @xpms{}. Some are
+A number of @file{make} variables are defined by the @value{xpms}. Some are
required, others are optional. Of course your @file{Makefile} may
define other variables for private use, but you should be careful not to
choose names that conflict with variables defined and used by the
-@xpms{}.
+@value{xpms}.
The required variables are described in the table below.
The corresponding field names for @file{package-info.in}, where
@@ -1280,7 +1276,7 @@ rules to build these files.
@section @file{package-compile.el}
@cindex package-compile.el
@cindex compiling packages
-The @xpms{} does not automatically become aware of your package simply
+The @value{xpms} does not automatically become aware of your package simply
because there is a new subtree. If any package, including your own,
requires any of your files, it must be explicitly added to the compile
environment or loads/requires that search load-path will fail. The
@@ -1288,7 +1284,7 @@ changes that need to be made are
@table @strong
@item an entry in @code{package-directory-map}
-This tells the @xpms{} which distribution (currently
+This tells the @value{xpms} which distribution (currently
@samp{xemacs-packages} or @samp{mule-packages}) your package is found
in. It then looks in the distribution subdirectory whose name is the
same as the package's.
@@ -1300,13 +1296,13 @@ tree, eg, in @file{packages/xemacs-packa
@end table
This only needs to be done once, when the package is first added to the
-@xpms{}. (Well, when you randomly change the subdirectory layout, too.)
+@value{xpms}. (Well, when you randomly change the subdirectory layout, too.)
Your changes to @file{package-compile.el} must be cleared and checked in
by the XEmacs Package Release Engineer before your package will build
correctly from a fresh checkout.
This is unfortunate; it works pretty well once set up, but can cause
-confusion when first building a package in the @xpms{} context. In
+confusion when first building a package in the @value{xpms} context. In
particular, if the @code{package-directory-map} entry for a required
package, including the package itself, is not found, the necessary
requires will not be executed by @file{package-compile.el}. If
@@ -1333,7 +1329,7 @@ Some random notes on documenting your pa
Do write a Texinfo file. It's not that hard to do basically, and even
using the more advanced features of Texinfo soon become natural. For a
start, just grab the template @file{Samples/package.texi} from the
-@xpms{} source tree, and drop your current README into the Top node. At
+@value{xpms} source tree, and drop your current README into the Top node. At
least this way your documentation will be accessible from the standard
Info readers. Next, try to add lots of cross-referencing and logical
markup, and then node structure.
1.14.2.1 +54 -54 XEmacs/xemacs/man/lispref/specifiers.texi
Index: specifiers.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/specifiers.texi,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -p -r1.14 -r1.14.2.1
--- specifiers.texi 2004/06/18 07:18:40 1.14
+++ specifiers.texi 2005/09/27 16:29:07 1.14.2.1
@@ -14,7 +14,7 @@ device. The value of many built-in prop
foreground, background, and such properties of a face and variables
such as @code{modeline-shadow-thickness} and
@code{top-toolbar-height}, is actually a specifier object. The
-specifier object, in turn, is ``instanced'' in a particular situation
+specifier object, in turn, is ``instantiated'' in a particular situation
to yield the real value of the property in the current context.
@defun specifierp object
@@ -28,7 +28,7 @@ This function returns non-@code{nil} if
of contexts.
* Simple Specifier Usage:: Getting started with specifiers.
* Specifiers In-Depth:: Gory details about specifier innards.
-* Specifier Instancing:: Instancing means obtaining the ``value'' of
+* Specifier Instantiation:: Instantiation means obtaining the ``value'' of
a specifier in a particular context.
* Specifier Types:: Specifiers come in different flavors.
* Adding Specifications:: Specifications control a specifier's
``value''
@@ -36,8 +36,8 @@ This function returns non-@code{nil} if
particular value is valid.
* Retrieving Specifications:: Querying a specifier's specifications.
* Specifier Tag Functions:: Working with specifier tags.
-* Specifier Instancing Functions::
- Functions to instance a specifier.
+* Specifier Instantiation Functions::
+ Functions to instantiate a specifier.
* Specifier Examples:: Making all this stuff clearer.
* Creating Specifiers:: Creating specifiers for your own use.
* Specifier Validation Functions::
@@ -89,12 +89,12 @@ is available. The complex calculations
transparent to both user and programmer. You ask for what you want;
it's up to XEmacs to provide it, or a reasonable approximation.
-We call such a declaration a @dfn{specification}. A @dfn{specification}
-applies in a particular @dfn{locale}, which is a window, buffer, frame,
-device, or the global locale. The value part of the specification is
-called an @dfn{instantiator}. The process of determining the value in a
-particular context, or @dfn{domain}, is called @dfn{instantiation} or
-@dfn{instancing}. A domain is a window, frame, or device.
+We call such a declaration a @dfn{specification}. A
+@dfn{specification} applies in a particular @dfn{locale}, which is a
+window, buffer, frame, device, or the global locale. The value part
+of the specification is called an @dfn{instantiator}. The process of
+determining the value in a particular context, or @dfn{domain}, is
+called @dfn{instantiation}. A domain is a window, frame, or device.
The difference between @dfn{locale} and @dfn{domain} is somewhat subtle.
You may think of a locale as a class of domains, which may span
@@ -199,8 +199,8 @@ a program manipulates specifications, cl
desirable.
In the case of the toolbar descriptor, it turns out that these are the
-same: the instancing process is trivial. However, many specifications
-have non-trivial instancing. Compare the results of the following forms
+same: the instantiation process is trivial. However, many specifications
+have non-trivial instantiation. Compare the results of the following forms
on my system. (The @samp{(cdr (first ...))} form is due to my use of
Mule. On non-Mule XEmacsen, just use @code{specifier-specs}.)
@@ -216,16 +216,16 @@ In this case, @code{specifier-instance}
programs can't work on it, they can only pass it around. Worse, in some
environments the instantiation will fail, resulting in a different value
(when another instantiation succeeds), or worse yet, an error, if all
-attempts to instance the specifier fail. @code{specifier-instance} is
+attempts to instantiate the specifier fail. @code{specifier-instance} is
context-dependent, even for the exact same specification.
@code{specifier-specs} is deterministic, and only depends on the
specifications.
Note that in the toolbar-changing code we operate in the global locale.
This means that narrower locales, if they have specifications, will
-shadow our changes. (Specifier instancing does not merge
+shadow our changes. (Specifier instantiation does not merge
specifications. It selects the "highest-priority successful
-specification" and instances that.)
+specification" and instantiates that.)
In fact, in our example, it seems pretty likely that different buffers
@emph{should} have different buttons. (The icon can be the same, but
@@ -283,7 +283,7 @@ Specifications}, for documentation of @c
@cindex domain (in a specifier)
@cindex locale (in a specifier)
@cindex instantiator (in a specifier)
-@cindex instancing (in a specifier)
+@cindex instantiation (in a specifier)
@cindex instance (in a specifier)
@cindex inst-list (in a specifier)
@cindex inst-pair (in a specifier)
@@ -293,7 +293,7 @@ Specifications}, for documentation of @c
@cindex specifier, domain
@cindex specifier, locale
@cindex specifier, instantiator
-@cindex specifier, instancing
+@cindex specifier, instantiation
@cindex specifier, instance
@cindex specifier, inst-list
@cindex specifier, inst-pair
@@ -335,11 +335,11 @@ particular situation?'' This involves lo
to see which ones apply to this particular situation, and perhaps
preferring one over another if more than one applies. In specifier
terminology, a ``particular situation'' is called a @dfn{domain}, and
-determining its value in a particular domain is called @dfn{instancing}.
+determining its value in a particular domain is called @dfn{instantiation}.
Most of the time, a domain is identified by a particular window. For
example, if the redisplay engine is drawing text in the default face in
a particular window, it retrieves the specifier for the foreground color
-of the default face and @dfn{instances} it in the domain given by that
+of the default face and @dfn{instantiates} it in the domain given by that
window; in other words, it asks the specifier, ``What is your value in
this window?''.
@@ -372,28 +372,28 @@ All tags in a tag set must match a devic
to be instantiable over that device. (A null tag set is perfectly
valid, and trivially matches all devices.)
-@c #### don't we have more device types now, gtk, ms-windows, mac-carbon?
-The valid device types (normally @code{x}, @code{tty}, and
-@code{stream}) and device classes (normally @code{color},
-@code{grayscale}, and @code{mono}) can always be used as tags, and match
-devices of the associated type or class (@pxref{Consoles and Devices}).
-User-defined tags may be defined, with an optional predicate specified.
-An application can create its own tag, use it to mark all its
+The valid device types (normally @code{x}, @code{tty}, @code{stream},
+@code{mswindows}, @code{msprinter}, and possibly @code{carbon}) and
+device classes (normally @code{color}, @code{grayscale}, and
+@code{mono}) can always be used as tags, and match devices of the
+associated type or class (@pxref{Consoles and Devices}). User-defined
+tags may be defined, with an optional predicate specified. An
+application can create its own tag, use it to mark all its
instantiators, and be fairly confident that it will not interfere with
other applications that modify the same specifier---Functions that add
a specification to a specifier usually only overwrite existing
inst-pairs with the same tag set as was given, and a particular tag or
tag set can be specified when removing instantiators.
-When a specifier is instanced in a domain, both the locale and the tag
+When a specifier is instantiated in a domain, both the locale and the tag
set can be viewed as specifying necessary conditions that must apply in
that domain for an instantiator to be considered as a possible result of
-the instancing. More specific locales always override more general
+the instantiation. More specific locales always override more general
locales (thus, there is no particular ordering of the specifications in
a specifier); however, the tag sets are simply considered in the order
that the inst-pairs occur in the specification's inst-list.
-Note also that the actual object that results from the instancing
+Note also that the actual object that results from the instantiation
(called an @dfn{instance object}) may not be the same as the instantiator
from which it was derived. For some specifier types (such as integer
specifiers and boolean specifiers), the instantiator will be returned
@@ -410,12 +410,12 @@ device, etc. Furthermore, this conversi
might fail---a font or color might not exist on a particular device,
for example.
-@node Specifier Instancing
-@section How a Specifier Is Instanced
+@node Specifier Instantiation
+@section How a Specifier Is Instantiated
@cindex fallback (in a specifier)
@cindex specifier, fallback
-Instancing of a specifier in a particular window domain proceeds as
+Instantiation of a specifier in a particular window domain proceeds as
follows:
@itemize @bullet
@@ -437,7 +437,7 @@ match the device.)
If a matching tag set is found, the corresponding instantiator is passed
to the specifier's instantiation method, which is specific to the type
of the specifier. If it succeeds, the resulting instance object is
-returned as the result of the instancing and the instancing is done.
+returned as the result of the instantiation and the instantiation is done.
Otherwise, the operation continues, looking for another matching
inst-pair in the current specification.
@item
@@ -446,36 +446,36 @@ specification, the search starts over, l
as in the first step above.
@item
If all specifications are exhausted and no instance object can be
-derived, the instancing fails. (Actually, this is not completely true.
+derived, the instantiation fails. (Actually, this is not completely true.
Some specifier objects for built-in properties have a @dfn{fallback}
value, which is either an inst-list or another specifier object, that is
-consulted if the instancing is about to fail. If it is an inst-list,
+consulted if the instantiation is about to fail. If it is an inst-list,
the searching proceeds using the inst-pairs in that list. If it is a
-specifier, the entire instancing starts over using that specifier
+specifier, the entire instantiation starts over using that specifier
instead of the given one. Fallback values are set by the C code and
cannot be modified, except perhaps indirectly, using any Lisp functions.
The purpose of them is to supply some values to make sure that
-instancing of built-in properties can't fail and to implement some basic
+instantiation of built-in properties can't fail and to implement some basic
specifier inheritance, such as the fact that faces inherit their
properties from the @code{default} face.)
@end itemize
-It is also possible to instance a specifier over a frame domain or
+It is also possible to instantiate a specifier over a frame domain or
device domain instead of over a window domain. The C code, for example,
-instances the @code{top-toolbar-height} variable over a frame domain in
-order to determine the height of a frame's top toolbar. Instancing over
-a frame or device is similar to instancing over a window except that
+instantiates the @code{top-toolbar-height} variable over a frame domain in
+order to determine the height of a frame's top toolbar. Instantiation over
+a frame or device is similar to instantiation over a window except that
specifications for locales that cannot be derived from the domain are
-ignored. Specifically, instancing over a frame looks first for frame
-locales, then device locales, then the @code{global} locale. Instancing
+ignored. Specifically, instantiation over a frame looks first for frame
+locales, then device locales, then the @code{global} locale. Instantiation
over a device domain looks only for device locales and the @code{global}
locale.
-Note that specifiers are instanced on @emph{every} redisplay. (This is
+Note that specifiers are instantiated on @emph{every} redisplay. (This is
the concept; of course the implementation keeps track of changes and
-doesn't reinstance unchanged specifiers.) That means that changes in
+doesn't reinstantiate unchanged specifiers.) That means that changes in
specifiers controlling appearance are reflected immediately in the UI.
-Also, since specifiers are instanced completely, removing a
+Also, since specifiers are instantiated completely, removing a
specification can be just as effective as adding one.
@emph{E.g.}, Giacomo Boffi wanted a modeline that indicates whether the
@@ -1109,7 +1109,7 @@ no instantiators at all.
@defun specifier-fallback specifier
This function returns the fallback value for @var{specifier}. Fallback
values are provided by the C code for certain built-in specifiers to
-make sure that instancing won't fail even if all specs are removed from
+make sure that instantiation won't fail even if all specs are removed from
the specifier, or to implement simple inheritance behavior (e.g. this
method is used to ensure that faces other than @code{default} inherit
their attributes from @code{default}). By design, you cannot change the
@@ -1117,11 +1117,11 @@ fallback value, and specifiers created w
never have a fallback (although a similar, Lisp-accessible capability
may be provided in the future to allow for inheritance).
-The fallback value will be an inst-list that is instanced like
+The fallback value will be an inst-list that is instantiated like
any other inst-list, a specifier of the same type as @var{specifier}
(results in inheritance), or @code{nil} for no fallback.
-When you instance a specifier, you can explicitly request that the
+When you instantiate a specifier, you can explicitly request that the
fallback not be consulted. (The C code does this, for example, when
merging faces.) See @code{specifier-instance}.
@end defun
@@ -1145,8 +1145,8 @@ Each tag has a predicate associated with
that tag applies to a particular device. The tags which are device
types and classes match devices of that type or class. User-defined
tags can have any predicate, or none (meaning that all devices match).
-When attempting to instance a specifier, a particular instantiator is
-only considered if the device of the domain being instanced over matches
+When attempting to instantiate a specifier, a particular instantiator is
+only considered if the device of the domain being instantiated over matches
all tags in the tag set attached to that instantiator.
Most of the time, a tag set is not specified, and the instantiator gets
@@ -1201,8 +1201,8 @@ This includes the built-in ones (the dev
This function returns the predicate for the given specifier tag.
@end defun
-@node Specifier Instancing Functions
-@section Functions for Instancing a Specifier
+@node Specifier Instantiation Functions
+@section Functions for Instantiating a Specifier
@defun specifier-instance specifier &optional domain default no-fallback
This function instantiates @var{specifier} (returns its value) in
@@ -1605,7 +1605,7 @@ Display Table}).
@defun valid-specifier-domain-p domain
This function returns non-@code{nil} if @var{domain} is a valid
-specifier domain. A domain is used to instance a specifier
+specifier domain. A domain is used to instantiate a specifier
(i.e. determine the specifier's value in that domain). Valid domains
are a window, frame, or device. (@code{nil} is not valid.)
@end defun
1.36.2.5 +0 -13 XEmacs/xemacs/modules/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ChangeLog,v
retrieving revision 1.36.2.4
retrieving revision 1.36.2.5
diff -u -p -r1.36.2.4 -r1.36.2.5
--- ChangeLog 2005/09/24 14:02:23 1.36.2.4
+++ ChangeLog 2005/09/27 16:29:10 1.36.2.5
@@ -1,16 +1,3 @@
-2005-09-22 Stephen J. Turnbull <stephen(a)xemacs.org>
-
- * canna: New module.
-
- * canna/canna_api.c: Move from $srcdir/src/mule-canna.c. Add module
- initialization function and some boilerplate. Change name to
- canna_api to reflect changed role.
-
- * canna/configure.ac:
- * canna/Makefile.in.in:
- * canna/install-sh:
- Standard module boilerplate, adapted to Canna.
-
2005-09-14 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.22 "cucumber" is released.
1.175.2.4 +41 -0 XEmacs/xemacs/nt/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/ChangeLog,v
retrieving revision 1.175.2.3
retrieving revision 1.175.2.4
diff -u -p -r1.175.2.3 -r1.175.2.4
--- ChangeLog 2005/09/20 16:05:53 1.175.2.3
+++ ChangeLog 2005/09/27 16:29:12 1.175.2.4
@@ -1,3 +1,44 @@
+2005-09-26 Ben Wing <ben(a)xemacs.org>
+
+ * README:
+ Major rewrite. Document how to compile various optional libs.
+
+ * config.inc.samp:
+ Update to recent versions of optional libs. Add support for
+ gmp, db, postgresql, ldap. Turn on optimization when not debug.
+
+ * minitar.c:
+ Include config.h.
+
+ * xemacs.mak:
+ * xemacs.mak (HAVE_WIDGETS):
+ * xemacs.mak (OPT_DEFINES):
+ * xemacs.mak (OPT_OBJS):
+ * xemacs.mak (BROWSERFLAGS):
+ * xemacs.mak (INCLUDES):
+ * xemacs.mak (DEFINES):
+ * xemacs.mak (TEMACS_COMMON_OBJS):
+ * xemacs.mak (TEMACS_OBJS):
+ * xemacs.mak ($(OUTDIR)\postgresql.obj):
+ * xemacs.mak ($(BLDLIB_SRC)/minitar.exe):
+ * xemacs.mak ( NOTE):
+ * xemacs.mak (TEMACS_LIBS):
+ * xemacs.mak ($(RAW_EXE)):
+ * xemacs.mak (mostlyclean):
+ * xemacs.mak (versionclean):
+ Figure out VC++ version and use it to set debug and browser flags
+ appropriately.
+ Add support for building gmp, db, postgresql, ldap.
+ Rewrite handling of optional stuff so it is all added to single
+ variables OPT_* rather than to various FOO_* variables.
+ Pass -I$(SRC) to minitar.c so it compiles.
+ Pass module sources, not objects, to make-docfile.
+ Delete more stuff in `make clean'.
+
+2005-09-25 Adrian Aichner <adrian(a)xemacs.org>
+
+ * xemacs.mak: Fix variable initialization order.
+
2005-09-14 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.22 "cucumber" is released.
1.26.2.1 +172 -71 XEmacs/xemacs/nt/README
Index: README
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/README,v
retrieving revision 1.26
retrieving revision 1.26.2.1
diff -u -p -r1.26 -r1.26.2.1
--- README 2003/11/06 15:12:33 1.26
+++ README 2005/09/27 16:29:12 1.26.2.1
@@ -1,18 +1,21 @@
Building and Installing XEmacs on Windows 95/98/NT/2000/XP -*- mode:outline -*-
+ Ben Wing
+
+ based on old version by
+
David Hobley
Marc Paquette
Jonathan Harris
- Ben Wing
-This is a port of XEmacs to Windows 95/98/NT/2000/XP. If you are looking for a
-port of GNU Emacs, get the latest release of the 21.x series from
gnu.org.
-(At the time of writing, GNU Emacs does not support images but does support
-Mule.) NT 4.0 or later is required for building on Windows NT. Note that the
-developers typically use NT 4.0 and Windows 2000, and there may possibly be
-problems under Windows 95/98. If so, please report them to
-xemacs-nt(a)xemacs.org; we are committed to maintaining compatibility with all
-systems listed.
+This is a port of XEmacs to Windows 95/98/ME/NT/2000/XP. If you are
+looking for a port of GNU Emacs, get the latest release of the 21.x series
+from
gnu.org. NT 4.0 or later is required for building on Windows NT.
+Note that the developers typically use NT 4.0 and Windows 2000 or XP, and
+there may possibly be problems under Windows 95/98. (One developer has
+successfully built on Windows ME, though, which is the successor of Windows
+98.) If so, please report them to xemacs-nt(a)xemacs.org; we are committed
+to maintaining compatibility with all systems listed.
* Required tools and sources
============================
@@ -38,7 +41,7 @@ systems listed.
2. Grab the latest XEmacs source from
-
ftp://ftp.xemacs.org/pub/xemacs/
+
http://ftp.xemacs.org/pub/xemacs/
or one of its mirrors listed at
http://www.xemacs.org/Download/index.html.
@@ -48,16 +51,16 @@ systems listed.
You'll also need the packages. You probably want to get the unified
packages bundle from
-
ftp://ftp.xemacs.org/pub/xemacs/packages/xemacs-sumo.tar.gz
+
http://ftp.xemacs.org/pub/xemacs/packages/xemacs-sumo.tar.gz
If you are building with international support, you also need
-
ftp://ftp.xemacs.org/pub/xemacs/packages/xemacs-mule-sumo.tar.gz
+
http://ftp.xemacs.org/pub/xemacs/packages/xemacs-mule-sumo.tar.gz
Although we don't recommend it, you can also retrieve just the packages
you really need if you have an extremely slow net connection or are very
short on disk space. You can find the various packages in
-
ftp://ftp.xemacs.org/pub/xemacs/packages/. You will need the xemacs-base
+
http://ftp.xemacs.org/pub/xemacs/packages/. You will need the xemacs-base
package (and mule-base, if building with international support). You'll
also need the texinfo package unless you have a copy of makeinfo.exe on
your machine. If you want to download additional or updated packages
@@ -75,40 +78,119 @@ systems listed.
* Optional libraries
====================
+
+The easiest way to get the optional libraries is to grab the appropriate
+set of precompiled versions for your compiler:
+
+http://www.xemacs.org/Download/win32/optional-libs.exe
+
+or for VC++ 2005 (VC8)
+
+http://www.xemacs.org/Download/win32/optional-libs-vc8.exe
+
+unpack them somewhere and set the OPTIONAL_LIBRARY_DIR in config.inc
+to point to where you put them. This will automatically give you
+all the graphics libraries. (NOTE: optional-libs.exe was compiled with
+VC++ .NET and may or may not work with VC++ 6.0. If not, you will have
+to build them yourself until we provide VC6 binaries.)
+
+* Alternative: Building the optional libraries yourself
+=======================================================
+
+If you need to build the libraries yourself, grab them from
+http://ftp.xemacs.org/pub/xemacs/aux or get the latest version from the
+home page of the appropriate library, as listed on
+http://www.xemacs.org/Download/optLibs.html. The following instructions
+assume that you have the appropriate libraries and have unpacked them
+somewhere, e.g. c:\src.
+
+Directions for building the various libraries:
+
+1. You really want the XPM library. Copy nt\xpm.mak from the xemacs sources
+ to the lib/ subdirectory of the XPM sources, cd to that directory and
+ build xpm with 'nmake -f xpm.mak'.
+
+2. You probably also want PNG image support. Get PNG and ZLIB and read the
+ respective READMEs for details on how to build them.
+
+ cd to the ZLIB source directory and type 'nmake -f win32\Makefile.msc'.
+
+ cd to the libpng source directory, rename or move the zlib directory to
+ ..\zlib and type 'nmake -f scripts\makefile.vcawin32'.
+
+3. If you want TIFF support, cd to the TIFF source directory and type
+ 'nmake -f Makefile.vc'.
+
+4. If you want JPEG support, cd to the JPEG source directory and type
+ 'nmake -f makefile.vc'.
+
+5. If you want X-Face support, copy nt\compface.mak from the xemacs sources
+ to the compface directory, cd to that directory and build libcompface
+ with 'nmake -f compface.mak'.
+
+6. It's also possible to build the Sleepycat DB libraries. Open up the file
+
+ DB-SOURCE-DIR\docs\ref\build_win\intro.html
+
+ in a browser, where DB-SOURCE-DIR is the top-level source directory for
+ the Sleepcat DB libraries, and follow the directions. You should build the
+ `Release_static' target if you want to use the static version of this
+ library, or the `Release' target if you want to use the DLL version of
+ the library. To use the DLL version, you need to set BUILD_DATABASE_SHARED
+ to 1 in config.inc. The DLL version will make the executable much smaller,
+ but you will have to have the DLL present at run-time -- either in the
+ same directory as the XEmacs executable or somewhere in your path.
+
+7. It's possible, but difficult, to build shared libraries for GNU MP.
+ (Static libraries are not yet possible, as there is no makefile.vc for
+ this; you can't build static libraries for VC++ using MinGW.) Basically,
+ you need to build using MinGW and then generate native import libraries.
+ This is more or less described in the documentation, but the following
+ procedure seems to work:
+
+ -- In the top level of the GMP sources, configure using
-1. You really want the XPM library. Grab the latest version of the xpm
- sources (xpm-3.4k.tar.gz as of 2003-10-27) from
-
ftp://ftp.xemacs.org/pub/xemacs/aux/ and unpack them somewhere. Copy
- nt\xpm.mak from the xemacs sources to the lib subdirectory of the xpm
- sources, cd to that directory and build xpm with 'nmake -f xpm.mak'.
-
-2. You probably also want PNG image support. Grab the latest versions of
- zlib and libpng (zlib-1.1.4 and libpng-1.2.5 as of 2003-10-27) from
-
ftp://ftp.xemacs.org/pub/xemacs/aux/, unpack them somewhere and read the
- respective READMEs for details on how to build them. The following
- build procedure works for zlib-1.1.4 and libpng-1.2.5:
-
- cd to the zlib directory and type 'nmake -f nt\Makefile.nt'.
-
- cd to the libpng directory, rename or move the zlib directory to ..\zlib
- and type 'nmake -f scripts\makefile.vcwin32'.
-
-3. If you want TIFF support, grab the latest version of libtiff (tiff-v3.5.7
- as of 2003-10-27) from
ftp://ftp.xemacs.org/pub/xemacs/aux/ and unpack
- it somewhere. Then cd to the libtiff subdirectory of the tiff directory
- and type 'nmake -f makefile.vc'.
-
-4. If you want JPEG support grab the latest version of jpegsrc (jpeg-6b as
- of 2003-10-27) from
ftp://ftp.xemacs.org/pub/xemacs/aux/ and read the
- README for details on how to build it.
-
-5. If you want X-Face support, grab the latest version of the compface
- distribution (1.4 as of 2003-10-27) from
-
ftp://ftp.xemacs.org/pub/xemacs/aux/ and unpack it somewhere.
- Copy nt\compface.mak from the xemacs sources to the compface directory.
- cd to that directory and build libcompface with 'nmake -f compface.mak'.
+ CC='gcc -mno-cygwin' configure --build=pentium3-pc-mingw32
--disable-static --enable-shared
+ -- Edit the `libtool' script in the same directory and change the value
+ of CC from `gcc' to `gcc -mno-cygwin'.
+ -- Run `make'.
+
+ -- Run these commands:
+
+ lib /machine:IX86 /def:.libs/libgmp-3.dll-def
+ cp .libs/libgmp-3.dll-exp libgmp-3.exp
+ cp .libs/libgmp-3.dll .
+
+ -- You should now have an import library named libgmp-3.lib and a DLL
+ libgmp-3.dll.
+
+ -- NOTE: You will need to have this DLL accessible when XEmacs runs.
+ It either needs to be in the same directory as the XEmacs executable
+ or in your path.
+
+8. There are also pre-built binaries for GMP-4.1.2 at
+
+
http://www.cs.nyu.edu/exact/core/gmp/.
+
+ However, they don't seem to work properly for our purposes, as they
+ require LIBC.LIB rather than MSVCRT.DLL.
+
+9. You can build the client library for PostgreSQL by cd'ing to the src/
+ subdirectory of the PostgreSQL sources and running `nmake -f win32.mak'.
+
+10. It does not appear to be very easy to build OpenLDAP under
+ native MS Windows, as it is only experimentally supported. However, there
+ is a mailing list for this, which contains postings of recent binaries and
+ build patches; see
+
+
http://lucas.bergmans.us/hacks/openldap/
+
+ If you know how to build OpenLDAP, please write up a description of the
+ process and send it to us at xemacs-beta(a)xemacs.org.
+
+
* Building
==========
@@ -120,32 +202,47 @@ systems listed.
line in config.inc as follows:
MULE=1
+
+ -- If you're using the pre-supplied optional library pack, all you should
+ have to do is set OPTIONAL_LIBRARY_DIR to the top-level directory
+ where you unpacked everything.
+
+ -- By default, support is enabled for all graphics formats, but not
+ currently for any of the other libraries in the optional library
+ pack. If you want support for GMP, Berkeley DB or PostgreSQL, set
+ the appropriate flag (HAVE_BIGNUM, HAVE_DATABASE or HAVE_POSTGRESQL,
+ respectively) to 1. We do not currently enable these by default
+ because of lack of sufficient testing, questionable usefulness in
+ the case of Berkeley DB and PostgreSQL, excessive library size in
+ the case of Berkeley DB (more than 2 MB for the static library!),
+ and lack of a static library in the case of GMP.
+
+ -- If you want to turn off support for any of the graphics libraries,
+ set the appropriate flag (HAVE_XPM, HAVE_GIF, HAVE_PNG, HAVE_JPEG,
+ HAVE_TIFF or HAVE_XFACE) to 0.
+
+ -- If you have compiled some of the libraries yourself, you will have to
+ specify the location of the top-level source directory for each of
+ these libraries. XEmacs assumes that the directory structure under
+ these directories is as it is in the sources, rather than in any
+ installed format.
- -- If you're building with XPM support, modify the appropriate lines in
+ For example, for XPM support, modify the appropriate lines in
config.inc as follows:
HAVE_XPM=1
XPM_DIR="x:\location\of\your\xpm\sources"
- and similarly for JPEG and TIFF support.
-
- -- If you're building with PNG support, modify the appropriate lines in
- config.inc as follows:
-
- HAVE_PNG=1
- PNG_DIR="x:\location\of\your\png\sources"
- ZLIB_DIR="x:\location\of\your\zlib\sources"
-
- -- If you're building with GIF support, modify the appropriate lines in
- config.inc as follows:
-
- HAVE_GIF=1
-
- -- If you're building with X-Face support, modify the appropriate lines in
- config.inc as follows:
+ Similarly for JPEG, TIFF, etc. support.
- HAVE_XFACE=1
- COMPFACE_DIR="x:\location\of\your\compface\sources"
+ For PNG support, you also need to specify ZLIB_DIR.
+ For GIF support, no directory is necessary as the appropriate code
+ is already in XEmacs.
+
+ If you want to use the DLL version of the Sleepycat DB library,
+ set BUILD_DATABASE_SHARED to 1. You will have to have the DLL
+ present at run-time -- either in the same directory as the XEmacs
+ executable or somewhere in your path.
-- By default, XEmacs will expect to find its packages in the
subdirectories "site-packages", "mule-packages" and
"xemacs-packages"
@@ -201,12 +298,16 @@ systems listed.
Start Menu.
5. To build using MS Visual Studio, you can use the workspace file
- `nt/xemacs.dsw'. This was prepared for Visual C++ 6.0. If you have a
- different version and neither file works, just open up `nt/xemacs.mak'
- from within Visual Studio and it will offer to wrap this Makefile in a
- workspace file, from which you can build. Assuming you want to run from
- the build directory (which you will want to do if you are planning on
- doing any development work on XEmacs), use the following settings in
+ `nt/xemacs.dsw'. This was prepared for Visual C++ 6.0. If you are using
+ Visual Studio .NET, open this file up inside of it and it will offer to
+ convert it to a .NET "solution" file. The same procedure should work
+ for newer versions of Visual Studio (e.g. Visual Studio 2005). If this
+ doesn't work (e.g. you are using Visual C++ 5 or even earlier), just
+ open up `nt/xemacs.mak' from within Visual Studio and it will offer to
+ wrap this Makefile in a workspace file, from which you can build.
+ Assuming you want to run from the build directory (which you will want
+ to do if you are planning on doing any development work on XEmacs), use
+ the following settings (for Visual C++ 6.0, at least) in
Project/Settings...:
Under the General tab:
@@ -267,8 +368,8 @@ Ben Wing (current primary MS Windows mai
Mule code and some of the dialog box code)
Andy Piper (MS Windows contributor; author of the Cygwin support and the
MS Windows glyph and widget code)
-Jonathan Harris (MS Windows contributor; author of the MS Windows redisplay
- and underlying GUI code)
+Jonathan Harris (MS Windows contributor; original author of the MS Windows
+ redisplay and underlying GUI code)
Kirill Katsnelson (MS Windows contributor; author of the MS Windows process
and printing code and some of the dialog box code;
general guru on obscure MS Windows programming topics)
1.16.2.3 +60 -20 XEmacs/xemacs/nt/config.inc.samp
Index: config.inc.samp
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/config.inc.samp,v
retrieving revision 1.16.2.2
retrieving revision 1.16.2.3
diff -u -p -r1.16.2.2 -r1.16.2.3
--- config.inc.samp 2005/07/13 04:46:07 1.16.2.2
+++ config.inc.samp 2005/09/27 16:29:12 1.16.2.3
@@ -35,34 +35,36 @@ OPTIONAL_LIBRARY_DIR=c:\src
# Set this to enable XPM support (virtually mandatory), and specify
# the directory containing xpm. Get the library from
-#
http://ftp.xemacs.org/aux/xpm-3.4k.tar.gz.
+#
http://ftp.xemacs.org/pub/xemacs/aux/xpm-3.4k.tar.gz, or the latest
+# version (note that the library hasn't been updated in years) from
+#
http://www.inria.fr/koala/lehors/xpm.html.
HAVE_XPM=1
XPM_DIR=$(OPTIONAL_LIBRARY_DIR)\xpm-3.4k
# Set this to enable GIF support (built-in).
HAVE_GIF=1
-# Set this to enable PNG support (virtually mandatory), and specify
-# the directories containing png and zlib. Get the latest version from
-#
ftp://ftp.uu.net/graphics/png/. NOTE: In order to compile libpng,
-# you will have to rename the zlib directory to just `zlib'. We don't
-# do that here so we can preserve the version number, like for the other
-# libraries.
+# Set this to enable PNG support (virtually mandatory), and specify the
+# directories containing png and zlib. Get the latest version of PNG from
+#
http://www.libpng.org/pub/png/libpng.html. Get the latest version of ZLIB
+# from
http://www.gzip.org/zlib/. NOTE: In order to compile libpng, you will
+# have to rename the zlib directory to just `zlib'. We don't do that here
+# so we can preserve the version number, like for the other libraries.
HAVE_PNG=1
PNG_DIR=$(OPTIONAL_LIBRARY_DIR)\libpng-1.2.8
-ZLIB_DIR=$(OPTIONAL_LIBRARY_DIR)\zlib-1.2.1
+ZLIB_DIR=$(OPTIONAL_LIBRARY_DIR)\zlib-1.2.3
# Set this to enable JPEG support (useful, but not necessary), and specify
# the directory containing jpeg. Get the latest version from
-#
ftp://ftp.uu.net/graphics/jpeg/.
+#
http://www.ijg.org/ or
ftp://ftp.uu.net/graphics/jpeg/.
HAVE_JPEG=1
JPEG_DIR=$(OPTIONAL_LIBRARY_DIR)\jpeg-6b
# Set this to enable TIFF support (not very important), and specify the
# directory containing tiff. Get the latest version from
-#
ftp://ftp.uu.net/graphics/tiff/.
+#
http://www.remotesensing.org/libtiff/.
HAVE_TIFF=1
-TIFF_DIR=$(OPTIONAL_LIBRARY_DIR)\tiff-v3.5.7
+TIFF_DIR=$(OPTIONAL_LIBRARY_DIR)\tiff-3.7.3
# Set this to enable XFace support (not very important), and specify the
# directory containing compface. Get the library from
@@ -70,6 +72,39 @@ TIFF_DIR=$(OPTIONAL_LIBRARY_DIR)\tiff-v3
HAVE_XFACE=1
COMPFACE_DIR=$(OPTIONAL_LIBRARY_DIR)\compface-1.5.1
+# Set this to enable bignum support (useful, but not necessary), and specify
+# the directory containing GNU MP. Get the latest version from
+#
http://www.swox.com/gmp/.
+HAVE_BIGNUM=0
+BIGNUM_DIR=$(OPTIONAL_LIBRARY_DIR)\gmp-4.1.4
+
+# Set this to enable Berkeley DB support (not very important), and specify
+# the directory containing Sleepcat DB. Get the latest version from
+#
http://www.sleepycat.com/products/db.shtml. If you want to use the
+# shared-library (DLL) version instead of the static library, set
+# BUILD_DATABASE_SHARED to 1.
+HAVE_DATABASE=0
+BUILD_DATABASE_SHARED=0
+DATABASE_DIR=$(OPTIONAL_LIBRARY_DIR)\db-4.3.28
+
+# Set this to enable PostgreSQL support (not very important), and specify
+# the directory containing PostgreSQL. Get the latest version from
+#
http://www.postgresql.org/.
+HAVE_POSTGRESQL=0
+POSTGRESQL_DIR=$(OPTIONAL_LIBRARY_DIR)\postgresql-8.0.3
+
+# Set this to enable LDAP support (not very important), and specify
+# the directory containing LDAP. It is not easy to build OpenLDAP under
+# native MS Windows, as it is only experimentally supported. However, there
+# is a mailing list for this, which contains postings of recent binaries and
+# build patches; see
+#
+#
http://lucas.bergmans.us/hacks/openldap/
+#
+# Get the latest version of OpenLDAP from
http://www.openldap.org/.
+HAVE_LDAP=0
+LDAP_DIR=$(OPTIONAL_LIBRARY_DIR)\openldap-2.3.4
+
############################################################################
# Build settings #
############################################################################
@@ -116,8 +151,21 @@ COMPFACE_DIR=$(OPTIONAL_LIBRARY_DIR)\com
# the actual file system).
MAKEINFO=c:\cygwin\bin\makeinfo.exe
-# Set this to turn on optimization when compiling.
+# Set this to enable debug code in XEmacs that doesn't slow things down,
+# and to add debugging information to the executable. (The code that's
+# enabled in XEmacs is primarily extra commands that aid in debugging
+# problems. The kind of debugging code that slows things down --
+# i.e. internal error-checking -- is controlled by the ERROR_CHECK_ALL
+# variable, below.)
+DEBUG_XEMACS=1
+
+# Set this to turn on optimization when compiling. Normally this should
+# be the opposite of DEBUG_XEMACS.
+!if $(DEBUG_XEMACS)
OPTIMIZED_BUILD=0
+!else
+OPTIMIZED_BUILD=1
+!endif
# Set this to build with the fastcall calling convention, which uses registers
# instead of the stack and should speed things up a bit
@@ -131,14 +179,6 @@ USE_FASTCALL=0
# Set this to compile in support for profiling. If you want line-by-line
# profiling under VC++, you also need debugging turned on.
PROFILE_SUPPORT=0
-
-# Set this to enable debug code in XEmacs that doesn't slow things down,
-# and to add debugging information to the executable. (The code that's
-# enabled in XEmacs is primarily extra commands that aid in debugging
-# problems. The kind of debugging code that slows things down --
-# i.e. internal error-checking -- is controlled by the ERROR_CHECK_ALL
-# variable, below.)
-DEBUG_XEMACS=1
# Set this to enable support for edit-and-continue under VC++.
# WARNING: This turns on incremental linking, which is known to lead to
1.8.2.1 +4 -0 XEmacs/xemacs/nt/minitar.c
Index: minitar.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/minitar.c,v
retrieving revision 1.8
retrieving revision 1.8.2.1
diff -u -p -r1.8 -r1.8.2.1
--- minitar.c 2003/11/06 22:53:31 1.8
+++ minitar.c 2005/09/27 16:29:13 1.8.2.1
@@ -12,6 +12,10 @@
If it breaks, you get to keep both pieces */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
1.109.2.3 +459 -280 XEmacs/xemacs/nt/xemacs.mak
Index: xemacs.mak
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/xemacs.mak,v
retrieving revision 1.109.2.2
retrieving revision 1.109.2.3
diff -u -p -r1.109.2.2 -r1.109.2.3
--- xemacs.mak 2005/07/13 04:46:08 1.109.2.2
+++ xemacs.mak 2005/09/27 16:29:13 1.109.2.3
@@ -1,7 +1,7 @@
# Makefile for Microsoft NMAKE -*- Makefile -*-
#
# Copyright (C) 1995 Board of Trustees, University of Illinois.
-# Copyright (C) 1995, 1996, 2000, 2001, 2002, 2003, 2004 Ben Wing.
+# Copyright (C) 1995, 1996, 2000, 2001, 2002, 2003, 2004, 2005 Ben Wing.
# Copyright (C) 1997, 1998, 2000 Jonathan Harris.
# Copyright (C) 1995 Sun Microsystems, Inc.
# Copyright (C) 1998 Free Software Foundation, Inc.
@@ -95,6 +95,14 @@ BLDSRC=$(BLDROOT)\src
# This appears in the dependency file
LWLIB_SRCDIR=$(SRCROOT)\lwlib
+########################### Figure out current version of VC++.
+
+!if [echo MSC_VER=_MSC_VER > $(OUTDIR)\vcversion.c]
+!endif
+!if [cl /nologo /EP $(OUTDIR)\vcversion.c > $(OUTDIR)\vcversion.tmp]
+!endif
+!include "$(OUTDIR)\vcversion.tmp"
+
########################### Process the config.inc options.
!if !defined(INFODOCK)
@@ -148,6 +156,21 @@ HAVE_NATIVE_SOUND=1
!if !defined(HAVE_WIDGETS)
HAVE_WIDGETS=1
!endif
+!if !defined(HAVE_DATABASE)
+HAVE_DATABASE=0
+!endif
+!if !defined(BUILD_DATABASE_SHARED)
+BUILD_DATABASE_SHARED=0
+!endif
+!if !defined(HAVE_POSTGRESQL)
+HAVE_POSTGRESQL=0
+!endif
+!if !defined(HAVE_LDAP)
+HAVE_LDAP=0
+!endif
+!if !defined(HAVE_BIGNUM)
+HAVE_BIGNUM=0
+!endif
!if !defined(OPTIMIZED_BUILD)
OPTIMIZED_BUILD=1
!endif
@@ -249,6 +272,7 @@ CONFIG_ERROR=1
!message Please specify root directory for your GTK installation: GTK_DIR=path
CONFIG_ERROR=1
!endif
+
!if $(HAVE_MS_WINDOWS) && $(HAVE_XPM) && !defined(XPM_DIR)
!message Please specify root directory for your XPM installation: XPM_DIR=path
CONFIG_ERROR=1
@@ -257,6 +281,7 @@ CONFIG_ERROR=1
!message Specified XPM directory does not contain "$(XPM_DIR)\lib\Xpm.lib"
CONFIG_ERROR=1
!endif
+
!if $(HAVE_MS_WINDOWS) && $(HAVE_PNG) && !defined(PNG_DIR)
!message Please specify root directory for your PNG installation: PNG_DIR=path
CONFIG_ERROR=1
@@ -265,6 +290,7 @@ CONFIG_ERROR=1
!message Specified PNG directory does not contain "$(PNG_DIR)\libpng.lib"
CONFIG_ERROR=1
!endif
+
!if $(HAVE_MS_WINDOWS) && $(HAVE_PNG) && !defined(ZLIB_DIR)
!message Please specify root directory for your ZLIB installation: ZLIB_DIR=path
CONFIG_ERROR=1
@@ -273,6 +299,7 @@ CONFIG_ERROR=1
!message Specified ZLIB directory does not contain "$(ZLIB_DIR)\zlib.lib"
CONFIG_ERROR=1
!endif
+
!if $(HAVE_MS_WINDOWS) && $(HAVE_TIFF) && !defined(TIFF_DIR)
!message Please specify root directory for your TIFF installation: TIFF_DIR=path
CONFIG_ERROR=1
@@ -281,6 +308,7 @@ CONFIG_ERROR=1
!message Specified TIFF directory does not contain
"$(TIFF_DIR)\libtiff\libtiff.lib"
CONFIG_ERROR=1
!endif
+
!if $(HAVE_MS_WINDOWS) && $(HAVE_JPEG) && !defined(JPEG_DIR)
!message Please specify root directory for your JPEG installation: JPEG_DIR=path
CONFIG_ERROR=1
@@ -289,6 +317,7 @@ CONFIG_ERROR=1
!message Specified JPEG directory does not contain "$(JPEG_DIR)\libjpeg.lib"
CONFIG_ERROR=1
!endif
+
!if $(HAVE_MS_WINDOWS) && $(HAVE_XFACE) && !defined(COMPFACE_DIR)
!message Please specify root directory for your COMPFACE installation:
COMPFACE_DIR=path
CONFIG_ERROR=1
@@ -297,10 +326,71 @@ CONFIG_ERROR=1
!message Specified COMPFACE directory does not contain
"$(COMPFACE_DIR)\libcompface.lib"
CONFIG_ERROR=1
!endif
+
!if $(HAVE_MS_WINDOWS) && $(HAVE_TOOLBARS) && !$(HAVE_XPM)
!message Toolbars require XPM support
CONFIG_ERROR=1
!endif
+
+!if $(HAVE_MS_WINDOWS) && $(HAVE_BIGNUM) && !defined(BIGNUM_DIR)
+!message Please specify root directory for your BIGNUM installation: BIGNUM_DIR=path
+CONFIG_ERROR=1
+!endif
+!if $(HAVE_MS_WINDOWS) && $(HAVE_BIGNUM) && defined(BIGNUM_DIR)
+!if $(BUILD_BIGNUM_MINGW_SHARED)
+!if !exist("$(BIGNUM_DIR)\libgmp-3.lib")
+!message Specified BIGNUM directory does not contain
"$(BIGNUM_DIR)\libgmp-3.lib"
+CONFIG_ERROR=1
+!endif
+!else
+!if $(BUILD_BIGNUM_NATIVE_SHARED)
+!if !exist("$(BIGNUM_DIR)\gmp-dynamic\gmp.lib")
+!message Specified BIGNUM directory does not contain
"$(BIGNUM_DIR)\gmp-dynamic\gmp.lib"
+CONFIG_ERROR=1
+!endif
+!else
+!if !exist("$(BIGNUM_DIR)\gmp-static\gmp.lib")
+!message Specified BIGNUM directory does not contain
"$(BIGNUM_DIR)\gmp-static\gmp.lib"
+CONFIG_ERROR=1
+!endif
+!endif
+!endif
+!endif
+
+!if $(HAVE_MS_WINDOWS) && $(HAVE_DATABASE) && !defined(DATABASE_DIR)
+!message Please specify root directory for your DATABASE installation:
DATABASE_DIR=path
+CONFIG_ERROR=1
+!endif
+!if $(HAVE_MS_WINDOWS) && $(HAVE_DATABASE) && defined(DATABASE_DIR)
+!if $(BUILD_DATABASE_SHARED)
+!if !exist("$(DATABASE_DIR)\build_win32\Release\libdb43.lib")
+!message Specified DATABASE directory does not contain
"$(DATABASE_DIR)\build_win32\Release\libdb43.lib"
+CONFIG_ERROR=1
+!endif
+!else
+!if !exist("$(DATABASE_DIR)\build_win32\Release_static\libdb43s.lib")
+!message Specified DATABASE directory does not contain
"$(DATABASE_DIR)\build_win32\Release_static\libdb43s.lib"
+CONFIG_ERROR=1
+!endif
+!endif
+!endif
+
+!if $(HAVE_MS_WINDOWS) && $(HAVE_POSTGRESQL) &&
!defined(POSTGRESQL_DIR)
+!message Please specify root directory for your POSTGRESQL installation:
POSTGRESQL_DIR=path
+CONFIG_ERROR=1
+!endif
+!if $(HAVE_MS_WINDOWS) && $(HAVE_POSTGRESQL) && defined(POSTGRESQL_DIR)
&& !exist("$(POSTGRESQL_DIR)\src\interfaces\libpq\Release\libpq.lib")
+!message Specified POSTGRESQL directory does not contain
"$(POSTGRESQL_DIR)\src\interfaces\libpq\Release\libpq.lib"
+CONFIG_ERROR=1
+!endif
+!if $(HAVE_MS_WINDOWS) && $(HAVE_LDAP) && !defined(LDAP_DIR)
+!message Please specify root directory for your LDAP installation: LDAP_DIR=path
+CONFIG_ERROR=1
+!endif
+!if $(HAVE_MS_WINDOWS) && $(HAVE_LDAP) && defined(LDAP_DIR) &&
!exist("$(LDAP_DIR)\openldap.lib")
+!message Specified LDAP directory does not contain
"$(LDAP_DIR)\openldap.lib"
+CONFIG_ERROR=1
+!endif
!if $(CONFIG_ERROR)
!error Configuration error(s) found
!endif
@@ -385,137 +475,175 @@ EMACS_CONFIGURATION=ppc-pc-win32
STACK_TRACE_EYE_CATCHER=$(XEMACS_VERSION_STRING:.=_)
STACK_TRACE_EYE_CATCHER=xemacs_$(STACK_TRACE_EYE_CATCHER:-=_)_$(EMACS_CONFIGURATION:-=_)
PROGRAM_DEFINES=$(PROGRAM_DEFINES)
-DSTACK_TRACE_EYE_CATCHER=$(STACK_TRACE_EYE_CATCHER)
+
+########################### Determine includes/defines/object files/libraries
+########################### for all configuration options given.
-########################### Determine includes/defines/object file for
-########################### various options.
+OPT_DEFINES=
+OPT_INCLUDES=
+OPT_LIBS=
+OPT_OBJS=
+TEMACS_MODULE_OBJS=
+TEMACS_MODULE_SRCS=
!if $(HAVE_MS_WINDOWS)
-MSW_DEFINES=-DHAVE_MS_WINDOWS
-MSW_INCLUDES=
-MSW_LIBS=comctl32.lib
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_MS_WINDOWS
+OPT_LIBS=$(OPT_LIBS) comctl32.lib
+OPT_OBJS=$(OPT_OBJS) \
+ $(OUTDIR)\console-msw.obj \
+ $(OUTDIR)\device-msw.obj \
+ $(OUTDIR)\event-msw.obj \
+ $(OUTDIR)\frame-msw.obj \
+ $(OUTDIR)\glyphs-msw.obj \
+ $(OUTDIR)\gui-msw.obj \
+ $(OUTDIR)\objects-msw.obj \
+ $(OUTDIR)\redisplay-msw.obj \
+ $(OUTDIR)\select-msw.obj \
+ $(OUTDIR)\dired-msw.obj
+!if $(HAVE_MENUBARS)
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_MENUBARS
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\menubar.obj $(OUTDIR)\menubar-msw.obj
+!endif
+!if $(HAVE_SCROLLBARS)
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_SCROLLBARS
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\scrollbar.obj $(OUTDIR)\scrollbar-msw.obj
+!endif
+!if $(HAVE_TOOLBARS)
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_TOOLBARS
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\toolbar.obj $(OUTDIR)\toolbar-msw.obj
+!endif
+!if $(HAVE_WIDGETS)
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_WIDGETS
+!endif
+!if $(HAVE_DIALOGS)
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_DIALOGS
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\dialog.obj $(OUTDIR)\dialog-msw.obj
+!endif
+# end !if $(HAVE_MS_WINDOWS)
+!endif
!if $(HAVE_XPM)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_XPM -DFOR_MSW
-MSW_INCLUDES=$(MSW_INCLUDES) -I"$(XPM_DIR)" -I"$(XPM_DIR)\lib"
-MSW_LIBS=$(MSW_LIBS) "$(XPM_DIR)\lib\Xpm.lib"
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_XPM -DFOR_MSW
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(XPM_DIR)" -I"$(XPM_DIR)\lib"
+OPT_LIBS=$(OPT_LIBS) "$(XPM_DIR)\lib\Xpm.lib"
!endif
!if $(HAVE_GIF)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_GIF
-MSW_GIF_OBJ=$(OUTDIR)\dgif_lib.obj $(OUTDIR)\gif_io.obj
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_GIF
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\dgif_lib.obj $(OUTDIR)\gif_io.obj
!endif
!if $(HAVE_PNG)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_PNG
-MSW_INCLUDES=$(MSW_INCLUDES) -I"$(PNG_DIR)" -I"$(ZLIB_DIR)"
-MSW_LIBS=$(MSW_LIBS) "$(PNG_DIR)\libpng.lib"
"$(ZLIB_DIR)\zlib.lib"
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_PNG
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(PNG_DIR)" -I"$(ZLIB_DIR)"
+OPT_LIBS=$(OPT_LIBS) "$(PNG_DIR)\libpng.lib"
"$(ZLIB_DIR)\zlib.lib"
!endif
!if $(HAVE_TIFF)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_TIFF
-MSW_INCLUDES=$(MSW_INCLUDES) -I"$(TIFF_DIR)\libtiff"
-MSW_LIBS=$(MSW_LIBS) "$(TIFF_DIR)\libtiff\libtiff.lib"
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_TIFF
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(TIFF_DIR)\libtiff"
+OPT_LIBS=$(OPT_LIBS) "$(TIFF_DIR)\libtiff\libtiff.lib"
!endif
!if $(HAVE_JPEG)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_JPEG
-MSW_INCLUDES=$(MSW_INCLUDES) -I"$(JPEG_DIR)"
-MSW_LIBS=$(MSW_LIBS) "$(JPEG_DIR)\libjpeg.lib"
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_JPEG
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(JPEG_DIR)"
+OPT_LIBS=$(OPT_LIBS) "$(JPEG_DIR)\libjpeg.lib"
!endif
!if $(HAVE_XFACE)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_XFACE
-MSW_INCLUDES=$(MSW_INCLUDES) -I"$(COMPFACE_DIR)"
-MSW_LIBS=$(MSW_LIBS) "$(COMPFACE_DIR)\libcompface.lib"
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_XFACE
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(COMPFACE_DIR)"
+OPT_LIBS=$(OPT_LIBS) "$(COMPFACE_DIR)\libcompface.lib"
!endif
!if $(HAVE_ZLIB)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_ZLIB
-MSW_INCLUDES=$(MSW_INCLUDES) -I"$(ZLIB_DIR)"
-MSW_LIBS=$(MSW_LIBS) "$(ZLIB_DIR)\zlib.lib"
-!endif
-!if $(HAVE_MENUBARS)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_MENUBARS
-MSW_MENUBAR_OBJ=$(OUTDIR)\menubar.obj $(OUTDIR)\menubar-msw.obj
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_ZLIB
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(ZLIB_DIR)"
+OPT_LIBS=$(OPT_LIBS) "$(ZLIB_DIR)\zlib.lib"
+!endif
+!if $(HAVE_BIGNUM)
+OPT_DEFINES=$(OPT_DEFINES) -DWITH_NUMBER_TYPES -DWITH_GMP
+!if $(BUILD_BIGNUM_MINGW_SHARED)
+OPT_LIBS=$(OPT_LIBS) "$(BIGNUM_DIR)\libgmp-3.lib"
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(BIGNUM_DIR)"
+!else
+!if $(BUILD_BIGNUM_NATIVE_SHARED)
+OPT_LIBS=$(OPT_LIBS) "$(BIGNUM_DIR)\gmp-dynamic\gmp.lib"
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(BIGNUM_DIR)\gmp-dynamic"
+!else
+OPT_LIBS=$(OPT_LIBS) "$(BIGNUM_DIR)\gmp-static\gmp.lib"
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(BIGNUM_DIR)\gmp-static"
+!endif
+!endif
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\number-gmp.obj $(OUTDIR)\number.obj
+!endif
+!if $(HAVE_DATABASE)
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_DATABASE -DHAVE_BERKELEY_DB
-DDB_H_FILE=\"db.h\"
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(DATABASE_DIR)\build_win32"
+!if $(BUILD_DATABASE_SHARED)
+OPT_LIBS=$(OPT_LIBS) "$(DATABASE_DIR)\build_win32\Release\libdb43.lib"
+!else
+OPT_LIBS=$(OPT_LIBS)
"$(DATABASE_DIR)\build_win32\Release_static\libdb43s.lib"
+!endif
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\database.obj
+!endif
+!if $(HAVE_POSTGRESQL)
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_POSTGRESQL -DHAVE_POSTGRESQLV7
-DLIBPQ_FE_H_FILE=\"libpq-fe.h\"
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(POSTGRESQL_DIR)\src\include"
-I"$(POSTGRESQL_DIR)\src\interfaces\libpq"
+OPT_LIBS=$(OPT_LIBS)
"$(POSTGRESQL_DIR)\src\interfaces\libpq\Release\libpq.lib"
+TEMACS_MODULE_OBJS=$(TEMACS_MODULE_OBJS) $(OUTDIR)\postgresql.obj
+TEMACS_MODULE_SRCS=$(TEMACS_MODULE_SRCS) $(SRCROOT)\modules\postgresql\postgresql.c
+!endif
+!if $(HAVE_LDAP)
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_LDAP -DHAVE_LDAP_SET_OPTION -DHAVE_LDAP_RESULT2ERROR
-DHAVE_LDAP_PARSE_RESULT
+OPT_INCLUDES=$(OPT_INCLUDES) -I"$(LDAP_DIR)"
+OPT_LIBS=$(OPT_LIBS) "$(LDAP_DIR)\openldap.lib"
+TEMACS_MODULE_OBJS=$(TEMACS_MODULE_OBJS) $(OUTDIR)\eldap.obj
+TEMACS_MODULE_SRCS=$(TEMACS_MODULE_SRCS) $(SRCROOT)\modules\ldap\eldap.c
!endif
-!if $(HAVE_SCROLLBARS)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_SCROLLBARS
-MSW_SCROLLBAR_OBJ=$(OUTDIR)\scrollbar.obj $(OUTDIR)\scrollbar-msw.obj
-!endif
-!if $(HAVE_TOOLBARS)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_TOOLBARS
-MSW_TOOLBAR_OBJ=$(OUTDIR)\toolbar.obj $(OUTDIR)\toolbar-msw.obj
-!endif
-!if $(HAVE_WIDGETS)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_WIDGETS
-!endif
-!if $(HAVE_DIALOGS)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_DIALOGS
-MSW_DIALOG_OBJ=$(OUTDIR)\dialog.obj $(OUTDIR)\dialog-msw.obj
-!endif
!if $(HAVE_NATIVE_SOUND)
-MSW_DEFINES=$(MSW_DEFINES) -DHAVE_NATIVE_SOUND
-!endif
-
-TEMACS_MSW_OBJS=\
- $(OUTDIR)\console-msw.obj \
- $(OUTDIR)\device-msw.obj \
- $(OUTDIR)\event-msw.obj \
- $(OUTDIR)\frame-msw.obj \
- $(OUTDIR)\glyphs-msw.obj \
- $(OUTDIR)\gui-msw.obj \
- $(OUTDIR)\objects-msw.obj \
- $(OUTDIR)\redisplay-msw.obj \
- $(OUTDIR)\select-msw.obj \
- $(OUTDIR)\dired-msw.obj \
- $(MSW_MENUBAR_OBJ) \
- $(MSW_SCROLLBAR_OBJ) \
- $(MSW_TOOLBAR_OBJ) \
- $(MSW_DIALOG_OBJ) \
- $(MSW_GIF_OBJ)
-
-# end !if $(HAVE_MS_WINDOWS)
+OPT_DEFINES=$(OPT_DEFINES) -DHAVE_NATIVE_SOUND
!endif
!if $(MULE)
-MULE_DEFINES=-DMULE
-TEMACS_MULE_OBJS=\
+OPT_DEFINES=$(OPT_DEFINES) -DMULE
+OPT_OBJS=$(OPT_OBJS) \
$(OUTDIR)\mule-ccl.obj \
$(OUTDIR)\mule-charset.obj \
$(OUTDIR)\mule-coding.obj
!endif
!if $(DEBUG_XEMACS)
-TEMACS_DEBUG_OBJS=$(OUTDIR)\debug.obj $(OUTDIR)\tests.obj
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\debug.obj $(OUTDIR)\tests.obj
!endif
!if $(QUICK_BUILD)
-QUICK_DEFINES=-DQUICK_BUILD
+OPT_DEFINES=$(OPT_DEFINES) -DQUICK_BUILD
!endif
!if $(ERROR_CHECK_ALL)
-ERROR_CHECK_DEFINES=-DERROR_CHECK_ALL
+OPT_DEFINES=$(OPT_DEFINES) -DERROR_CHECK_ALL
!endif
!if $(USE_UNION_TYPE)
-UNION_DEFINES=-DUSE_UNION_TYPE
+OPT_DEFINES=$(OPT_DEFINES) -DUSE_UNION_TYPE
!endif
!if $(USE_PORTABLE_DUMPER)
-DUMPER_DEFINES=-DPDUMP
-TEMACS_DUMP_OBJS=$(OUTDIR)\dumper.obj
+OPT_DEFINES=$(OPT_DEFINES) -DPDUMP
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\dumper.obj
!else
-TEMACS_DUMP_OBJS=$(OUTDIR)\unexnt.obj
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\unexnt.obj
!endif
!if $(USE_KKCC)
-KKCC_DEFINES=-DUSE_KKCC
+OPT_DEFINES=$(OPT_DEFINES) -DUSE_KKCC
!endif
-
!if $(MC_ALLOC)
-MC_ALLOC_DEFINES=-DMC_ALLOC
-TEMACS_MC_ALLOC_OBJS=$(OUTDIR)\mc-alloc.obj
+OPT_DEFINES=$(OPT_DEFINES) -DMC_ALLOC
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\mc-alloc.obj
!endif
!if $(USE_SYSTEM_MALLOC)
-MALLOC_DEFINES=-DSYSTEM_MALLOC
+OPT_DEFINES=$(OPT_DEFINES) -DSYSTEM_MALLOC
!else
-MALLOC_DEFINES=-DGNU_MALLOC
-TEMACS_ALLOC_OBJS=$(OUTDIR)\free-hook.obj $(OUTDIR)\gmalloc.obj \
+OPT_DEFINES=$(OPT_DEFINES) -DGNU_MALLOC
+OPT_OBJS=$(OPT_OBJS) $(OUTDIR)\free-hook.obj $(OUTDIR)\gmalloc.obj \
$(OUTDIR)\ntheap.obj $(OUTDIR)\vm-limit.obj
!endif
@@ -533,27 +661,46 @@ CCV=@$(CC)
!if $(DEBUG_XEMACS)
# ---- Debugging support ----
+! if $(MSC_VER) >= 1400
+# VC 7 sets opt:noref automatically with -debug. VC 8 apparently doesn't
+# do this, and then complains if you try to use edit-and-continue without
+# giving it.
+DEBUG_FLAG_LINK_DEBUG=-debug -opt:noref
+# This turns on additional run-time checking
+# For some reason it causes spawning of make-docfile to crash in VC 7
+DEBUG_FLAG_COMPILE_DEBUG=-RTC1
+! else
+DEBUG_FLAG_LINK_DEBUG=-debug:full
+DEBUG_FLAG_COMPILE_DEBUG=
+! endif
+
! if $(SUPPORT_EDIT_AND_CONTINUE)
# support edit-and-continue
-DEBUG_FLAGS_COMPILE=-ZI
+DEBUG_FLAGS_COMPILE=$(DEBUG_FLAG_COMPILE_DEBUG) -ZI
# WARNING: There is a very good reason for -incremental:no, as it can cause
# all sorts of weird crashes in or after a pdump load. We must allow
# incremental linking for edit-and-continue to work, however.
-DEBUG_FLAGS_LINK=-debug:full
+DEBUG_FLAGS_LINK=$(DEBUG_FLAG_LINK_DEBUG)
! else
-DEBUG_FLAGS_COMPILE=-Zi
-DEBUG_FLAGS_LINK=-debug:full -incremental:no
+DEBUG_FLAGS_COMPILE=$(DEBUG_FLAG_COMPILE_DEBUG) -Zi
+DEBUG_FLAGS_LINK=$(DEBUG_FLAG_LINK_DEBUG) -incremental:no
! endif
-DEBUG_DEFINES=-DDEBUG_XEMACS -D_DEBUG
+
+OPT_DEFINES=$(OPT_DEFINES) -DDEBUG_XEMACS -D_DEBUG
+
+! if $(MSC_VER) >= 1300
+#BROWSERFLAGS=-FR -Fd$(OUTDIR)\temacs.pdb
+BROWSERFLAGS=-FR$*.sbr -Fd$(OUTDIR)\temacs.pdb
+! else
#BROWSERFLAGS=-Fr -Fd$(OUTDIR)\temacs.pdb
BROWSERFLAGS=-Fr$*.sbr -Fd$(OUTDIR)\temacs.pdb
+! endif
!else
# ---- No debugging support ----
DEBUG_FLAGS_COMPILE=
DEBUG_FLAGS_LINK=-incremental:no
-DEBUG_DEFINES=
BROWSERFLAGS=
!endif
@@ -572,6 +719,9 @@ LIBC_LIB=libc.lib
!endif
!if $(OPTIMIZED_BUILD)
+!if $(SUPPORT_EDIT_AND_CONTINUE)
+!error Edit-and-continue is not compatible with optimization.
+!endif
# -G5 means optimize for Pentium. (According to the code-optimization
# article, -GB is the same as -G5, and -G6, i.e. optimze for Pentium Pro,
# gains you little over -G5 for PPro's but causes big slowdowns for
@@ -610,12 +760,10 @@ CPLUSPLUS_COMPILE_FLAGS=
########################### Determine generic includes/defines/flags.
-INCLUDES=-I$(NT)\inc -I$(SRC) $(MSW_INCLUDES)
+INCLUDES=-I$(NT)\inc -I$(SRC) $(OPT_INCLUDES)
-DEFINES=$(MSW_DEFINES) $(MULE_DEFINES) $(UNION_DEFINES) \
- $(DUMPER_DEFINES) $(KKCC_DEFINES) $(MC_ALLOC_DEFINES) \
- $(MALLOC_DEFINES) $(QUICK_DEFINES) $(ERROR_CHECK_DEFINES) \
- $(DEBUG_DEFINES) -DWIN32_LEAN_AND_MEAN -DWIN32_NATIVE -Demacs \
+DEFINES=$(OPT_DEFINES) \
+ -DWIN32_LEAN_AND_MEAN -DWIN32_NATIVE -Demacs \
-DHAVE_CONFIG_H $(PROGRAM_DEFINES) $(PATH_DEFINES)
CFLAGS_NO_OPT=-nologo -W3 -DSTRICT $(DEBUG_FLAGS_COMPILE)
@@ -653,13 +801,8 @@ TEMACS_CPP_CDECL_FLAGS=$(CFLAGS_CDECL) $
########################### Determine XEmacs object files.
-TEMACS_OBJS= \
- $(TEMACS_MSW_OBJS)\
- $(TEMACS_MULE_OBJS)\
- $(TEMACS_DEBUG_OBJS)\
- $(TEMACS_ALLOC_OBJS)\
- $(TEMACS_DUMP_OBJS)\
- $(TEMACS_MC_ALLOC_OBJS)\
+TEMACS_COMMON_OBJS= \
+ $(OPT_OBJS)\
$(OUTDIR)\abbrev.obj \
$(OUTDIR)\alloc.obj \
$(OUTDIR)\alloca.obj \
@@ -753,6 +896,14 @@ TEMACS_OBJS= \
$(OUTDIR)\window.obj \
$(OUTDIR)\win32.obj
+TEMACS_OBJS= \
+ $(TEMACS_COMMON_OBJS) \
+ $(TEMACS_MODULE_OBJS)
+
+TEMACS_DOC_SOURCES= \
+ $(TEMACS_COMMON_OBJS) \
+ $(TEMACS_MODULE_SRCS)
+
#########################################################################
## Implicit rules ##
#########################################################################
@@ -822,6 +973,12 @@ $(OUTDIR)\emacs.obj: $(SRCROOT)\version.
$(OUTDIR)\libinterface.obj: $(SRC)\libinterface.c
$(CCV) $(TEMACS_CPP_CDECL_FLAGS) $(SRC)\$((a)B).c -Fo$@ $(BROWSERFLAGS)
+$(OUTDIR)\postgresql.obj: $(SRCROOT)\modules\postgresql\postgresql.c
+ $(CCV) -I$(SRC) $(TEMACS_CPP_FLAGS) $(SRCROOT)\modules\postgresql\postgresql.c -Fo$@
$(BROWSERFLAGS)
+
+$(OUTDIR)\eldap.obj: $(SRCROOT)\modules\ldap\eldap.c
+ $(CCV) -I$(SRC) $(TEMACS_CPP_FLAGS) $(SRCROOT)\modules\ldap\eldap.c -Fo$@
$(BROWSERFLAGS)
+
###################### Generated source files
$(OUTDIR)\nul:
@@ -920,7 +1077,7 @@ $(BLDLIB_SRC)/movemail.exe : $(LIB_SRC)/
# Minitar uses zlib so just use cdecl to simplify things
$(BLDLIB_SRC)/minitar.exe : $(NT)/minitar.c
- $(CCV) -I"$(ZLIB_DIR)" $(LIB_SRC_DEFINES) $(CFLAGS_CDECL_NO_LIB) -MD
$(LINK_DEPENDENCY_ARGS) "$(ZLIB_DIR)\zlib.lib"
+ $(CCV) -I$(SRC) -I"$(ZLIB_DIR)" $(LIB_SRC_DEFINES) $(CFLAGS_CDECL_NO_LIB)
-MD $(LINK_DEPENDENCY_ARGS) "$(ZLIB_DIR)\zlib.lib"
LIB_SRC_TOOLS = \
$(BLDLIB_SRC)/etags.exe \
@@ -944,181 +1101,6 @@ LIB_SRC_TOOLS = \
$(LIB_SRC_TOOLS)
!endif
-###################### Building the info files
-
-!if !defined(MAKEINFO)
-MAKEINFO=$(XEMACS_BATCH_PACKAGES) -l texinfmt -f batch-texinfo-format
-!endif
-
-MANDIR = $(SRCROOT)\man
-INFODIR = $(SRCROOT)\info
-INFO_FILES= \
- $(INFODIR)\cl.info \
- $(INFODIR)\custom.info \
- $(INFODIR)\emodules.info \
- $(INFODIR)\external-widget.info \
- $(INFODIR)\info.info \
- $(INFODIR)\standards.info \
- $(INFODIR)\term.info \
- $(INFODIR)\termcap.info \
- $(INFODIR)\texinfo.info \
- $(INFODIR)\widget.info \
- $(INFODIR)\xemacs-faq.info \
- $(INFODIR)\xemacs.info \
- $(INFODIR)\lispref.info \
- $(INFODIR)\new-users-guide.info \
- $(INFODIR)\internals.info
-
-{$(MANDIR)}.texi{$(INFODIR)}.info:
- cd $(MANDIR)
- $(MAKEINFO) $(**F)
-
-XEMACS_SRCS = \
- $(MANDIR)\xemacs\abbrevs.texi \
- $(MANDIR)\xemacs\basic.texi \
- $(MANDIR)\xemacs\buffers.texi \
- $(MANDIR)\xemacs\building.texi \
- $(MANDIR)\xemacs\calendar.texi \
- $(MANDIR)\xemacs\cmdargs.texi \
- $(MANDIR)\xemacs\custom.texi \
- $(MANDIR)\xemacs\display.texi \
- $(MANDIR)\xemacs\entering.texi \
- $(MANDIR)\xemacs\files.texi \
- $(MANDIR)\xemacs\fixit.texi \
- $(MANDIR)\xemacs\frame.texi \
- $(MANDIR)\xemacs\glossary.texi \
- $(MANDIR)\xemacs\gnu.texi \
- $(MANDIR)\xemacs\help.texi \
- $(MANDIR)\xemacs\indent.texi \
- $(MANDIR)\xemacs\keystrokes.texi \
- $(MANDIR)\xemacs\killing.texi \
- $(MANDIR)\xemacs\m-x.texi \
- $(MANDIR)\xemacs\major.texi \
- $(MANDIR)\xemacs\mark.texi \
- $(MANDIR)\xemacs\menus.texi \
- $(MANDIR)\xemacs\mini.texi \
- $(MANDIR)\xemacs\misc.texi \
- $(MANDIR)\xemacs\mouse.texi \
- $(MANDIR)\xemacs\mule.texi \
- $(MANDIR)\xemacs\new.texi \
- $(MANDIR)\xemacs\packages.texi \
- $(MANDIR)\xemacs\picture.texi \
- $(MANDIR)\xemacs\programs.texi \
- $(MANDIR)\xemacs\reading.texi \
- $(MANDIR)\xemacs\regs.texi \
- $(MANDIR)\xemacs\search.texi \
- $(MANDIR)\xemacs\sending.texi \
- $(MANDIR)\xemacs\startup.texi \
- $(MANDIR)\xemacs\text.texi \
- $(MANDIR)\xemacs\trouble.texi \
- $(MANDIR)\xemacs\undo.texi \
- $(MANDIR)\xemacs\windows.texi \
- $(MANDIR)\xemacs\xemacs.texi
-
-LISPREF_SRCS = \
- $(MANDIR)\lispref\abbrevs.texi \
- $(MANDIR)\lispref\annotations.texi \
- $(MANDIR)\lispref\back.texi \
- $(MANDIR)\lispref\backups.texi \
- $(MANDIR)\lispref\buffers.texi \
- $(MANDIR)\lispref\building.texi \
- $(MANDIR)\lispref\commands.texi \
- $(MANDIR)\lispref\compile.texi \
- $(MANDIR)\lispref\consoles-devices.texi \
- $(MANDIR)\lispref\control.texi \
- $(MANDIR)\lispref\customize.texi \
- $(MANDIR)\lispref\databases.texi \
- $(MANDIR)\lispref\debugging.texi \
- $(MANDIR)\lispref\dialog.texi \
- $(MANDIR)\lispref\display.texi \
- $(MANDIR)\lispref\dragndrop.texi \
- $(MANDIR)\lispref\edebug-inc.texi \
- $(MANDIR)\lispref\edebug.texi \
- $(MANDIR)\lispref\errors.texi \
- $(MANDIR)\lispref\eval.texi \
- $(MANDIR)\lispref\extents.texi \
- $(MANDIR)\lispref\faces.texi \
- $(MANDIR)\lispref\files.texi \
- $(MANDIR)\lispref\frames.texi \
- $(MANDIR)\lispref\functions.texi \
- $(MANDIR)\lispref\glyphs.texi \
- $(MANDIR)\lispref\hash-tables.texi \
- $(MANDIR)\lispref\help.texi \
- $(MANDIR)\lispref\hooks.texi \
- $(MANDIR)\lispref\index.texi \
- $(MANDIR)\lispref\internationalization.texi \
- $(MANDIR)\lispref\intro.texi \
- $(MANDIR)\lispref\keymaps.texi \
- $(MANDIR)\lispref\ldap.texi \
- $(MANDIR)\lispref\lispref.texi \
- $(MANDIR)\lispref\lists.texi \
- $(MANDIR)\lispref\loading.texi \
- $(MANDIR)\lispref\locals.texi \
- $(MANDIR)\lispref\macros.texi \
- $(MANDIR)\lispref\maps.texi \
- $(MANDIR)\lispref\markers.texi \
- $(MANDIR)\lispref\menus.texi \
- $(MANDIR)\lispref\minibuf.texi \
- $(MANDIR)\lispref\modes.texi \
- $(MANDIR)\lispref\mouse.texi \
- $(MANDIR)\lispref\mule.texi \
- $(MANDIR)\lispref\numbers.texi \
- $(MANDIR)\lispref\objects.texi \
- $(MANDIR)\lispref\os.texi \
- $(MANDIR)\lispref\positions.texi \
- $(MANDIR)\lispref\processes.texi \
- $(MANDIR)\lispref\range-tables.texi \
- $(MANDIR)\lispref\scrollbars.texi \
- $(MANDIR)\lispref\searching.texi \
- $(MANDIR)\lispref\sequences.texi \
- $(MANDIR)\lispref\specifiers.texi \
- $(MANDIR)\lispref\streams.texi \
- $(MANDIR)\lispref\strings.texi \
- $(MANDIR)\lispref\symbols.texi \
- $(MANDIR)\lispref\syntax.texi \
- $(MANDIR)\lispref\text.texi \
- $(MANDIR)\lispref\tips.texi \
- $(MANDIR)\lispref\toolbar.texi \
- $(MANDIR)\lispref\tooltalk.texi \
- $(MANDIR)\lispref\variables.texi \
- $(MANDIR)\lispref\windows.texi \
- $(MANDIR)\lispref\x-windows.texi
-
-INTERNALS_SRCS = \
- $(MANDIR)\internals\internals.texi
-
-NEW_USERS_GUIDE_SRCS = \
- $(MANDIR)\new-users-guide\custom1.texi \
- $(MANDIR)\new-users-guide\custom2.texi \
- $(MANDIR)\new-users-guide\edit.texi \
- $(MANDIR)\new-users-guide\enter.texi \
- $(MANDIR)\new-users-guide\files.texi \
- $(MANDIR)\new-users-guide\help.texi \
- $(MANDIR)\new-users-guide\modes.texi \
- $(MANDIR)\new-users-guide\new-users-guide.texi \
- $(MANDIR)\new-users-guide\region.texi \
- $(MANDIR)\new-users-guide\search.texi \
- $(MANDIR)\new-users-guide\xmenu.texi
-
-$(INFODIR)\xemacs.info: $(XEMACS_SRCS)
- cd $(MANDIR)\xemacs
- $(MAKEINFO) xemacs.texi
-
-
-$(INFODIR)\lispref.info: $(LISPREF_SRCS)
- cd $(MANDIR)\lispref
- $(MAKEINFO) lispref.texi
-
-$(INFODIR)\internals.info: $(INTERNALS_SRCS)
- cd $(MANDIR)\internals
- $(MAKEINFO) internals.texi
-
-$(INFODIR)\new-users-guide.info: $(NEW_USERS_GUIDE_SRCS)
- cd $(MANDIR)\new-users-guide
- $(MAKEINFO) new-users-guide.texi
-
-info: makeinfo-test $(INFO_FILES)
-
########################### Create the Installation file
$(BLDROOT)\Installation:: installation
@@ -1209,6 +1191,22 @@ XEmacs $(XEMACS_VERSION_STRING) $(xemacs
!if $(HAVE_WIDGETS)
Compiling in support for widgets.
!endif
+!if $(HAVE_BIGNUM)
+ Compiling in support for arbitrary-precision numbers.
+!endif
+!if $(HAVE_DATABASE)
+!if $(BUILD_DATABASE_SHARED)
+ Compiling in support for Berkeley Databases (DLL version).
+!else
+ Compiling in support for Berkeley Databases (static-library version).
+!endif
+!endif
+!if $(HAVE_POSTGRESQL)
+ Compiling in support for PostgreSQL.
+!endif
+!if $(HAVE_LDAP)
+ Compiling in support for LDAP.
+!endif
!if $(HAVE_NATIVE_SOUND)
Compiling in support for native sounds.
!endif
@@ -1271,7 +1269,7 @@ TEMACS_ENTRYPOINT=-entry:mainCRTStartup
!endif
TEMACS_BROWSE=$(BLDSRC)\temacs.bsc
-TEMACS_LIBS=$(LASTFILE) $(MSW_LIBS) \
+TEMACS_LIBS=$(LASTFILE) $(OPT_LIBS) \
oldnames.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib \
shell32.lib wsock32.lib netapi32.lib winmm.lib winspool.lib ole32.lib \
mpr.lib uuid.lib imm32.lib $(LIBC_LIB)
@@ -1337,6 +1335,7 @@ TEMACS_DUMP_DEP = $(OUTDIR)\temacs.res
!endif
$(RAW_EXE): $(TEMACS_OBJS) $(LASTFILE) $(TEMACS_DUMP_DEP)
+ @echo link $(TEMACS_LFLAGS) -out:$@ $(TEMACS_OBJS) $(TEMACS_DUMP_DEP) $(TEMACS_LIBS)
link.exe @<<
$(TEMACS_LFLAGS) -out:$@ $(TEMACS_OBJS) $(TEMACS_DUMP_DEP) $(TEMACS_LIBS)
<<
@@ -1363,10 +1362,10 @@ docfile ::
docfile :: $(DOC)
# We need to write the QUICK_BUILD stuff as-is (and not just have no
-# dependencies for DOC) because DOC needs TEMACS_OBJS as dependencies to
+# dependencies for DOC) because DOC needs TEMACS_DOC_SOURCES as dependencies to
# get $(**) right. The `touch' is needed because of the way nmake
# calculates dependencies; see comments in src/Makefile.in.in.
-$(DOC): $(BLDLIB_SRC)\make-docfile.exe $(BLDSRC)\NEEDTODUMP $(TEMACS_OBJS)
+$(DOC): $(BLDLIB_SRC)\make-docfile.exe $(BLDSRC)\NEEDTODUMP $(TEMACS_DOC_SOURCES)
!if $(QUICK_BUILD)
if not exist $(DOC) $(TEMACS_BATCH) -l $(LISP)\make-docfile.el -- -o $(DOC) -i
$(SRCROOT)\site-packages @<<
$(**)
@@ -1421,8 +1420,182 @@ load-shadows: update-elc-2
@$(XEMACS_BATCH) -f list-load-path-shadows
!endif
+###################### Building the info files
+
+!if !defined(MAKEINFO)
+MAKEINFO=$(XEMACS_BATCH_PACKAGES) -l texinfmt -f batch-texinfo-format
+!endif
+
+MANDIR = $(SRCROOT)\man
+INFODIR = $(SRCROOT)\info
+INFO_FILES= \
+ $(INFODIR)\cl.info \
+ $(INFODIR)\custom.info \
+ $(INFODIR)\emodules.info \
+ $(INFODIR)\external-widget.info \
+ $(INFODIR)\info.info \
+ $(INFODIR)\standards.info \
+ $(INFODIR)\term.info \
+ $(INFODIR)\termcap.info \
+ $(INFODIR)\texinfo.info \
+ $(INFODIR)\widget.info \
+ $(INFODIR)\xemacs-faq.info \
+ $(INFODIR)\xemacs.info \
+ $(INFODIR)\lispref.info \
+ $(INFODIR)\new-users-guide.info \
+ $(INFODIR)\internals.info
+
+{$(MANDIR)}.texi{$(INFODIR)}.info:
+ cd $(MANDIR)
+ $(MAKEINFO) $(**F)
+
+XEMACS_SRCS = \
+ $(MANDIR)\xemacs\abbrevs.texi \
+ $(MANDIR)\xemacs\basic.texi \
+ $(MANDIR)\xemacs\buffers.texi \
+ $(MANDIR)\xemacs\building.texi \
+ $(MANDIR)\xemacs\calendar.texi \
+ $(MANDIR)\xemacs\cmdargs.texi \
+ $(MANDIR)\xemacs\custom.texi \
+ $(MANDIR)\xemacs\display.texi \
+ $(MANDIR)\xemacs\entering.texi \
+ $(MANDIR)\xemacs\files.texi \
+ $(MANDIR)\xemacs\fixit.texi \
+ $(MANDIR)\xemacs\frame.texi \
+ $(MANDIR)\xemacs\glossary.texi \
+ $(MANDIR)\xemacs\gnu.texi \
+ $(MANDIR)\xemacs\help.texi \
+ $(MANDIR)\xemacs\indent.texi \
+ $(MANDIR)\xemacs\keystrokes.texi \
+ $(MANDIR)\xemacs\killing.texi \
+ $(MANDIR)\xemacs\m-x.texi \
+ $(MANDIR)\xemacs\major.texi \
+ $(MANDIR)\xemacs\mark.texi \
+ $(MANDIR)\xemacs\menus.texi \
+ $(MANDIR)\xemacs\mini.texi \
+ $(MANDIR)\xemacs\misc.texi \
+ $(MANDIR)\xemacs\mouse.texi \
+ $(MANDIR)\xemacs\mule.texi \
+ $(MANDIR)\xemacs\new.texi \
+ $(MANDIR)\xemacs\packages.texi \
+ $(MANDIR)\xemacs\picture.texi \
+ $(MANDIR)\xemacs\programs.texi \
+ $(MANDIR)\xemacs\reading.texi \
+ $(MANDIR)\xemacs\regs.texi \
+ $(MANDIR)\xemacs\search.texi \
+ $(MANDIR)\xemacs\sending.texi \
+ $(MANDIR)\xemacs\startup.texi \
+ $(MANDIR)\xemacs\text.texi \
+ $(MANDIR)\xemacs\trouble.texi \
+ $(MANDIR)\xemacs\undo.texi \
+ $(MANDIR)\xemacs\windows.texi \
+ $(MANDIR)\xemacs\xemacs.texi
+
+LISPREF_SRCS = \
+ $(MANDIR)\lispref\abbrevs.texi \
+ $(MANDIR)\lispref\annotations.texi \
+ $(MANDIR)\lispref\back.texi \
+ $(MANDIR)\lispref\backups.texi \
+ $(MANDIR)\lispref\buffers.texi \
+ $(MANDIR)\lispref\building.texi \
+ $(MANDIR)\lispref\commands.texi \
+ $(MANDIR)\lispref\compile.texi \
+ $(MANDIR)\lispref\consoles-devices.texi \
+ $(MANDIR)\lispref\control.texi \
+ $(MANDIR)\lispref\customize.texi \
+ $(MANDIR)\lispref\databases.texi \
+ $(MANDIR)\lispref\debugging.texi \
+ $(MANDIR)\lispref\dialog.texi \
+ $(MANDIR)\lispref\display.texi \
+ $(MANDIR)\lispref\dragndrop.texi \
+ $(MANDIR)\lispref\edebug-inc.texi \
+ $(MANDIR)\lispref\edebug.texi \
+ $(MANDIR)\lispref\errors.texi \
+ $(MANDIR)\lispref\eval.texi \
+ $(MANDIR)\lispref\extents.texi \
+ $(MANDIR)\lispref\faces.texi \
+ $(MANDIR)\lispref\files.texi \
+ $(MANDIR)\lispref\frames.texi \
+ $(MANDIR)\lispref\functions.texi \
+ $(MANDIR)\lispref\glyphs.texi \
+ $(MANDIR)\lispref\hash-tables.texi \
+ $(MANDIR)\lispref\help.texi \
+ $(MANDIR)\lispref\hooks.texi \
+ $(MANDIR)\lispref\index.texi \
+ $(MANDIR)\lispref\internationalization.texi \
+ $(MANDIR)\lispref\intro.texi \
+ $(MANDIR)\lispref\keymaps.texi \
+ $(MANDIR)\lispref\ldap.texi \
+ $(MANDIR)\lispref\lispref.texi \
+ $(MANDIR)\lispref\lists.texi \
+ $(MANDIR)\lispref\loading.texi \
+ $(MANDIR)\lispref\locals.texi \
+ $(MANDIR)\lispref\macros.texi \
+ $(MANDIR)\lispref\maps.texi \
+ $(MANDIR)\lispref\markers.texi \
+ $(MANDIR)\lispref\menus.texi \
+ $(MANDIR)\lispref\minibuf.texi \
+ $(MANDIR)\lispref\modes.texi \
+ $(MANDIR)\lispref\mouse.texi \
+ $(MANDIR)\lispref\mule.texi \
+ $(MANDIR)\lispref\numbers.texi \
+ $(MANDIR)\lispref\objects.texi \
+ $(MANDIR)\lispref\os.texi \
+ $(MANDIR)\lispref\positions.texi \
+ $(MANDIR)\lispref\processes.texi \
+ $(MANDIR)\lispref\range-tables.texi \
+ $(MANDIR)\lispref\scrollbars.texi \
+ $(MANDIR)\lispref\searching.texi \
+ $(MANDIR)\lispref\sequences.texi \
+ $(MANDIR)\lispref\specifiers.texi \
+ $(MANDIR)\lispref\streams.texi \
+ $(MANDIR)\lispref\strings.texi \
+ $(MANDIR)\lispref\symbols.texi \
+ $(MANDIR)\lispref\syntax.texi \
+ $(MANDIR)\lispref\text.texi \
+ $(MANDIR)\lispref\tips.texi \
+ $(MANDIR)\lispref\toolbar.texi \
+ $(MANDIR)\lispref\tooltalk.texi \
+ $(MANDIR)\lispref\variables.texi \
+ $(MANDIR)\lispref\windows.texi \
+ $(MANDIR)\lispref\x-windows.texi
+
+INTERNALS_SRCS = \
+ $(MANDIR)\internals\internals.texi
+
+NEW_USERS_GUIDE_SRCS = \
+ $(MANDIR)\new-users-guide\custom1.texi \
+ $(MANDIR)\new-users-guide\custom2.texi \
+ $(MANDIR)\new-users-guide\edit.texi \
+ $(MANDIR)\new-users-guide\enter.texi \
+ $(MANDIR)\new-users-guide\files.texi \
+ $(MANDIR)\new-users-guide\help.texi \
+ $(MANDIR)\new-users-guide\modes.texi \
+ $(MANDIR)\new-users-guide\new-users-guide.texi \
+ $(MANDIR)\new-users-guide\region.texi \
+ $(MANDIR)\new-users-guide\search.texi \
+ $(MANDIR)\new-users-guide\xmenu.texi
+
+$(INFODIR)\xemacs.info: $(XEMACS_SRCS)
+ cd $(MANDIR)\xemacs
+ $(MAKEINFO) xemacs.texi
+
+$(INFODIR)\lispref.info: $(LISPREF_SRCS)
+ cd $(MANDIR)\lispref
+ $(MAKEINFO) lispref.texi
+
+$(INFODIR)\internals.info: $(INTERNALS_SRCS)
+ cd $(MANDIR)\internals
+ $(MAKEINFO) internals.texi
+
+$(INFODIR)\new-users-guide.info: $(NEW_USERS_GUIDE_SRCS)
+ cd $(MANDIR)\new-users-guide
+ $(MAKEINFO) new-users-guide.texi
+
+info: makeinfo-test $(INFO_FILES)
+
#########################################################################
-## Other random crap ##
+## Testing, TAGS, install, clean, etc. ##
#########################################################################
########################### Automated tests
@@ -1503,18 +1676,24 @@ mostlyclean:
-$(DEL) $(OUTDIR)\*.lib
-$(DEL) $(OUTDIR)\*.obj
-$(DEL) $(OUTDIR)\*.pdb
+ -$(DEL) $(OUTDIR)\*.idb
+ -$(DEL) $(OUTDIR)\*.ilk
-$(DEL) $(OUTDIR)\*.res
-$(DEL) $(OUTDIR)\*.sbr
-$(DEL) $(BLDSRC)\*.exe
-$(DEL) $(BLDSRC)\*.dmp
-$(DEL) $(BLDSRC)\*.map
-$(DEL) $(BLDSRC)\*.pdb
+ -$(DEL) $(BLDSRC)\*.idb
+ -$(DEL) $(BLDSRC)\*.ilk
-$(DEL) $(BLDSRC)\NEEDTODUMP
-$(DEL) $(BLDSRC)\dump-id.c
-$(DEL) $(SRC)\*.bsc
-$(DEL) $(BLDLIB_SRC)\*.exe
-$(DEL) $(BLDLIB_SRC)\*.obj
-$(DEL) $(BLDLIB_SRC)\*.pdb
+ -$(DEL) $(BLDLIB_SRC)\*.idb
+ -$(DEL) $(BLDLIB_SRC)\*.ilk
-$(DEL) $(BLDLIB_SRC)\*.res
versionclean:
1.758.2.31 +0 -29 XEmacs/xemacs/src/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.758.2.30
retrieving revision 1.758.2.31
diff -u -p -r1.758.2.30 -r1.758.2.31
--- ChangeLog 2005/09/24 14:02:28 1.758.2.30
+++ ChangeLog 2005/09/27 16:29:18 1.758.2.31
@@ -1,32 +1,3 @@
-2005-09-22 Stephen J. Turnbull <stephen(a)xemacs.org>
-
- * Makefile.in.in (HAVE_CANNA): Handle Canna as a module.
-
- * emacs.c (main_1): Update Canna initializers to *_canna_api names.
-
- * mule-canna.c: Moved to modules/canna/canna_api.c.
-
- * symsinit.h (syms_of_mule_canna):
- (vars_of_mule_canna):
- Rename to *_of_canna_api.
-
-2005-09-24 Stephen J. Turnbull <stephen(a)xemacs.org>
-
- * objects-x.c (x_find_charset_font): Give user more control of
- debug verbosity. Reduce verbosity at debug_xft=1. Reduce
- verbosity of truename by removing properties that are rarely
- specified from fontconfig font name.
-
-2005-09-24 Stephen J. Turnbull <stephen(a)xemacs.org>
-
- * objects-x.c (x_find_charset_font): Work around buggy return
- value in FcInit().
-
-2005-09-24 Stephen J. Turnbull <stephen(a)xemacs.org>
-
- * objects-x.c: Improve various header comments.
- (x_font_instance_truename): Remove obsolete #ifdef 0 code.
-
2005-09-12 Mike Alexander <mta(a)arbortext.com>
* intl-win32.c (mswindows_current_locale): Define in non-MULE
1.1.2.8 +43 -0 XEmacs/xemacs/src/Attic/ChangeLog.Xft
Index: ChangeLog.Xft
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Attic/ChangeLog.Xft,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -p -r1.1.2.7 -r1.1.2.8
--- ChangeLog.Xft 2005/09/06 08:24:50 1.1.2.7
+++ ChangeLog.Xft 2005/09/27 16:29:28 1.1.2.8
@@ -1,3 +1,46 @@
+2005-09-10 Clemens Fruhwirth <clemens(a)endorphin.org>
+
+ * glyphs-x.c (update_widget_face): Wrap error checking of rf in an
+ #ifdef USE_XFT.
+
+2005-09-25 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * objects-x.c (x_initialize_font_instance): Must encode extname
+ twice, Qxft_font_name_encoding != Qx_font_name_encoding.
+
+2005-09-25 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * objects-x.c (x_finalize_font_instance): Add newline to message.
+
+2005-09-22 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * Makefile.in.in (HAVE_CANNA): Handle Canna as a module.
+
+ * emacs.c (main_1): Update Canna initializers to *_canna_api names.
+
+ * mule-canna.c: Moved to modules/canna/canna_api.c.
+
+ * symsinit.h (syms_of_mule_canna):
+ (vars_of_mule_canna):
+ Rename to *_of_canna_api.
+
+2005-09-24 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * objects-x.c (x_find_charset_font): Give user more control of
+ debug verbosity. Reduce verbosity at debug_xft=1. Reduce
+ verbosity of truename by removing properties that are rarely
+ specified from fontconfig font name.
+
+2005-09-24 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * objects-x.c (x_find_charset_font): Work around buggy return
+ value in FcInit().
+
+2005-09-24 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * objects-x.c: Improve various header comments.
+ (x_font_instance_truename): Remove obsolete #ifdef 0 code.
+
2005-09-06 Stephen J. Turnbull <stephen(a)xemacs.org>
* console-x-impl.h (struct x_frame): Rewrite comment.
1.112.2.6 +1 -1 XEmacs/xemacs/src/Makefile.in.in
Index: Makefile.in.in
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Makefile.in.in,v
retrieving revision 1.112.2.5
retrieving revision 1.112.2.6
diff -u -p -r1.112.2.5 -r1.112.2.6
--- Makefile.in.in 2005/09/24 14:02:34 1.112.2.5
+++ Makefile.in.in 2005/09/27 16:29:28 1.112.2.6
@@ -383,7 +383,7 @@ mo_file = $(LIB_SRC)/emacs.mo
## -Demacs is needed to make some files produce the correct version
## for use in Emacs.
-cppflags = $(CPPFLAGS) -Demacs -I. $(c_switch_all)
+cppflags = $(CPPFLAGS) -Demacs -I. -I$(SRC) $(c_switch_all)
cflags = $(CFLAGS) $(cppflags)
#if defined (WIN32_NATIVE)
ldflags = $(LDFLAGS) -mwindows -e _mainCRTStartup $(ld_switch_all)
$(ld_dynamic_link_flags)
1.7.2.4 +3 -1 XEmacs/xemacs/src/console-impl.h
Index: console-impl.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/console-impl.h,v
retrieving revision 1.7.2.3
retrieving revision 1.7.2.4
diff -u -p -r1.7.2.3 -r1.7.2.4
--- console-impl.h 2005/09/20 16:06:00 1.7.2.3
+++ console-impl.h 2005/09/27 16:29:29 1.7.2.4
@@ -1,5 +1,5 @@
/* Define console object for XEmacs.
- Copyright (C) 1996, 2002, 2003 Ben Wing
+ Copyright (C) 1996, 2002, 2003, 2005 Ben Wing
This file is part of XEmacs.
@@ -252,6 +252,8 @@ struct console_methods
unsigned char *eimage,
int dest_mask,
Lisp_Object instantiator,
+ Lisp_Object pointer_fg,
+ Lisp_Object pointer_bg,
Lisp_Object domain);
Lisp_Object (*locate_pixmap_file_method) (Lisp_Object file_method);
int (*colorize_image_instance_method) (Lisp_Object image_instance,
1.81.2.5 +5 -4 XEmacs/xemacs/src/event-Xt.c
Index: event-Xt.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/event-Xt.c,v
retrieving revision 1.81.2.4
retrieving revision 1.81.2.5
diff -u -p -r1.81.2.4 -r1.81.2.5
--- event-Xt.c 2005/09/20 16:06:03 1.81.2.4
+++ event-Xt.c 2005/09/27 16:29:29 1.81.2.5
@@ -1314,7 +1314,8 @@ x_event_to_emacs_event (XEvent *x_event,
Ibyte *dataint;
len = strlen (data);
EXTERNAL_TO_C_STRING (data, dataint, Qfile_name);
- hurl = dnd_url_hexify_string (dataint, "file:");
+ hurl = dnd_url_hexify_string (dataint,
+ (const Ibyte *) "file:");
l_item = build_intstring (hurl);
l_dndlist = Fcons (l_item, l_dndlist);
data += len + 1;
@@ -3144,14 +3145,14 @@ Information is displayed on stderr. Cur
static XtInitProc orig_shell_init_proc;
-static void ShellVisualPatch(Widget wanted, Widget new,
+static void ShellVisualPatch(Widget wanted, Widget new_,
ArgList args, Cardinal *num_args)
{
Widget p;
- ShellWidget w = (ShellWidget) new;
+ ShellWidget w = (ShellWidget) new_;
/* first, call the original setup */
- (*orig_shell_init_proc)(wanted, new, args, num_args);
+ (*orig_shell_init_proc)(wanted, new_, args, num_args);
/* if the visual isn't explicitly set, grab it from the nearest shell ancestor
*/
if (w->shell.visual == CopyFromParent) {
1.23.2.2 +13 -22 XEmacs/xemacs/src/glyphs-eimage.c
Index: glyphs-eimage.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs-eimage.c,v
retrieving revision 1.23.2.1
retrieving revision 1.23.2.2
diff -u -p -r1.23.2.1 -r1.23.2.2
--- glyphs-eimage.c 2005/03/15 05:24:18 1.23.2.1
+++ glyphs-eimage.c 2005/09/27 16:29:30 1.23.2.2
@@ -2,7 +2,7 @@
Copyright (C) 1993, 1994, 1998 Free Software Foundation, Inc.
Copyright (C) 1995 Board of Trustees, University of Illinois.
Copyright (C) 1995 Tinker Systems
- Copyright (C) 1995, 1996, 2001, 2002, 2004 Ben Wing
+ Copyright (C) 1995, 1996, 2001, 2002, 2004, 2005 Ben Wing
Copyright (C) 1995 Sun Microsystems
This file is part of XEmacs.
@@ -24,22 +24,16 @@ Boston, MA 02111-1307, USA. */
/* Synched up with: Not in FSF. */
-/* Original author: Jamie Zawinski for 19.8
- font-truename stuff added by Jamie Zawinski for 19.10
- subwindow support added by Chuck Thompson
- additional XPM support added by Chuck Thompson
- initial X-Face support added by Stig
- rewritten/restructured by Ben Wing for 19.12/19.13
+/* Originally part of glyphs.c.
+
GIF/JPEG support added by Ben Wing for 19.14
PNG support added by Bill Perry for 19.14
Improved GIF/JPEG support added by Bill Perry for 19.14
Cleanup/simplification of error handling by Ben Wing for 19.14
- Pointer/icon overhaul, more restructuring by Ben Wing for 19.14
GIF support changed to external Gifreader lib by Jareth Hein for 21.0
Many changes for color work and optimizations by Jareth Hein for 21.0
Switch of GIF/JPEG/PNG to new EImage intermediate code by Jareth Hein for 21.0
TIFF code by Jareth Hein for 21.0
- Generalization for ms-windows by Andy Piper for 21.0
TODO:
Convert images.el to C and stick it in here?
*/
@@ -325,8 +319,7 @@ my_jpeg_output_message (j_common_ptr cin
source code and from gif_instantiate() */
static void
jpeg_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
- Lisp_Object UNUSED (pointer_fg),
- Lisp_Object UNUSED (pointer_bg),
+ Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
@@ -500,7 +493,7 @@ jpeg_instantiate (Lisp_Object image_inst
init_image_instance_from_eimage,
(ii, cinfo.output_width, cinfo.output_height, 1,
unwind.eimage, dest_mask,
- instantiator, domain));
+ instantiator, pointer_fg, pointer_bg, domain));
/* Step 7: Finish decompression */
@@ -614,8 +607,7 @@ gif_error_func (const Extbyte *err_str,
static void
gif_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
- Lisp_Object UNUSED (pointer_fg),
- Lisp_Object UNUSED (pointer_bg),
+ Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
@@ -729,8 +721,9 @@ gif_instantiate (Lisp_Object image_insta
/* now instantiate */
MAYBE_DEVMETH (DOMAIN_XDEVICE (ii->domain),
init_image_instance_from_eimage,
- (ii, width, height, unwind.giffile->ImageCount, unwind.eimage, dest_mask,
- instantiator, domain));
+ (ii, width, height, unwind.giffile->ImageCount,
+ unwind.eimage, dest_mask, instantiator, pointer_fg,
+ pointer_bg, domain));
}
/* We read the gif successfully. If we have more than one slice then
@@ -864,8 +857,7 @@ png_instantiate_unwind (Lisp_Object unwi
static void
png_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
- Lisp_Object UNUSED (pointer_fg),
- Lisp_Object UNUSED (pointer_bg),
+ Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
@@ -1046,7 +1038,7 @@ png_instantiate (Lisp_Object image_insta
MAYBE_DEVMETH (DOMAIN_XDEVICE (ii->domain),
init_image_instance_from_eimage,
(ii, width, height, 1, unwind.eimage, dest_mask,
- instantiator, domain));
+ instantiator, pointer_fg, pointer_bg, domain));
/* This will clean up everything else. */
unbind_to (speccount);
@@ -1242,8 +1234,7 @@ tiff_warning_func (const char *module, c
static void
tiff_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
- Lisp_Object UNUSED (pointer_fg),
- Lisp_Object UNUSED (pointer_bg),
+ Lisp_Object pointer_fg, Lisp_Object pointer_bg,
int dest_mask, Lisp_Object domain)
{
Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
@@ -1336,7 +1327,7 @@ tiff_instantiate (Lisp_Object image_inst
MAYBE_DEVMETH (DOMAIN_XDEVICE (ii->domain),
init_image_instance_from_eimage,
(ii, width, height, 1, unwind.eimage, dest_mask,
- instantiator, domain));
+ instantiator, pointer_fg, pointer_bg, domain));
unbind_to (speccount);
}
1.27.2.3 +72 -37 XEmacs/xemacs/src/glyphs-gtk.c
Index: glyphs-gtk.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs-gtk.c,v
retrieving revision 1.27.2.2
retrieving revision 1.27.2.3
diff -u -p -r1.27.2.2 -r1.27.2.3
--- glyphs-gtk.c 2005/03/15 05:24:19 1.27.2.2
+++ glyphs-gtk.c 2005/09/27 16:29:31 1.27.2.3
@@ -2,7 +2,7 @@
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1995 Board of Trustees, University of Illinois.
Copyright (C) 1995 Tinker Systems
- Copyright (C) 1995, 1996, 2001, 2002, 2004 Ben Wing
+ Copyright (C) 1995, 1996, 2001, 2002, 2004, 2005 Ben Wing
Copyright (C) 1995 Sun Microsystems
This file is part of XEmacs.
@@ -677,6 +677,51 @@ maybe_recolor_cursor (Lisp_Object UNUSED
/* color pixmap functions */
/************************************************************************/
+/* Create a pointer from a color pixmap. */
+
+static void
+image_instance_convert_to_pointer (Lisp_Image_Instance *ii,
+ Lisp_Object instantiator,
+ Lisp_Object pointer_fg,
+ Lisp_Object pointer_bg)
+{
+ Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
+ GdkPixmap *pixmap = IMAGE_INSTANCE_X_PIXMAP (ii);
+ GdkPixmap *mask = (GdkPixmap *) IMAGE_INSTANCE_PIXMAP_MASK (ii);
+ GdkColor fg, bg;
+ int xhot = 0, yhot = 0;
+ int w, h;
+
+ if (INTP (IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii)))
+ xhot = XINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii));
+ if (INTP (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii)))
+ yhot = XINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii));
+ w = IMAGE_INSTANCE_PIXMAP_WIDTH (ii);
+ h = IMAGE_INSTANCE_PIXMAP_HEIGHT (ii);
+
+ check_pointer_sizes (w, h, instantiator);
+
+ /* If the loaded pixmap has colors allocated (meaning it came from an
+ XPM file), then use those as the default colors for the cursor we
+ create. Otherwise, default to pointer_fg and pointer_bg.
+ */
+ if (DEVICE_GTK_DEPTH (XDEVICE (device)) > 1)
+ {
+ warn_when_safe (Qunimplemented, Qnotice,
+ "GTK does not support XPM cursors...\n");
+ IMAGE_INSTANCE_GTK_CURSOR (ii) = gdk_cursor_new (GDK_COFFEE_MUG);
+ }
+ else
+ {
+ generate_cursor_fg_bg (device, &pointer_fg, &pointer_bg,
+ &fg, &bg);
+ IMAGE_INSTANCE_PIXMAP_FG (ii) = pointer_fg;
+ IMAGE_INSTANCE_PIXMAP_BG (ii) = pointer_bg;
+ IMAGE_INSTANCE_GTK_CURSOR (ii) =
+ gdk_cursor_new_from_pixmap (pixmap, mask, &fg, &bg, xhot, yhot);
+ }
+}
+
/* Initialize an image instance from an XImage.
DEST_MASK specifies the mask of allowed image types.
@@ -705,21 +750,29 @@ init_image_instance_from_gdk_image (stru
unsigned long *pixels,
int npixels,
int slices,
- Lisp_Object instantiator)
+ Lisp_Object instantiator,
+ Lisp_Object pointer_fg,
+ Lisp_Object pointer_bg)
{
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
GdkGC *gc;
GdkWindow *d;
GdkPixmap *pixmap;
+ enum image_instance_type type;
if (!DEVICE_GTK_P (XDEVICE (device)))
gui_error ("Not a Gtk device", device);
d = GET_GTK_WIDGET_WINDOW (DEVICE_GTK_APP_SHELL (XDEVICE (device)));
- if (!(dest_mask & IMAGE_COLOR_PIXMAP_MASK))
+ if (dest_mask & IMAGE_COLOR_PIXMAP_MASK)
+ type = IMAGE_COLOR_PIXMAP;
+ else if (dest_mask & IMAGE_POINTER_MASK)
+ type = IMAGE_POINTER;
+ else
incompatible_image_types (instantiator, dest_mask,
- IMAGE_COLOR_PIXMAP_MASK);
+ IMAGE_COLOR_PIXMAP_MASK
+ | IMAGE_POINTER_MASK);
pixmap = gdk_pixmap_new (d, gdk_image->width, gdk_image->height,
gdk_image->depth);
if (!pixmap)
@@ -750,6 +803,10 @@ init_image_instance_from_gdk_image (stru
IMAGE_INSTANCE_GTK_COLORMAP (ii) = cmap;
IMAGE_INSTANCE_GTK_PIXELS (ii) = pixels;
IMAGE_INSTANCE_GTK_NPIXELS (ii) = npixels;
+
+ if (type == IMAGE_POINTER)
+ image_instance_convert_to_pointer (ii, instantiator, pointer_fg,
+ pointer_bg);
}
#if 0
@@ -831,6 +888,8 @@ gtk_init_image_instance_from_eimage (str
unsigned char *eimage,
int dest_mask,
Lisp_Object instantiator,
+ Lisp_Object pointer_fg,
+ Lisp_Object pointer_bg,
Lisp_Object UNUSED (domain))
{
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
@@ -856,7 +915,8 @@ gtk_init_image_instance_from_eimage (str
/* Now create the pixmap and set up the image instance */
init_image_instance_from_gdk_image (ii, gdk_image, dest_mask,
cmap, pixtbl, npixels, slices,
- instantiator);
+ instantiator, pointer_fg,
+ pointer_bg);
else
image_instance_add_gdk_image (ii, gdk_image, slice, instantiator);
@@ -1269,38 +1329,13 @@ gtk_xpm_instantiate (Lisp_Object image_i
break;
case IMAGE_POINTER:
- {
- GdkColor fg, bg;
- unsigned int xhot, yhot;
-
- /* #### Gtk does not give us access to the hotspots of a pixmap */
- xhot = yhot = 1;
- IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii) = make_int (xhot);
- IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii) = make_int (yhot);
-
- check_pointer_sizes (w, h, instantiator);
-
- /* If the loaded pixmap has colors allocated (meaning it came from an
- XPM file), then use those as the default colors for the cursor we
- create. Otherwise, default to pointer_fg and pointer_bg.
- */
- if (depth > 1)
- {
- warn_when_safe (Qunimplemented, Qnotice,
- "GTK does not support XPM cursors...\n");
- IMAGE_INSTANCE_GTK_CURSOR (ii) = gdk_cursor_new (GDK_COFFEE_MUG);
- }
- else
- {
- generate_cursor_fg_bg (device, &pointer_fg, &pointer_bg,
- &fg, &bg);
- IMAGE_INSTANCE_PIXMAP_FG (ii) = pointer_fg;
- IMAGE_INSTANCE_PIXMAP_BG (ii) = pointer_bg;
- IMAGE_INSTANCE_GTK_CURSOR (ii) =
- gdk_cursor_new_from_pixmap (pixmap, mask, &fg, &bg, xhot, yhot);
- }
- }
-
+ if (xpmattrs.valuemask & XpmHotspot)
+ IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii) = make_int (xpmattrs.x_hotspot);
+ if (xpmattrs.valuemask & XpmHotspot)
+ IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii) = make_int (xpmattrs.y_hotspot);
+
+ image_instance_convert_to_pointer (ii, instantiator, pointer_fg,
+ pointer_bg);
break;
default:
1.53.2.3 +3 -1 XEmacs/xemacs/src/glyphs-msw.c
Index: glyphs-msw.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs-msw.c,v
retrieving revision 1.53.2.2
retrieving revision 1.53.2.3
diff -u -p -r1.53.2.2 -r1.53.2.3
--- glyphs-msw.c 2005/03/15 05:24:20 1.53.2.2
+++ glyphs-msw.c 2005/09/27 16:29:31 1.53.2.3
@@ -1,6 +1,6 @@
/* mswindows-specific glyph objects.
Copyright (C) 1998, 1999, 2000 Andy Piper.
- Copyright (C) 2001, 2002, 2003, 2004 Ben Wing.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005 Ben Wing.
This file is part of XEmacs.
@@ -436,6 +436,8 @@ mswindows_init_image_instance_from_eimag
Binbyte *eimage,
int dest_mask,
Lisp_Object instantiator,
+ Lisp_Object UNUSED (pointer_fg),
+ Lisp_Object UNUSED (pointer_bg),
Lisp_Object domain)
{
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
1.80.2.7 +198 -157 XEmacs/xemacs/src/glyphs-x.c
Index: glyphs-x.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs-x.c,v
retrieving revision 1.80.2.6
retrieving revision 1.80.2.7
diff -u -p -r1.80.2.6 -r1.80.2.7
--- glyphs-x.c 2005/03/15 05:24:21 1.80.2.6
+++ glyphs-x.c 2005/09/27 16:29:32 1.80.2.7
@@ -2,7 +2,7 @@
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1995 Board of Trustees, University of Illinois.
Copyright (C) 1995 Tinker Systems
- Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004 Ben Wing
+ Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004, 2005 Ben Wing
Copyright (C) 1995 Sun Microsystems
Copyright (C) 1999, 2000, 2002 Andy Piper
@@ -724,6 +724,159 @@ maybe_recolor_cursor (Lisp_Object image_
/* color pixmap functions */
/************************************************************************/
+/* Create a pointer from a color pixmap. */
+
+static void
+image_instance_convert_to_pointer (Lisp_Image_Instance *ii,
+ Lisp_Object instantiator,
+ Lisp_Object pointer_fg,
+ Lisp_Object pointer_bg)
+{
+ Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
+ Display *dpy = DEVICE_X_DISPLAY (XDEVICE (device));
+ Screen *xs = DefaultScreenOfDisplay (dpy);
+ int npixels = IMAGE_INSTANCE_X_NPIXELS (ii);
+ unsigned long *pixels = IMAGE_INSTANCE_X_PIXELS (ii);
+ Pixmap pixmap = IMAGE_INSTANCE_X_PIXMAP (ii);
+ Pixmap mask = (Pixmap) IMAGE_INSTANCE_PIXMAP_MASK (ii);
+ Colormap cmap;
+ XColor fg, bg;
+ int i;
+ int xhot = 0, yhot = 0;
+ int w, h;
+
+ if (INTP (IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii)))
+ xhot = XINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii));
+ if (INTP (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii)))
+ yhot = XINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii));
+ w = IMAGE_INSTANCE_PIXMAP_WIDTH (ii);
+ h = IMAGE_INSTANCE_PIXMAP_HEIGHT (ii);
+
+#if 1
+ /* Although I haven't found it documented yet, it appears that pointers are
+ always colored via the default window colormap... Sigh. */
+ cmap = DefaultColormap (dpy, DefaultScreen (dpy));
+ IMAGE_INSTANCE_X_COLORMAP (ii) = cmap;
+#else
+ cmap = IMAGE_INSTANCE_X_COLORMAP (ii);
+#endif
+
+ check_pointer_sizes (xs, w, h, instantiator);
+
+ /* If the loaded pixmap has colors allocated (meaning it came from an
+ XPM file), then use those as the default colors for the cursor we
+ create. Otherwise, default to pointer_fg and pointer_bg.
+ */
+ if (npixels >= 2)
+ {
+ /* With an XBM file, it's obvious which bit is foreground
+ and which is background, or rather, it's implicit: in
+ an XBM file, a 1 bit is foreground, and a 0 bit is
+ background.
+
+ XCreatePixmapCursor() assumes this property of the
+ pixmap it is called with as well; the `foreground'
+ color argument is used for the 1 bits.
+
+ With an XPM file, it's tricker, since the elements of
+ the pixmap don't represent FG and BG, but are actual
+ pixel values. So we need to figure out which of those
+ pixels is the foreground color and which is the
+ background. We do it by comparing RGB and assuming
+ that the darker color is the foreground. This works
+ with the result of xbmtopbm|ppmtoxpm, at least.
+
+ It might be nice if there was some way to tag the
+ colors in the XPM file with whether they are the
+ foreground - perhaps with logical color names somehow?
+
+ Once we have decided which color is the foreground, we
+ need to ensure that that color corresponds to a `1' bit
+ in the Pixmap. The XPM library wrote into the (1-bit)
+ pixmap with XPutPixel, which will ignore all but the
+ least significant bit.
+
+ This means that a 1 bit in the image corresponds to
+ `fg' only if `fg.pixel' is odd.
+
+ (This also means that the image will be all the same
+ color if both `fg' and `bg' are odd or even, but we can
+ safely assume that that won't happen if the XPM file is
+ sensible I think.)
+
+ The desired result is that the image use `1' to
+ represent the foreground color, and `0' to represent
+ the background color. So, we may need to invert the
+ image to accomplish this; we invert if fg is
+ odd. (Remember that WhitePixel and BlackPixel are not
+ necessarily 1 and 0 respectively, though I think it
+ might be safe to assume that one of them is always 1
+ and the other is always 0. We also pretty much need to
+ assume that one is even and the other is odd.)
+ */
+
+ fg.pixel = pixels[0]; /* pick a pixel at random. */
+ bg.pixel = fg.pixel;
+ for (i = 1; i < npixels; i++) /* Look for an "other" pixel value.*/
+ {
+ bg.pixel = pixels[i];
+ if (fg.pixel != bg.pixel)
+ break;
+ }
+
+ /* If (fg.pixel == bg.pixel) then probably something has
+ gone wrong, but I don't think signalling an error would
+ be appropriate. */
+
+ XQueryColor (dpy, cmap, &fg);
+ XQueryColor (dpy, cmap, &bg);
+
+ /* If the foreground is lighter than the background, swap them.
+ (This occurs semi-randomly, depending on the ordering of the
+ color list in the XPM file.)
+ */
+ {
+ unsigned short fg_total = ((fg.red / 3) + (fg.green / 3)
+ + (fg.blue / 3));
+ unsigned short bg_total = ((bg.red / 3) + (bg.green / 3)
+ + (bg.blue / 3));
+ if (fg_total > bg_total)
+ {
+ XColor swap;
+ swap = fg;
+ fg = bg;
+ bg = swap;
+ }
+ }
+
+ /* If the fg pixel corresponds to a `0' in the bitmap, invert it.
+ (This occurs (only?) on servers with Black=0, White=1.)
+ */
+ if ((fg.pixel & 1) == 0)
+ {
+ XGCValues gcv;
+ GC gc;
+ gcv.function = GXxor;
+ gcv.foreground = 1;
+ gc = XCreateGC (dpy, pixmap, (GCFunction | GCForeground),
+ &gcv);
+ XFillRectangle (dpy, pixmap, gc, 0, 0, w, h);
+ XFreeGC (dpy, gc);
+ }
+ }
+ else
+ {
+ generate_cursor_fg_bg (device, &pointer_fg, &pointer_bg,
+ &fg, &bg);
+ IMAGE_INSTANCE_PIXMAP_FG (ii) = pointer_fg;
+ IMAGE_INSTANCE_PIXMAP_BG (ii) = pointer_bg;
+ }
+
+ IMAGE_INSTANCE_X_CURSOR (ii) =
+ XCreatePixmapCursor
+ (dpy, pixmap, mask, &fg, &bg, xhot, yhot);
+}
+
/* Initialize an image instance from an XImage.
DEST_MASK specifies the mask of allowed image types.
@@ -740,9 +893,7 @@ maybe_recolor_cursor (Lisp_Object image_
If this fails, signal an error. INSTANTIATOR is only used
in the error message.
-
- #### This should be able to handle conversion into `pointer'.
- Use the same code as for `xpm'. */
+*/
static void
init_image_instance_from_x_image (Lisp_Image_Instance *ii,
@@ -752,23 +903,31 @@ init_image_instance_from_x_image (Lisp_I
unsigned long *pixels,
int npixels,
int slices,
- Lisp_Object instantiator)
+ Lisp_Object instantiator,
+ Lisp_Object pointer_fg,
+ Lisp_Object pointer_bg)
{
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
Display *dpy;
GC gc;
Drawable d;
Pixmap pixmap;
+ enum image_instance_type type;
if (!DEVICE_X_P (XDEVICE (device)))
gui_error ("Not an X device", device);
dpy = DEVICE_X_DISPLAY (XDEVICE (device));
- d = XtWindow(DEVICE_XT_APP_SHELL (XDEVICE (device)));
+ d = XtWindow (DEVICE_XT_APP_SHELL (XDEVICE (device)));
- if (!(dest_mask & IMAGE_COLOR_PIXMAP_MASK))
+ if (dest_mask & IMAGE_COLOR_PIXMAP_MASK)
+ type = IMAGE_COLOR_PIXMAP;
+ else if (dest_mask & IMAGE_POINTER_MASK)
+ type = IMAGE_POINTER;
+ else
incompatible_image_types (instantiator, dest_mask,
- IMAGE_COLOR_PIXMAP_MASK);
+ IMAGE_COLOR_PIXMAP_MASK
+ | IMAGE_POINTER_MASK);
pixmap = XCreatePixmap (dpy, d, ximage->width,
ximage->height, ximage->depth);
@@ -802,6 +961,10 @@ init_image_instance_from_x_image (Lisp_I
IMAGE_INSTANCE_X_COLORMAP (ii) = cmap;
IMAGE_INSTANCE_X_PIXELS (ii) = pixels;
IMAGE_INSTANCE_X_NPIXELS (ii) = npixels;
+
+ if (type == IMAGE_POINTER)
+ image_instance_convert_to_pointer (ii, instantiator, pointer_fg,
+ pointer_bg);
}
static void
@@ -846,6 +1009,8 @@ x_init_image_instance_from_eimage (Lisp_
Binbyte *eimage,
int dest_mask,
Lisp_Object instantiator,
+ Lisp_Object pointer_fg,
+ Lisp_Object pointer_bg,
Lisp_Object UNUSED (domain))
{
Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
@@ -864,14 +1029,16 @@ x_init_image_instance_from_eimage (Lisp_
{
if (pixtbl)
xfree (pixtbl, unsigned long *);
- signal_image_error("EImage to XImage conversion failed", instantiator);
+ signal_image_error ("EImage to XImage conversion failed",
+ instantiator);
}
/* Now create the pixmap and set up the image instance */
if (slice == 0)
init_image_instance_from_x_image (ii, ximage, dest_mask,
cmap, pixtbl, npixels, slices,
- instantiator);
+ instantiator, pointer_fg,
+ pointer_bg);
else
image_instance_add_x_image (ii, ximage, slice, instantiator);
@@ -1236,20 +1403,20 @@ x_xpm_instantiate (Lisp_Object image_ins
always colored via the default window colormap... Sigh. */
if (type == IMAGE_POINTER)
{
- cmap = DefaultColormap(dpy, DefaultScreen(dpy));
+ cmap = DefaultColormap (dpy, DefaultScreen (dpy));
depth = DefaultDepthOfScreen (xs);
visual = DefaultVisualOfScreen (xs);
}
else
{
- cmap = DEVICE_X_COLORMAP (XDEVICE(device));
- depth = DEVICE_X_DEPTH (XDEVICE(device));
- visual = DEVICE_X_VISUAL (XDEVICE(device));
+ cmap = DEVICE_X_COLORMAP (XDEVICE (device));
+ depth = DEVICE_X_DEPTH (XDEVICE (device));
+ visual = DEVICE_X_VISUAL (XDEVICE (device));
}
#else
- cmap = DEVICE_X_COLORMAP (XDEVICE(device));
- depth = DEVICE_X_DEPTH (XDEVICE(device));
- visual = DEVICE_X_VISUAL (XDEVICE(device));
+ cmap = DEVICE_X_COLORMAP (XDEVICE (device));
+ depth = DEVICE_X_DEPTH (XDEVICE (device));
+ visual = DEVICE_X_VISUAL (XDEVICE (device));
#endif
x_initialize_pixmap_image_instance (ii, 1, type);
@@ -1382,145 +1549,17 @@ x_xpm_instantiate (Lisp_Object image_ins
break;
case IMAGE_COLOR_PIXMAP:
- {
- IMAGE_INSTANCE_PIXMAP_DEPTH (ii) = depth;
- }
+ IMAGE_INSTANCE_PIXMAP_DEPTH (ii) = depth;
break;
case IMAGE_POINTER:
- {
- int npixels = xpmattrs.npixels;
- Pixel *pixels = xpmattrs.pixels;
- XColor fg, bg;
- int i;
- int xhot = 0, yhot = 0;
-
- if (xpmattrs.valuemask & XpmHotspot)
- {
- xhot = xpmattrs.x_hotspot;
- IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii) = make_int (xpmattrs.x_hotspot);
- }
- if (xpmattrs.valuemask & XpmHotspot)
- {
- yhot = xpmattrs.y_hotspot;
- IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii) = make_int (xpmattrs.y_hotspot);
- }
- check_pointer_sizes (xs, w, h, instantiator);
-
- /* If the loaded pixmap has colors allocated (meaning it came from an
- XPM file), then use those as the default colors for the cursor we
- create. Otherwise, default to pointer_fg and pointer_bg.
- */
- if (npixels >= 2)
- {
- /* With an XBM file, it's obvious which bit is foreground
- and which is background, or rather, it's implicit: in
- an XBM file, a 1 bit is foreground, and a 0 bit is
- background.
-
- XCreatePixmapCursor() assumes this property of the
- pixmap it is called with as well; the `foreground'
- color argument is used for the 1 bits.
-
- With an XPM file, it's tricker, since the elements of
- the pixmap don't represent FG and BG, but are actual
- pixel values. So we need to figure out which of those
- pixels is the foreground color and which is the
- background. We do it by comparing RGB and assuming
- that the darker color is the foreground. This works
- with the result of xbmtopbm|ppmtoxpm, at least.
-
- It might be nice if there was some way to tag the
- colors in the XPM file with whether they are the
- foreground - perhaps with logical color names somehow?
-
- Once we have decided which color is the foreground, we
- need to ensure that that color corresponds to a `1' bit
- in the Pixmap. The XPM library wrote into the (1-bit)
- pixmap with XPutPixel, which will ignore all but the
- least significant bit.
-
- This means that a 1 bit in the image corresponds to
- `fg' only if `fg.pixel' is odd.
-
- (This also means that the image will be all the same
- color if both `fg' and `bg' are odd or even, but we can
- safely assume that that won't happen if the XPM file is
- sensible I think.)
-
- The desired result is that the image use `1' to
- represent the foreground color, and `0' to represent
- the background color. So, we may need to invert the
- image to accomplish this; we invert if fg is
- odd. (Remember that WhitePixel and BlackPixel are not
- necessarily 1 and 0 respectively, though I think it
- might be safe to assume that one of them is always 1
- and the other is always 0. We also pretty much need to
- assume that one is even and the other is odd.)
- */
-
- fg.pixel = pixels[0]; /* pick a pixel at random. */
- bg.pixel = fg.pixel;
- for (i = 1; i < npixels; i++) /* Look for an "other" pixel value.*/
- {
- bg.pixel = pixels[i];
- if (fg.pixel != bg.pixel)
- break;
- }
-
- /* If (fg.pixel == bg.pixel) then probably something has
- gone wrong, but I don't think signalling an error would
- be appropriate. */
-
- XQueryColor (dpy, cmap, &fg);
- XQueryColor (dpy, cmap, &bg);
-
- /* If the foreground is lighter than the background, swap them.
- (This occurs semi-randomly, depending on the ordering of the
- color list in the XPM file.)
- */
- {
- unsigned short fg_total = ((fg.red / 3) + (fg.green / 3)
- + (fg.blue / 3));
- unsigned short bg_total = ((bg.red / 3) + (bg.green / 3)
- + (bg.blue / 3));
- if (fg_total > bg_total)
- {
- XColor swap;
- swap = fg;
- fg = bg;
- bg = swap;
- }
- }
-
- /* If the fg pixel corresponds to a `0' in the bitmap, invert it.
- (This occurs (only?) on servers with Black=0, White=1.)
- */
- if ((fg.pixel & 1) == 0)
- {
- XGCValues gcv;
- GC gc;
- gcv.function = GXxor;
- gcv.foreground = 1;
- gc = XCreateGC (dpy, pixmap, (GCFunction | GCForeground),
- &gcv);
- XFillRectangle (dpy, pixmap, gc, 0, 0, w, h);
- XFreeGC (dpy, gc);
- }
- }
- else
- {
- generate_cursor_fg_bg (device, &pointer_fg, &pointer_bg,
- &fg, &bg);
- IMAGE_INSTANCE_PIXMAP_FG (ii) = pointer_fg;
- IMAGE_INSTANCE_PIXMAP_BG (ii) = pointer_bg;
- }
-
- IMAGE_INSTANCE_X_CURSOR (ii) =
- XCreatePixmapCursor
- (dpy, pixmap, mask, &fg, &bg, xhot, yhot);
- }
-
+ if (xpmattrs.valuemask & XpmHotspot)
+ IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii) = make_int (xpmattrs.x_hotspot);
+ if (xpmattrs.valuemask & XpmHotspot)
+ IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii) = make_int (xpmattrs.y_hotspot);
+
+ image_instance_convert_to_pointer (ii, instantiator, pointer_fg,
+ pointer_bg);
break;
default:
@@ -1986,7 +2025,7 @@ x_colorize_image_instance (Lisp_Object i
Display *dpy = DEVICE_X_DISPLAY (XDEVICE (IMAGE_INSTANCE_DEVICE (p)));
Drawable draw = XtWindow(DEVICE_XT_APP_SHELL (XDEVICE (IMAGE_INSTANCE_DEVICE
(p))));
Dimension d = DEVICE_X_DEPTH (XDEVICE (IMAGE_INSTANCE_DEVICE (p)));
- Pixmap new = XCreatePixmap (dpy, draw,
+ Pixmap new_ = XCreatePixmap (dpy, draw,
IMAGE_INSTANCE_PIXMAP_WIDTH (p),
IMAGE_INSTANCE_PIXMAP_HEIGHT (p), d);
XColor color;
@@ -1996,13 +2035,13 @@ x_colorize_image_instance (Lisp_Object i
gcv.foreground = color.pixel;
color = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (background));
gcv.background = color.pixel;
- gc = XCreateGC (dpy, new, GCBackground|GCForeground, &gcv);
- XCopyPlane (dpy, IMAGE_INSTANCE_X_PIXMAP (p), new, gc, 0, 0,
+ gc = XCreateGC (dpy, new_, GCBackground|GCForeground, &gcv);
+ XCopyPlane (dpy, IMAGE_INSTANCE_X_PIXMAP (p), new_, gc, 0, 0,
IMAGE_INSTANCE_PIXMAP_WIDTH (p),
IMAGE_INSTANCE_PIXMAP_HEIGHT (p),
0, 0, 1);
XFreeGC (dpy, gc);
- IMAGE_INSTANCE_X_PIXMAP (p) = new;
+ IMAGE_INSTANCE_X_PIXMAP (p) = new_;
IMAGE_INSTANCE_PIXMAP_DEPTH (p) = d;
IMAGE_INSTANCE_PIXMAP_FG (p) = foreground;
IMAGE_INSTANCE_PIXMAP_BG (p) = background;
@@ -2351,12 +2390,14 @@ update_widget_face (widget_value* wv, Li
lw_add_widget_value_arg (wv, XtNfont, (XtArgVal) fs);
}
+#ifdef USE_XFT
/* #### sanity check, should wrap in appropriate ERROR_CHECK macro */
if (!rf && !fs)
warn_when_safe_lispobj
(intern ("xft"), Qdebug,
Fcons (build_string ("missing font in update_widget_face"),
Fface_name (face)));
+#endif
}
wv->change = VISIBLE_CHANGE;
/* #### Megahack - but its just getting too complicated to do this
1.48.2.3 +51 -32 XEmacs/xemacs/src/glyphs.c
Index: glyphs.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs.c,v
retrieving revision 1.48.2.2
retrieving revision 1.48.2.3
diff -u -p -r1.48.2.2 -r1.48.2.3
--- glyphs.c 2005/07/13 04:46:46 1.48.2.2
+++ glyphs.c 2005/09/27 16:29:33 1.48.2.3
@@ -1,7 +1,7 @@
/* Generic glyph/image implementation + display tables
Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
Copyright (C) 1995 Tinker Systems
- Copyright (C) 1995, 1996, 2000, 2001, 2002, 2004 Ben Wing
+ Copyright (C) 1995, 1996, 2000, 2001, 2002, 2004, 2005 Ben Wing
Copyright (C) 1995 Sun Microsystems
Copyright (C) 1998, 1999, 2000 Andy Piper
@@ -24,9 +24,25 @@ Boston, MA 02111-1307, USA. */
/* Synched up with: Not in FSF. */
-/* Written by Ben Wing and Chuck Thompson. Heavily modified /
- rewritten by Andy Piper. */
+/* This file mostly written by Ben Wing, with some code by Chuck Thompson.
+ Heavily modified / rewritten by Andy Piper.
+ Earliest glyph support, Jamie Zawinski for 19.8?
+ subwindow support added by Chuck Thompson
+ additional XPM support added by Chuck Thompson
+ initial X-Face support added by Stig
+ Majorly rewritten/restructured by Ben Wing, including creation of
+ glyph and image-instance objects, for 19.12/19.13
+ GIF/JPEG/etc. support originally in this file -- see glyph-eimage.c
+ Pointer/icon overhaul, more restructuring by Ben Wing for 19.14
+ Many changes for color work and optimizations by Jareth Hein for 21.0
+ Switch of GIF/JPEG/PNG to new EImage intermediate code by Jareth Hein for 21.0
+ TIFF code by Jareth Hein for 21.0
+ Generalization for ms-windows by Andy Piper for 21.0
+ TODO:
+ Convert images.el to C and stick it in here?
+ */
+
#include <config.h>
#include "lisp.h"
@@ -232,12 +248,12 @@ Given an IMAGE-INSTANTIATOR-FORMAT, retu
If LOCALE is non-nil then the format is checked in that locale.
If LOCALE is nil the current console is used.
-Valid formats are some subset of 'nothing, 'string, 'formatted-string,
-'xpm, 'xbm, 'xface, 'gif, 'jpeg, 'png, 'tiff,
'cursor-font, 'font,
-'autodetect, 'subwindow, 'inherit, 'mswindows-resource, 'bmp,
-'native-layout, 'layout, 'label, 'tab-control, 'tree-view,
-'progress-gauge, 'scrollbar, 'combo-box, 'edit-field, 'button,
-'widget, 'pointer, and 'text, depending on how XEmacs was compiled.
+Valid formats are some subset of `nothing', `string', `formatted-string',
+`xpm', `xbm', `xface', `gif', `jpeg', `png', `tiff',
`cursor-font', `font',
+`autodetect', `subwindow', `inherit', `mswindows-resource', `bmp',
+`native-layout', `layout', `label', `tab-control', `tree-view',
+`progress-gauge', `scrollbar', `combo-box', `edit-field',
`button',
+`widget', `pointer', and `text', depending on how XEmacs was compiled.
*/
(image_instantiator_format, locale))
{
@@ -437,12 +453,12 @@ find_keyword_in_vector (Lisp_Object vect
}
static Lisp_Object
-find_instantiator_differences (Lisp_Object new, Lisp_Object old)
+find_instantiator_differences (Lisp_Object new_, Lisp_Object old)
{
Lisp_Object alist = Qnil;
- Lisp_Object *elt = XVECTOR_DATA (new);
+ Lisp_Object *elt = XVECTOR_DATA (new_);
Lisp_Object *old_elt = XVECTOR_DATA (old);
- int len = XVECTOR_LENGTH (new);
+ int len = XVECTOR_LENGTH (new_);
struct gcpro gcpro1;
/* If the vector length has changed then consider everything
@@ -450,7 +466,7 @@ find_instantiator_differences (Lisp_Obje
disappeared or been added, but this code is only used as an
optimization anyway so lets not bother. */
if (len != XVECTOR_LENGTH (old))
- return new;
+ return new_;
GCPRO1 (alist);
@@ -1450,8 +1466,9 @@ valid_image_instance_type_p (Lisp_Object
DEFUN ("valid-image-instance-type-p", Fvalid_image_instance_type_p, 1, 1, 0,
/*
Given an IMAGE-INSTANCE-TYPE, return non-nil if it is valid.
-Valid types are some subset of 'nothing, 'text, 'mono-pixmap,
'color-pixmap,
-'pointer, 'subwindow, and 'widget, depending on how XEmacs was compiled.
+Valid types are some subset of `nothing', `text', `mono-pixmap',
+`color-pixmap', `pointer', `subwindow', and `widget', depending on how
+XEmacs was compiled.
*/
(image_instance_type))
{
@@ -1550,27 +1567,27 @@ DATA is an image instantiator, which des
DEST-TYPES should be a list of allowed image instance types that can
be generated. The recognized image instance types are
-'nothing
+`nothing'
Nothing is displayed.
-'text
+`text'
Displayed as text. The foreground and background colors and the
font of the text are specified independent of the pixmap. Typically
these attributes will come from the face of the surrounding text,
unless a face is specified for the glyph in which the image appears.
-'mono-pixmap
+`mono-pixmap'
Displayed as a mono pixmap (a pixmap with only two colors where the
foreground and background can be specified independent of the pixmap;
typically the pixmap assumes the foreground and background colors of
the text around it, unless a face is specified for the glyph in which
the image appears).
-'color-pixmap
+`color-pixmap'
Displayed as a color pixmap.
-'pointer
+`pointer'
Used as the mouse pointer for a window.
-'subwindow
+`subwindow'
A child window that is treated as an image. This allows (e.g.)
another program to be responsible for drawing into the window.
-'widget
+`widget'
A child window that contains a window-system widget, e.g. a push
button, text field, or slider.
@@ -1648,8 +1665,8 @@ Return non-nil if OBJECT is an image ins
DEFUN ("image-instance-type", Fimage_instance_type, 1, 1, 0, /*
Return the type of the given image instance.
-The return value will be one of 'nothing, 'text, 'mono-pixmap,
-'color-pixmap, 'pointer, 'subwindow, or 'widget.
+The return value will be one of `nothing', `text', `mono-pixmap',
+`color-pixmap', `pointer', `subwindow', or `widget'.
*/
(image_instance))
{
@@ -1964,7 +1981,7 @@ instance is a mono pixmap; otherwise, th
*/
(image_instance, foreground, background))
{
- Lisp_Object new;
+ Lisp_Object new_;
Lisp_Object device;
CHECK_IMAGE_INSTANCE (image_instance);
@@ -1978,20 +1995,20 @@ instance is a mono pixmap; otherwise, th
/* #### There should be a copy_image_instance(), which calls a
device-specific method to copy the window-system subobject. */
- new = allocate_image_instance (XIMAGE_INSTANCE_DOMAIN (image_instance),
+ new_ = allocate_image_instance (XIMAGE_INSTANCE_DOMAIN (image_instance),
Qnil, Qnil);
#ifdef MC_ALLOC
- copy_lrecord (XIMAGE_INSTANCE (new), XIMAGE_INSTANCE (image_instance));
+ copy_lrecord (XIMAGE_INSTANCE (new_), XIMAGE_INSTANCE (image_instance));
#else /* not MC_ALLOC */
- copy_lcrecord (XIMAGE_INSTANCE (new), XIMAGE_INSTANCE (image_instance));
+ copy_lcrecord (XIMAGE_INSTANCE (new_), XIMAGE_INSTANCE (image_instance));
#endif /* not MC_ALLOC */
/* note that if this method returns non-zero, this method MUST
copy any window-system resources, so that when one image instance is
freed, the other one is not hosed. */
- if (!DEVMETH (XDEVICE (device), colorize_image_instance, (new, foreground,
+ if (!DEVMETH (XDEVICE (device), colorize_image_instance, (new_, foreground,
background)))
return image_instance;
- return new;
+ return new_;
}
@@ -3942,7 +3959,7 @@ information.
DEFUN ("glyph-type", Fglyph_type, 1, 1, 0, /*
Return the type of the given glyph.
-The return value will be one of 'buffer, 'pointer, or 'icon.
+The return value will be one of `buffer', `pointer', or `icon'.
*/
(glyph))
{
@@ -3962,7 +3979,7 @@ glyph_image_instance (Lisp_Object glyph,
{
Lisp_Object specifier = GLYPH_IMAGE (XGLYPH (glyph));
- /* This can never return Qunbound. All glyphs have 'nothing as
+ /* This can never return Qunbound. All glyphs have `nothing' as
a fallback. */
Lisp_Object image_instance = specifier_instance (specifier, Qunbound,
domain, errb, no_quit, 0,
@@ -5401,6 +5418,8 @@ image_instantiator_format_create (void)
IIFORMAT_VALID_KEYWORD (xface, Q_data, check_valid_string);
IIFORMAT_VALID_KEYWORD (xface, Q_file, check_valid_string);
+ IIFORMAT_VALID_KEYWORD (xface, Q_mask_data, check_valid_xbm_inline);
+ IIFORMAT_VALID_KEYWORD (xface, Q_mask_file, check_valid_string);
IIFORMAT_VALID_KEYWORD (xface, Q_hotspot_x, check_valid_int);
IIFORMAT_VALID_KEYWORD (xface, Q_hotspot_y, check_valid_int);
IIFORMAT_VALID_KEYWORD (xface, Q_foreground, check_valid_string);
1.9.6.1 +7 -2 XEmacs/xemacs/src/intl.c
Index: intl.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/intl.c,v
retrieving revision 1.9
retrieving revision 1.9.6.1
diff -u -p -r1.9 -r1.9.6.1
--- intl.c 2002/05/28 08:44:55 1.9
+++ intl.c 2005/09/27 16:29:34 1.9.6.1
@@ -70,26 +70,31 @@ Otherwise, returns the locale, or possib
(locale))
{
Extbyte *loc;
+ Lisp_Object str;
CHECK_STRING (locale);
/* RedHat 6.2 contains a locale called "Francais" with the C-cedilla
encoded in ISO2022! */
LISP_STRING_TO_EXTERNAL (locale, loc, Qctext);
loc = setlocale (LC_ALL, loc);
- setlocale (LC_NUMERIC, "C");
if (!loc)
return Qnil;
+ loc = xstrdup (loc);
+ setlocale (LC_NUMERIC, "C");
#ifdef HAVE_X_WINDOWS
if (!init_x_locale (locale))
{
/* Locale not supported under X. Put it back. */
setlocale (LC_ALL, loc);
setlocale (LC_NUMERIC, "C");
+ free (loc);
return Qnil;
}
#endif
- return build_ext_string (loc, Qctext);
+ str = build_ext_string (loc, Qctext);
+ xfree (loc, Extbyte *);
+ return str;
}
#if 0
1.116.2.6 +8 -4 XEmacs/xemacs/src/lisp.h
Index: lisp.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lisp.h,v
retrieving revision 1.116.2.5
retrieving revision 1.116.2.6
diff -u -p -r1.116.2.5 -r1.116.2.6
--- lisp.h 2005/09/20 16:06:09 1.116.2.5
+++ lisp.h 2005/09/27 16:29:35 1.116.2.6
@@ -506,7 +506,7 @@ typedef EMACS_INT Memxpos;
them to be classes and using operator overloading. Unfortunately this
is a huge pain in the ass because C++ doesn't strongly distinguish
"bool" and "size_t" from int. The problem is especially bad
with "bool"
- -- if you want to be able to say 'if (len--)' where len is e.g. a
+ -- if you want to be able to say `if (len--)' where len is e.g. a
Bytecount, you need to declare a conversion operator to bool(); and
since bool is just an alias for int, you suddenly get tons and tons of
ambiguities, which need to be resolved by lots of laborious declarations
@@ -1049,11 +1049,15 @@ MODULE_API void assert_failed (const Asc
((x) ? (void) 0 : assert_failed (file, line, #x))
#elif defined (DEBUG_XEMACS)
# define assert(x) ((x) ? (void) 0 : (void) ABORT ())
-# define assert_with_message(x, msg) ((x) ? (void) 0 : (void) ABORT ())
+# define assert_with_message(x, msg) assert (x)
# define assert_at_line(x, file, line) assert (x)
#else
-# define assert(x) ((void) 0)
-# define assert_with_message(x, msg)
+/* This used to be ((void) (0)) but that triggers lots of unused variable
+ warnings. It's pointless to force all that code to be rewritten, with
+ added ifdefs. Any reasonable compiler will eliminate an expression with
+ no effects. */
+# define assert(x) ((void) (x))
+# define assert_with_message(x, msg) assert (x)
# define assert_at_line(x, file, line) assert (x)
#endif
1.44.2.3 +5 -5 XEmacs/xemacs/src/nt.c
Index: nt.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/nt.c,v
retrieving revision 1.44.2.2
retrieving revision 1.44.2.3
diff -u -p -r1.44.2.2 -r1.44.2.3
--- nt.c 2005/03/15 05:24:33 1.44.2.2
+++ nt.c 2005/09/27 16:29:35 1.44.2.3
@@ -1,6 +1,6 @@
/* Utility and Unix shadow routines under MS Windows (WIN32_NATIVE defined).
Copyright (C) 1994, 1995 Free Software Foundation, Inc.
- Copyright (C) 2000, 2001, 2002, 2004 Ben Wing.
+ Copyright (C) 2000, 2001, 2002, 2004, 2005 Ben Wing.
This file is part of XEmacs.
@@ -834,7 +834,7 @@ mswindows_opendir (const Ibyte *filename
int
mswindows_closedir (DIR *dirp)
{
- int retval;
+ int retval = -1;
/* If we have a find-handle open, close it. */
if (dir_find_handle != INVALID_HANDLE_VALUE)
@@ -1081,13 +1081,13 @@ mswindows_access (const Ibyte *path, int
/* #### NT 5.0 has a function CreateHardLink to do this directly,
and it may do more things. */
int
-mswindows_link (const Ibyte *old, const Ibyte *new)
+mswindows_link (const Ibyte *old, const Ibyte *new_)
{
HANDLE fileh;
int result = -1;
Extbyte *oldext;
- if (old == NULL || new == NULL)
+ if (old == NULL || new_ == NULL)
{
errno = ENOENT;
return -1;
@@ -1114,7 +1114,7 @@ mswindows_link (const Ibyte *old, const
WCHAR wbuffer[_MAX_PATH]; /* extra space for link name */
} data;
- TO_EXTERNAL_FORMAT (C_STRING, new,
+ TO_EXTERNAL_FORMAT (C_STRING, new_,
ALLOCA, (newuni, wlen), Qmswindows_unicode);
if (wlen / sizeof (WCHAR) < _MAX_PATH)
{
1.4.2.1 +2 -2 XEmacs/xemacs/src/number-gmp.c
Index: number-gmp.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/number-gmp.c,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -p -r1.4 -r1.4.2.1
--- number-gmp.c 2004/11/04 23:06:45 1.4
+++ number-gmp.c 2005/09/27 16:29:36 1.4.2.1
@@ -66,8 +66,8 @@ bigfloat_to_string(mpf_t f, int base)
/* Computerized scientific notation */
/* We need room for a radix point, format identifier, and exponent */
const int space = (expt < 0)
- ? (int)(log (-expt) / log (base)) + 3
- : (int)(log (expt) / log (base)) + 2;
+ ? (int)(log ((double) (-expt)) / log ((double) base)) + 3
+ : (int)(log ((double) expt) / log ((double) base)) + 2;
XREALLOC_ARRAY (str, CIbyte, len + space);
memmove (&str[neg + 2], &str[neg + 1], len - neg);
str[len + 1] = 'l';
1.2.2.2 +8 -0 XEmacs/xemacs/src/number-gmp.h
Index: number-gmp.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/number-gmp.h,v
retrieving revision 1.2.2.1
retrieving revision 1.2.2.2
diff -u -p -r1.2.2.1 -r1.2.2.2
--- number-gmp.h 2005/03/15 05:24:34 1.2.2.1
+++ number-gmp.h 2005/09/27 16:29:36 1.2.2.2
@@ -35,7 +35,15 @@ Boston, MA 02111-1307, USA. */
#undef __GNUC__
#endif
+#ifdef _MSC_VER
+/* "unary minus operator applied to unsigned type, result still unsigned":
+ Occurs on line 1596 of gmp.h in version 4.1.4. */
+#pragma warning ( disable : 4146 )
+#endif
#include <gmp.h>
+#ifdef _MSC_VER
+#pragma warning ( default : 4146 )
+#endif
typedef mpz_t bignum;
typedef mpq_t ratio;
1.26.2.20 +3 -3 XEmacs/xemacs/src/objects-x.c
Index: objects-x.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-x.c,v
retrieving revision 1.26.2.19
retrieving revision 1.26.2.20
diff -u -p -r1.26.2.19 -r1.26.2.20
--- objects-x.c 2005/09/24 13:04:20 1.26.2.19
+++ objects-x.c 2005/09/27 16:29:36 1.26.2.20
@@ -309,8 +309,6 @@ x_initialize_font_instance (Lisp_Font_In
#define rf (0)
#endif
- LISP_STRING_TO_EXTERNAL (f->name, extname, Qx_font_name_encoding);
-
#ifdef USE_XFT
DEBUG_XFT1 (2, "attempting to initialize font spec %s\n",
XSTRING_DATA(f->name));
@@ -319,8 +317,10 @@ x_initialize_font_instance (Lisp_Font_In
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);
rf = xft_open_font_by_name (dpy, extname);
#endif
+ LISP_STRING_TO_EXTERNAL (f->name, extname, Qx_font_name_encoding);
fs = XLoadQueryFont (dpy, extname);
if (!fs && !rf)
@@ -493,7 +493,7 @@ x_finalize_font_instance (Lisp_Font_Inst
{
#ifdef USE_XFT
- DEBUG_XFT1 (0, "finalizing %s", (STRINGP (f->name)
+ DEBUG_XFT1 (0, "finalizing %s\n", (STRINGP (f->name)
? (char *) XSTRING_DATA (f->name)
: "(unnamed font)"));
#endif
1.17.2.4 +15 -3 XEmacs/xemacs/src/rangetab.c
Index: rangetab.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/rangetab.c,v
retrieving revision 1.17.2.3
retrieving revision 1.17.2.4
diff -u -p -r1.17.2.3 -r1.17.2.4
--- rangetab.c 2005/07/13 04:46:56 1.17.2.3
+++ rangetab.c 2005/09/27 16:29:37 1.17.2.4
@@ -1,6 +1,6 @@
/* XEmacs routines to deal with range tables.
Copyright (C) 1995 Sun Microsystems, Inc.
- Copyright (C) 1995, 2002, 2004 Ben Wing.
+ Copyright (C) 1995, 2002, 2004, 2005 Ben Wing.
This file is part of XEmacs.
@@ -606,8 +606,20 @@ exactly once) if FUNCTION modifies or de
last = entry->last;
oldlen = Dynarr_length (rt->entries);
args[0] = function;
- args[1] = make_int (first);
- args[2] = make_int (last);
+ /* Fix up the numbers in accordance with the open/closedness of the
+ table. */
+ {
+ EMACS_INT premier = first, dernier = last;
+ switch (rt->type)
+ {
+ case RANGE_START_CLOSED_END_OPEN: break;
+ case RANGE_START_CLOSED_END_CLOSED: dernier--; break;
+ case RANGE_START_OPEN_END_OPEN: premier--; break;
+ case RANGE_START_OPEN_END_CLOSED: premier--, dernier--; break;
+ }
+ args[1] = make_int (premier);
+ args[2] = make_int (dernier);
+ }
args[3] = entry->val;
Ffuncall (countof (args), args);
/* Has FUNCTION removed the entry? */
1.36.2.3 +245 -113 XEmacs/xemacs/src/specifier.c
Index: specifier.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/specifier.c,v
retrieving revision 1.36.2.2
retrieving revision 1.36.2.3
diff -u -p -r1.36.2.2 -r1.36.2.3
--- specifier.c 2005/07/13 04:46:59 1.36.2.2
+++ specifier.c 2005/09/27 16:29:37 1.36.2.3
@@ -1,6 +1,6 @@
/* Specifier implementation
Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
- Copyright (C) 1995, 1996, 2002 Ben Wing.
+ Copyright (C) 1995, 1996, 2002, 2005 Ben Wing.
Copyright (C) 1995 Sun Microsystems, Inc.
This file is part of XEmacs.
@@ -23,9 +23,8 @@ Boston, MA 02111-1307, USA. */
/* Synched up with: Not in FSF. */
/* Design by Ben Wing;
- Original version by Chuck Thompson;
- rewritten by Ben Wing;
- Magic specifiers by Kirill Katsnelson;
+ Written by Ben Wing based on prototype for 19.12 by Chuck Thompson.
+ Magic specifiers by Kirill Katsnelson.
*/
#include <config.h>
@@ -460,8 +459,8 @@ valid_specifier_type_p (Lisp_Object type
DEFUN ("valid-specifier-type-p", Fvalid_specifier_type_p, 1, 1, 0, /*
Given a SPECIFIER-TYPE, return non-nil if it is valid.
-Valid types are 'generic, 'integer, 'boolean, 'color, 'font,
'image,
-'face-boolean, and 'toolbar.
+Valid types are `generic', `integer', `boolean', `color', `font',
`image',
+`face-boolean', and `toolbar'.
*/
(specifier_type))
{
@@ -578,8 +577,11 @@ lower-level functions `add-spec-to-speci
`add-spec-list-to-specifier'. You can also temporarily bind a setting
to a specifier using `let-specifier'. To retrieve settings, use
`specifier-specs', or its lower-level counterpart
-`specifier-spec-list'. To determine the actual value, use
-`specifier-instance'.
+`specifier-spec-list'.
+
+To determine the actual value (i.e. the instance) in a particular domain, use
+`specifier-instance'. To determine the corresponding setting that yielded
+the value (i.e. the instantiator), use `specifier-instantiator'.
For more information, see `set-specifier', `specifier-instance',
`specifier-specs', and `add-spec-to-specifier'; or, for a detailed
@@ -588,9 +590,9 @@ process works, see the chapter on specif
Reference Manual.
TYPE specifies the particular type of specifier, and should be one of
-the symbols 'generic, 'integer, 'natnum, 'boolean, 'color,
'font,
-'image, 'face-boolean, 'display-table, 'gutter, 'gutter-size,
-'gutter-visible or 'toolbar.
+the symbols `generic', `integer', `natnum', `boolean', `color',
`font',
+`image', `face-boolean', `display-table', `gutter', `gutter-size',
+`gutter-visible' or `toolbar'.
For more information on particular types of specifiers, see the
functions `make-generic-specifier', `make-integer-specifier',
@@ -637,7 +639,7 @@ Return the type of SPECIFIER.
DEFUN ("valid-specifier-locale-p", Fvalid_specifier_locale_p, 1, 1, 0, /*
Return t if LOCALE is a valid specifier locale.
-Valid locales are devices, frames, windows, buffers, and 'global.
+Valid locales are devices, frames, windows, buffers, and `global'.
\(nil is not valid.)
*/
(locale))
@@ -655,7 +657,7 @@ Valid locales are devices, frames, windo
DEFUN ("valid-specifier-domain-p", Fvalid_specifier_domain_p, 1, 1, 0, /*
Return t if DOMAIN is a valid specifier domain.
-A domain is used to instance a specifier (i.e. determine the specifier's
+A domain is used to instantiate a specifier (i.e. determine the specifier's
value in that domain). Valid domains are image instances, windows, frames,
and devices. \(nil is not valid.) image instances are pseudo-domains since
instantiation will actually occur in the window the image instance itself is
@@ -675,9 +677,9 @@ instantiated in.
DEFUN ("valid-specifier-locale-type-p", Fvalid_specifier_locale_type_p, 1, 1,
0,
/*
Given a specifier LOCALE-TYPE, return non-nil if it is valid.
-Valid locale types are 'global, 'device, 'frame, 'window, and
'buffer.
+Valid locale types are `global', `device', `frame', `window', and
`buffer'.
\(Note, however, that in functions that accept either a locale or a locale
-type, 'global is considered an individual locale.)
+type, `global' is considered an individual locale.)
*/
(locale_type))
{
@@ -828,8 +830,8 @@ Each tag has a predicate associated with
that tag applies to a particular device. The tags which are device types
and classes match devices of that type or class. User-defined tags can
have any predicate, or none (meaning that all devices match). When
-attempting to instance a specifier, a particular instantiator is only
-considered if the device of the domain being instanced over matches
+attempting to instantiate a specifier, a particular instantiator is only
+considered if the device of the domain being instantiated over matches
all tags in the tag set attached to that instantiator.
Most of the time, a tag set is not specified, and the instantiator
@@ -976,7 +978,7 @@ device. If PREDICATE is omitted, the ta
You can redefine an existing user-defined specifier tag. However,
you cannot redefine the built-in specifier tags (the device types
-and classes) or the symbols nil, t, 'all, or 'global.
+and classes) or the symbols nil, t, `all', or `global'.
*/
(tag, predicate))
{
@@ -990,7 +992,7 @@ and classes) or the symbols nil, t, 'all
/* Try to prevent common instantiators and locales from being
redefined, to reduce ambiguity */
if (NILP (tag) || EQ (tag, Qt) || EQ (tag, Qall) || EQ (tag, Qglobal))
- invalid_change ("Cannot define nil, t, 'all, or 'global", tag);
+ invalid_change ("Cannot define nil, t, `all', or `global'",
tag);
assoc = assq_no_quit (tag, Vuser_defined_tags);
if (NILP (assoc))
{
@@ -1476,7 +1478,7 @@ specifier_get_external_inst_list (Lisp_O
type);
if (!inst_list || NILP (*inst_list))
{
- /* nil for *inst_list should only occur in 'global */
+ /* nil for *inst_list should only occur in `global' */
assert (!inst_list || EQ (locale, Qglobal));
return Qnil;
}
@@ -1834,12 +1836,12 @@ specifier_copy_locale_type (Lisp_Object
/* map MAPFUN over the locales in SPECIFIER that are given in LOCALE.
CLOSURE is passed unchanged to MAPFUN. LOCALE can be one of
- -- nil (same as 'all)
- -- a single locale, locale type, or 'all
- -- a list of locales, locale types, and/or 'all
+ -- nil (same as `all')
+ -- a single locale, locale type, or `all'
+ -- a list of locales, locale types, and/or `all'
- MAPFUN is called for each locale and locale type given; for 'all,
- it is called for the locale 'global and for the four possible
+ MAPFUN is called for each locale and locale type given; for `all',
+ it is called for the locale `global' and for the four possible
locale types. In each invocation, either LOCALE will be a locale
and LOCALE_TYPE will be the locale type of this locale,
or LOCALE will be nil and LOCALE_TYPE will be a locale type.
@@ -1920,7 +1922,7 @@ map_specifier (Lisp_Object specifier, Li
DEFUN ("add-spec-to-specifier", Fadd_spec_to_specifier, 2, 5, 0, /*
Add a specification to SPECIFIER.
The specification maps from LOCALE (which should be a window, buffer,
-frame, device, or 'global, and defaults to 'global) to INSTANTIATOR,
+frame, device, or `global', and defaults to `global') to INSTANTIATOR,
whose allowed values depend on the type of the specifier. Optional
argument TAG-SET limits the instantiator to apply only to the specified
tag set, which should be a list of tags all of which must match the
@@ -1931,26 +1933,26 @@ containing that symbol. Optional argume
do if there are already specifications in the specifier.
It should be one of
- 'prepend Put at the beginning of the current list of
+ `prepend' Put at the beginning of the current list of
instantiators for LOCALE.
- 'append Add to the end of the current list of
+ `append' Add to the end of the current list of
instantiators for LOCALE.
- 'remove-tag-set-prepend (this is the default)
+ `remove-tag-set-prepend' (this is the default)
Remove any existing instantiators whose tag set is
the same as TAG-SET; then put the new instantiator
at the beginning of the current list. ("Same tag
set" means that they contain the same elements.
The order may be different.)
- 'remove-tag-set-append
+ `remove-tag-set-append'
Remove any existing instantiators whose tag set is
the same as TAG-SET; then put the new instantiator
at the end of the current list.
- 'remove-locale Remove all previous instantiators for this locale
+ `remove-locale' Remove all previous instantiators for this locale
before adding the new spec.
- 'remove-locale-type Remove all specifications for all locales of the
+ `remove-locale-type' Remove all specifications for all locales of the
same type as LOCALE (this includes LOCALE itself)
before adding the new spec.
- 'remove-all Remove all specifications from the specifier
+ `remove-all' Remove all specifications from the specifier
before adding the new spec.
You can retrieve the specifications for a particular locale or locale type
@@ -1989,7 +1991,7 @@ The format of SPEC-LIST is
((LOCALE (TAG-SET . INSTANTIATOR) ...) ...)
where
- LOCALE := a window, a buffer, a frame, a device, or 'global
+ LOCALE := a window, a buffer, a frame, a device, or `global'
TAG-SET := an unordered list of zero or more TAGS, each of which
is a symbol
TAG := a device class (see `valid-device-class-p'), a device type
@@ -2105,17 +2107,17 @@ DEFUN ("specifier-spec-list", Fspecifier
Return the spec-list of specifications for SPECIFIER in LOCALE.
If LOCALE is a particular locale (a buffer, window, frame, device,
-or 'global), a spec-list consisting of the specification for that
+or `global'), a spec-list consisting of the specification for that
locale will be returned.
-If LOCALE is a locale type (i.e. 'buffer, 'window, 'frame, or
'device),
+If LOCALE is a locale type (i.e. `buffer', `window', `frame', or
`device'),
a spec-list of the specifications for all locales of that type will be
returned.
-If LOCALE is nil or 'all, a spec-list of all specifications in SPECIFIER
+If LOCALE is nil or `all', a spec-list of all specifications in SPECIFIER
will be returned.
-LOCALE can also be a list of locales, locale types, and/or 'all; the
+LOCALE can also be a list of locales, locale types, and/or `all'; the
result is as if `specifier-spec-list' were called on each element of the
list and the results concatenated together.
@@ -2155,11 +2157,11 @@ in Lisp programs, and is as follows:
1. If there is only one instantiator, then an inst-pair (i.e. cons of
tag and instantiator) will be returned; otherwise a list of
inst-pairs will be returned.
-2. For each inst-pair returned, if the instantiator's tag is 'any,
+2. For each inst-pair returned, if the instantiator's tag is `any',
the tag will be removed and the instantiator itself will be returned
instead of the inst-pair.
3. If there is only one instantiator, its value is nil, and its tag is
- 'any, a one-element list containing nil will be returned rather
+ `any', a one-element list containing nil will be returned rather
than just nil, to distinguish this case from there being no
instantiators at all.
*/
@@ -2205,15 +2207,15 @@ DEFUN ("remove-specifier", Fremove_speci
Remove specification(s) for SPECIFIER.
If LOCALE is a particular locale (a window, buffer, frame, device,
-or 'global), the specification for that locale will be removed.
+or `global'), the specification for that locale will be removed.
-If instead, LOCALE is a locale type (i.e. 'window, 'buffer, 'frame,
-or 'device), the specifications for all locales of that type will be
+If instead, LOCALE is a locale type (i.e. `window', `buffer', `frame',
+or `device'), the specifications for all locales of that type will be
removed.
-If LOCALE is nil or 'all, all specifications will be removed.
+If LOCALE is nil or `all', all specifications will be removed.
-LOCALE can also be a list of locales, locale types, and/or 'all; this
+LOCALE can also be a list of locales, locale types, and/or `all'; this
is equivalent to calling `remove-specifier' for each of the elements
in the list.
@@ -2284,11 +2286,11 @@ If DEST is nil or omitted, a new specifi
specifications copied into it. Otherwise, the specifications will be
copied into the existing specifier in DEST.
-If LOCALE is nil or 'all, all specifications will be copied. If LOCALE
+If LOCALE is nil or `all', all specifications will be copied. If LOCALE
is a particular locale, the specification for that particular locale will
be copied. If LOCALE is a locale type, the specifications for all locales
of that type will be copied. LOCALE can also be a list of locales,
-locale types, and/or 'all; this is equivalent to calling `copy-specifier'
+locale types, and/or `all'; this is equivalent to calling `copy-specifier'
for each of the elements of the list. See `specifier-spec-list' for more
information about LOCALE.
@@ -2339,7 +2341,7 @@ the same as in `add-spec-to-specifier'.
/************************************************************************/
-/* Instancing */
+/* Instantiation */
/************************************************************************/
static Lisp_Object
@@ -2440,20 +2442,20 @@ set_specifier_fallback (Lisp_Object spec
DEFUN ("specifier-fallback", Fspecifier_fallback, 1, 1, 0, /*
Return the fallback value for SPECIFIER.
Fallback values are provided by the C code for certain built-in
-specifiers to make sure that instancing won't fail even if all
+specifiers to make sure that instantiation won't fail even if all
specs are removed from the specifier, or to implement simple
inheritance behavior (e.g. this method is used to ensure that
-faces other than 'default inherit their attributes from 'default).
+faces other than `default' inherit their attributes from `default').
By design, you cannot change the fallback value, and specifiers
created with `make-specifier' will never have a fallback (although
a similar, Lisp-accessible capability may be provided in the future
to allow for inheritance).
-The fallback value will be an inst-list that is instanced like
+The fallback value will be an inst-list that is instantiated like
any other inst-list, a specifier of the same type as SPECIFIER
\(results in inheritance), or nil for no fallback.
-When you instance a specifier, you can explicitly request that the
+When you instantiate a specifier, you can explicitly request that the
fallback not be consulted. (The C code does this, for example, when
merging faces.) See `specifier-instance'.
*/
@@ -2469,7 +2471,8 @@ specifier_instance_from_inst_list (Lisp_
Lisp_Object domain,
Lisp_Object inst_list,
Error_Behavior errb, int no_quit,
- Lisp_Object depth)
+ Lisp_Object depth,
+ Lisp_Object *instantiator)
{
/* This function can GC */
Lisp_Specifier *sp;
@@ -2498,7 +2501,9 @@ specifier_instance_from_inst_list (Lisp_
if (device_matches_specifier_tag_set_p (device, tag_set))
{
Lisp_Object val = XCDR (tagged_inst);
+ Lisp_Object the_instantiator = val;
+
if (HAS_SPECMETH_P (sp, instantiate))
val = call_with_suspended_errors
((lisp_fn_t) RAW_SPECMETH (sp, instantiate),
@@ -2509,6 +2514,8 @@ specifier_instance_from_inst_list (Lisp_
{
unbind_to (count);
UNGCPRO;
+ if (instantiator)
+ *instantiator = the_instantiator;
return val;
}
}
@@ -2532,7 +2539,8 @@ specifier_instance_from_inst_list (Lisp_
Lisp_Object CIE_val = \
specifier_instance_from_inst_list (specifier, matchspec, \
domain, *CIE_inst_list, \
- errb, no_quit, depth); \
+ errb, no_quit, depth, \
+ instantiator); \
if (!UNBOUNDP (CIE_val)) \
return CIE_val; \
} \
@@ -2544,10 +2552,12 @@ specifier_instance_from_inst_list (Lisp_
as we can determine. In practice, when called from redisplay the
arg will usually be a window and occasionally a frame. If
triggered by a user call, who knows what it will usually be. */
-Lisp_Object
-specifier_instance (Lisp_Object specifier, Lisp_Object matchspec,
- Lisp_Object domain, Error_Behavior errb, int no_quit,
- int no_fallback, Lisp_Object depth)
+
+static Lisp_Object
+specifier_instance_1 (Lisp_Object specifier, Lisp_Object matchspec,
+ Lisp_Object domain, Error_Behavior errb, int no_quit,
+ int no_fallback, Lisp_Object depth,
+ Lisp_Object *instantiator)
{
Lisp_Object buffer = Qnil;
Lisp_Object window = Qnil;
@@ -2555,6 +2565,9 @@ specifier_instance (Lisp_Object specifie
Lisp_Object device = Qnil;
Lisp_Specifier *sp = XSPECIFIER (specifier);
+ if (instantiator)
+ *instantiator = Qunbound;
+
/* Attempt to determine buffer, window, frame, and device from the
domain. */
/* #### get image instances out of domains! */
@@ -2639,29 +2652,92 @@ specifier_instance (Lisp_Object specifie
assert (CONSP (sp->fallback));
return specifier_instance_from_inst_list (specifier, matchspec, domain,
sp->fallback, errb, no_quit,
- depth);
+ depth, instantiator);
}
#undef CHECK_INSTANCE_ENTRY
Lisp_Object
+specifier_instance (Lisp_Object specifier, Lisp_Object matchspec,
+ Lisp_Object domain, Error_Behavior errb, int no_quit,
+ int no_fallback, Lisp_Object depth)
+{
+ return specifier_instance_1 (specifier, matchspec, domain, errb,
+ no_quit, no_fallback, depth, NULL);
+}
+
+Lisp_Object
specifier_instance_no_quit (Lisp_Object specifier, Lisp_Object matchspec,
Lisp_Object domain, Error_Behavior errb,
int no_fallback, Lisp_Object depth)
+{
+ return specifier_instance_1 (specifier, matchspec, domain, errb,
+ 1, no_fallback, depth, NULL);
+}
+
+static Lisp_Object
+specifier_matching_foo (Lisp_Object specifier,
+ Lisp_Object matchspec,
+ Lisp_Object domain,
+ Lisp_Object default_,
+ Lisp_Object no_fallback,
+ int want_instantiator)
{
- return specifier_instance (specifier, matchspec, domain, errb,
- 1, no_fallback, depth);
+ Lisp_Object instance, instantiator;
+
+ CHECK_SPECIFIER (specifier);
+ if (!UNBOUNDP (matchspec))
+ check_valid_specifier_matchspec (matchspec,
+ XSPECIFIER (specifier)->methods,
+ ERROR_ME);
+ domain = decode_domain (domain);
+
+ instance = specifier_instance_1 (specifier, matchspec, domain, ERROR_ME,
+ 0, !NILP (no_fallback), Qzero,
+ &instantiator);
+ return UNBOUNDP (instance) ? default_ : want_instantiator ? instantiator :
+ instance;
}
DEFUN ("specifier-instance", Fspecifier_instance, 1, 4, 0, /*
Instantiate SPECIFIER (return its value) in DOMAIN.
If no instance can be generated for this domain, return DEFAULT.
-DOMAIN should be a window, frame, or device. Other values that are legal
+DOMAIN is nearly always a window (defaulting to the selected window if
+omitted), but can be a window, frame, or device. Other values that are legal
as a locale (e.g. a buffer) are not valid as a domain because they do not
provide enough information to identify a particular device (see
-`valid-specifier-domain-p'). DOMAIN defaults to the selected window
-if omitted.
+`valid-specifier-domain-p'). Window domains are used internally in nearly
+all circumstances when computing specifier instances of display properties.
+Frame domains are used in a few circumstances (such as when computing the
+geometry of a frame based on properties such as the toolbar widths), and
+device domains are rarely if ever used internally.
+
+This function looks through the specifications in SPECIFIER that correspond
+to DOMAIN, from most specific (specifications for DOMAIN itself) to most
+general (global specifications), for matching instantiators, and attempts
+to compute an instance value for each instantiator found. The first
+successfully computed value is returned. The corresponding instantiator
+can be returned using `specifier-instantiator'.
+
+A specifier is a generalized object for controlling the value of a property --
+typically, but not necessarily, a display-related property -- that can vary
+over particular buffers, frames, device types, etc.
+
+A fundamental distinction must be made between the specification of a
+property's value, and the resulting value itself. This distinction is
+clearest in the case of an image -- the specification describes the source
+of the image (for example, a file of JPEG data), and the resulting value
+encapsulates a window-system object describing the image as displayed on a
+particular device (for example, a particular X display). The specification
+might also be an instruction of the form "use the background pixmap of the
+`modeline' face". A similar mapping exists between color strings and
+color-instance objects, and font strings and font-instance objects. In
+some cases, the specification and the resulting value are of the same type,
+but the distinction is still logically made.
+The specification of a value is called an instantiator, and the resulting
+value the instance.
+
"Instantiating" a specifier in a particular domain means determining
the specifier's "value" in that domain. This is accomplished by
searching through the specifications in the specifier that correspond
@@ -2673,7 +2749,7 @@ specifications are searched for as follo
2. A specification whose locale is the window's buffer;
3. A specification whose locale is the window's frame;
4. A specification whose locale is the window's frame's device;
-5. A specification whose locale is 'global.
+5. A specification whose locale is `global'.
If all of those fail, then the C-code-provided fallback value for
this specifier is consulted (see `specifier-fallback'). If it is
@@ -2701,20 +2777,32 @@ trying to debug why particular instantia
The returned value is dependent on the type of specifier. For example,
for a font specifier (as returned by the `face-font' function), the returned
value will be a font-instance object. For glyphs, the returned value
-will be a string, pixmap, or subwindow.
+will be an image-instance object.
See also `specifier-matching-instance'.
*/
(specifier, domain, default_, no_fallback))
{
- Lisp_Object instance;
+ return specifier_matching_foo (specifier, Qunbound, domain, default_,
+ no_fallback, 0);
+}
- CHECK_SPECIFIER (specifier);
- domain = decode_domain (domain);
+DEFUN ("specifier-instantiator", Fspecifier_instantiator, 1, 4, 0, /*
+Return instantiator that would be used to instantiate SPECIFIER in DOMAIN.
+If no instance can be generated for this domain, return DEFAULT.
+
+DOMAIN should be a window, frame, or device. Other values that are legal
+as a locale (e.g. a buffer) are not valid as a domain because they do not
+provide enough information to identify a particular device (see
+`valid-specifier-domain-p'). DOMAIN defaults to the selected window
+if omitted.
- instance = specifier_instance (specifier, Qunbound, domain, ERROR_ME, 0,
- !NILP (no_fallback), Qzero);
- return UNBOUNDP (instance) ? default_ : instance;
+See `specifier-instance' for more information about the instantiation process.
+*/
+ (specifier, domain, default_, no_fallback))
+{
+ return specifier_matching_foo (specifier, Qunbound, domain, default_,
+ no_fallback, 1);
}
DEFUN ("specifier-matching-instance", Fspecifier_matching_instance, 2, 5, 0,
/*
@@ -2745,46 +2833,86 @@ dependent on the particular type of spec
*/
(specifier, matchspec, domain, default_, no_fallback))
{
- Lisp_Object instance;
+ return specifier_matching_foo (specifier, matchspec, domain, default_,
+ no_fallback, 0);
+}
- CHECK_SPECIFIER (specifier);
- check_valid_specifier_matchspec (matchspec, XSPECIFIER (specifier)->methods,
- ERROR_ME);
- domain = decode_domain (domain);
+DEFUN ("specifier-matching-instantiator", Fspecifier_matching_instantiator,
+ 2, 5, 0, /*
+Return instantiator for instance of SPECIFIER in DOMAIN that matches MATCHSPEC.
+If no instance can be generated for this domain, return DEFAULT.
- instance = specifier_instance (specifier, matchspec, domain, ERROR_ME,
- 0, !NILP (no_fallback), Qzero);
- return UNBOUNDP (instance) ? default_ : instance;
+This function is identical to `specifier-matching-instance' but returns
+the instantiator used to generate the instance, rather than the actual
+instance.
+*/
+ (specifier, matchspec, domain, default_, no_fallback))
+{
+ return specifier_matching_foo (specifier, matchspec, domain, default_,
+ no_fallback, 1);
}
-DEFUN ("specifier-instance-from-inst-list",
Fspecifier_instance_from_inst_list,
- 3, 4, 0, /*
-Attempt to convert a particular inst-list into an instance.
-This attempts to instantiate INST-LIST in the given DOMAIN,
-as if INST-LIST existed in a specification in SPECIFIER. If
-the instantiation fails, DEFAULT is returned. In most circumstances,
-you should not use this function; use `specifier-instance' instead.
-*/
- (specifier, domain, inst_list, default_))
+static Lisp_Object
+specifier_matching_foo_from_inst_list (Lisp_Object specifier,
+ Lisp_Object matchspec,
+ Lisp_Object domain,
+ Lisp_Object inst_list,
+ Lisp_Object default_,
+ int want_instantiator)
{
Lisp_Object val = Qunbound;
Lisp_Specifier *sp = XSPECIFIER (specifier);
struct gcpro gcpro1;
Lisp_Object built_up_list = Qnil;
+ Lisp_Object instantiator;
CHECK_SPECIFIER (specifier);
+ if (!UNBOUNDP (matchspec))
+ check_valid_specifier_matchspec (matchspec,
+ XSPECIFIER (specifier)->methods,
+ ERROR_ME);
check_valid_domain (domain);
check_valid_inst_list (inst_list, sp->methods, ERROR_ME);
GCPRO1 (built_up_list);
built_up_list = build_up_processed_list (specifier, domain, inst_list);
if (!NILP (built_up_list))
- val = specifier_instance_from_inst_list (specifier, Qunbound, domain,
+ val = specifier_instance_from_inst_list (specifier, matchspec, domain,
built_up_list, ERROR_ME,
- 0, Qzero);
+ 0, Qzero, &instantiator);
UNGCPRO;
- return UNBOUNDP (val) ? default_ : val;
+ return UNBOUNDP (val) ? default_ : want_instantiator ? instantiator : val;
+
+}
+
+DEFUN ("specifier-instance-from-inst-list",
Fspecifier_instance_from_inst_list,
+ 3, 4, 0, /*
+Attempt to convert a particular inst-list into an instance.
+This attempts to instantiate INST-LIST in the given DOMAIN,
+as if INST-LIST existed in a specification in SPECIFIER. If
+the instantiation fails, DEFAULT is returned. In most circumstances,
+you should not use this function; use `specifier-instance' instead.
+*/
+ (specifier, domain, inst_list, default_))
+{
+ return specifier_matching_foo_from_inst_list (specifier, Qunbound,
+ domain, inst_list, default_,
+ 0);
}
+DEFUN ("specifier-instantiator-from-inst-list",
Fspecifier_instantiator_from_inst_list,
+ 3, 4, 0, /*
+Attempt to convert an inst-list into an instance; return instantiator.
+This is identical to `specifier-instance-from-inst-list' but returns
+the instantiator used to generate the instance, rather than the instance
+itself.
+*/
+ (specifier, domain, inst_list, default_))
+{
+ return specifier_matching_foo_from_inst_list (specifier, Qunbound,
+ domain, inst_list, default_,
+ 1);
+}
+
DEFUN ("specifier-matching-instance-from-inst-list",
Fspecifier_matching_instance_from_inst_list,
4, 5, 0, /*
@@ -2800,24 +2928,24 @@ works.
*/
(specifier, matchspec, domain, inst_list, default_))
{
- Lisp_Object val = Qunbound;
- Lisp_Specifier *sp = XSPECIFIER (specifier);
- struct gcpro gcpro1;
- Lisp_Object built_up_list = Qnil;
+ return specifier_matching_foo_from_inst_list (specifier, matchspec,
+ domain, inst_list, default_,
+ 0);
+}
- CHECK_SPECIFIER (specifier);
- check_valid_specifier_matchspec (matchspec, XSPECIFIER (specifier)->methods,
- ERROR_ME);
- check_valid_domain (domain);
- check_valid_inst_list (inst_list, sp->methods, ERROR_ME);
- GCPRO1 (built_up_list);
- built_up_list = build_up_processed_list (specifier, domain, inst_list);
- if (!NILP (built_up_list))
- val = specifier_instance_from_inst_list (specifier, matchspec, domain,
- built_up_list, ERROR_ME,
- 0, Qzero);
- UNGCPRO;
- return UNBOUNDP (val) ? default_ : val;
+DEFUN ("specifier-matching-instantiator-from-inst-list",
+ Fspecifier_matching_instantiator_from_inst_list,
+ 4, 5, 0, /*
+Attempt to convert an inst-list into an instance; return instantiator.
+This is identical to `specifier-matching-instance-from-inst-list' but returns
+the instantiator used to generate the instance, rather than the instance
+itself.
+*/
+ (specifier, matchspec, domain, inst_list, default_))
+{
+ return specifier_matching_foo_from_inst_list (specifier, matchspec,
+ domain, inst_list, default_,
+ 1);
}
@@ -3058,10 +3186,10 @@ DEFINE_SPECIFIER_TYPE (generic);
"instance computed from it is likewise any kind of Lisp object. The\n"
"SPECIFIER-DATA should be an alist of methods governing how the specifier\n"
"works. All methods are optional, and reasonable default methods will be\n"
-"provided. Currently there are two defined methods: 'instantiate and\n"
-"'validate.\n"
+"provided. Currently there are two defined methods: `instantiate'
and\n"
+"`validate'.\n"
"\n"
-"'instantiate specifies how to do the instantiation; if omitted, the\n"
+"`instantiate' specifies how to do the instantiation; if omitted, the\n"
"instantiator itself is simply returned as the instance. The method\n"
"should be a function that accepts three parameters (a specifier, the\n"
"instantiator that matched the domain being instantiated over, and that\n"
@@ -3073,7 +3201,7 @@ DEFINE_SPECIFIER_TYPE (generic);
"the locale corresponding to the passed instantiator could be the
window's\n"
"buffer or frame).\n"
"\n"
-"'validate specifies whether a given instantiator is valid; if
omitted,\n"
+"`validate' specifies whether a given instantiator is valid; if
omitted,\n"
"all instantiators are considered valid. It should be a function of\n"
"two arguments: an instantiator and a flag CAN-SIGNAL-ERROR. If this\n"
"flag is false, the function must simply return t or nil indicating\n"
@@ -3271,9 +3399,13 @@ syms_of_specifier (void)
DEFSUBR (Fvalid_specifier_matchspec_p);
DEFSUBR (Fspecifier_fallback);
DEFSUBR (Fspecifier_instance);
+ DEFSUBR (Fspecifier_instantiator);
DEFSUBR (Fspecifier_matching_instance);
+ DEFSUBR (Fspecifier_matching_instantiator);
DEFSUBR (Fspecifier_instance_from_inst_list);
+ DEFSUBR (Fspecifier_instantiator_from_inst_list);
DEFSUBR (Fspecifier_matching_instance_from_inst_list);
+ DEFSUBR (Fspecifier_matching_instantiator_from_inst_list);
DEFSUBR (Fset_specifier_dirty_flag);
DEFSUBR (Fgeneric_specifier_p);
1.77.2.5 +17 -17 XEmacs/xemacs/src/sysdep.c
Index: sysdep.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/sysdep.c,v
retrieving revision 1.77.2.4
retrieving revision 1.77.2.5
diff -u -p -r1.77.2.4 -r1.77.2.5
--- sysdep.c 2005/09/20 16:06:11 1.77.2.4
+++ sysdep.c 2005/09/27 16:29:38 1.77.2.5
@@ -1458,19 +1458,19 @@ emacs_set_tty (int fd, struct emacs_tty
}
else
{
- struct termios new;
+ struct termios new_;
/* Get the current settings, and see if they're what we asked for. */
- tcgetattr (fd, &new);
+ tcgetattr (fd, &new_);
/* We cannot use memcmp on the whole structure here because under
* aix386 the termios structure has some reserved field that may
* not be filled in.
*/
- if ( new.c_iflag == settings->main.c_iflag
- && new.c_oflag == settings->main.c_oflag
- && new.c_cflag == settings->main.c_cflag
- && new.c_lflag == settings->main.c_lflag
- && memcmp(new.c_cc, settings->main.c_cc, NCCS) == 0)
+ if ( new_.c_iflag == settings->main.c_iflag
+ && new_.c_oflag == settings->main.c_oflag
+ && new_.c_cflag == settings->main.c_cflag
+ && new_.c_lflag == settings->main.c_lflag
+ && memcmp(new_.c_cc, settings->main.c_cc, NCCS) == 0)
break;
else
continue;
@@ -3293,28 +3293,28 @@ qxe_chmod (const Ibyte *path, mode_t mod
#if defined (HAVE_LINK)
int
-qxe_link (const Ibyte *existing, const Ibyte *new)
+qxe_link (const Ibyte *existing, const Ibyte *new_)
{
#ifdef WIN32_NATIVE
- return mswindows_link (existing, new);
+ return mswindows_link (existing, new_);
#else /* not WIN32_NATIVE */
Extbyte *existingout, *newout;
PATHNAME_CONVERT_OUT (existing, existingout);
- PATHNAME_CONVERT_OUT (new, newout);
+ PATHNAME_CONVERT_OUT (new_, newout);
return link (existingout, newout);
#endif /* WIN32_NATIVE */
}
#endif /* defined (HAVE_LINK) */
int
-qxe_rename (const Ibyte *old, const Ibyte *new)
+qxe_rename (const Ibyte *old, const Ibyte *new_)
{
#ifdef WIN32_NATIVE
- return mswindows_rename (old, new);
+ return mswindows_rename (old, new_);
#else /* not WIN32_NATIVE */
Extbyte *oldout, *newout;
PATHNAME_CONVERT_OUT (old, oldout);
- PATHNAME_CONVERT_OUT (new, newout);
+ PATHNAME_CONVERT_OUT (new_, newout);
return rename (oldout, newout);
#endif /* WIN32_NATIVE */
}
@@ -3594,12 +3594,12 @@ dup2 (int oldd, int newd)
signal_ferror_with_frob (Qfile_error, lisp_strerror (errno),
"can't dup2 (%i, %i)", oldd, newd);
#else
- fd = dup (old);
+ fd = dup (oldd);
if (fd == -1)
return -1;
- if (fd == new)
- return new;
- ret = dup2 (old, new);
+ if (fd == newd)
+ return newd;
+ ret = dup2 (oldd, newd);
retry_close (fd);
return ret;
#endif /* F_DUPFD */
1.22.2.4 +2 -2 XEmacs/xemacs/src/text.c
Index: text.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/text.c,v
retrieving revision 1.22.2.3
retrieving revision 1.22.2.4
diff -u -p -r1.22.2.3 -r1.22.2.4
--- text.c 2005/07/13 04:47:04 1.22.2.3
+++ text.c 2005/09/27 16:29:39 1.22.2.4
@@ -1686,7 +1686,7 @@ wcscmp_ascii (const wchar_t *s1, const A
{
while (*s1 && *s2)
{
- if (*s1 != *s2)
+ if (*s1 != (wchar_t) *s2)
break;
s1++, s2++;
}
@@ -1809,7 +1809,7 @@ do \
\
if (dstp + len <= dstend) \
{ \
- set_itext_ichar_fmt (dstp, ch, dstfmt, dstobj); \
+ (void) set_itext_ichar_fmt (dstp, ch, dstfmt, dstobj); \
dstp += len; \
} \
else \