[AC21.5] document version.sh and
19 years, 10 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
Vin: only the mule.texi part can apply to 21.4, separate patch forthcoming.
Aidan: I approved the patch six weeks ago but it doesn't seem to be in
CVS. Hope you don't mind me committing.
Index: man/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v
retrieving revision 1.290
diff -u -U0 -r1.290 ChangeLog
--- man/ChangeLog 23 Feb 2005 15:33:32 -0000 1.290
+++ man/ChangeLog 9 Mar 2005 05:16:…
[View More]46 -0000
@@ -0,0 +1,23 @@
+2005-01-19 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * lispref/mule.texi (CCL Example): Detail an implementation of the
+ web's URL encoding as a CCL coding system example.
+
+2005-02-22 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * internals/internals.texi (The version.sh Script): New node.
+ (XEmacs from the Perspective of Building):
+ (Low-Level Modules):
+ (The Build Configuration System):
+ (Adding Configurable Features):
+ Add or update references to the version.sh node and/or file.
+
+ (XEmacs from the Perspective of Building): Improve text.
+
+
+2005-01-22 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * internals/internals.texi (XEmacs): Add XEmacs 21.4.16 to list.
+ (The XEmacs Split): Add comments on untrue legal factoids.
+ (The XEmacs Split): Add some @urefs for Jamie's commentary.
+
Index: man/internals/internals.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/internals/internals.texi,v
retrieving revision 1.60
diff -u -r1.60 internals.texi
--- man/internals/internals.texi 19 Feb 2005 16:18:56 -0000 1.60
+++ man/internals/internals.texi 9 Mar 2005 05:16:59 -0000
@@ -1822,6 +1822,8 @@
@item
XEmacs 21.4.15 "Security Through Obscurity" released February 2, 2004.
@item
+XEmacs 21.4.16 "Successful IPO" released December 5, 2004.
+@item
version 21.5.0 "alfalfa" released April 18, 2001.
@item
version 21.5.1 "anise" released May 9, 2001.
@@ -1907,19 +1909,26 @@
@itemize @bullet
@item
-By doing so you essentially give up all control over your code. You can
-no longer release your code under a different license. If you want to
+By doing so you essentially give up all control over your code. You can
+no longer release your code under a different license. If you want to
use your code that you've contributed to the FSF in a project of your
own, and that project is not released under the GPL, you are not allowed
-to do this. Obviously, large companies tend to want to reuse their code
-in many different projects and as a result feel very uncomfortable about
-signing legal papers.
+to do this. (This is supposed to be avoided by the standard assignment
+contract used by the FSF, which either automatically relicenses the code
+to the author for any purpose under any license, or promises to do so,
+depending on the version -- stephen.) Obviously, large companies tend
+to want to reuse their code in many different projects and as a result
+feel very uncomfortable about signing legal papers.
@item
One of the dangers of assigning copyright to the FSF is that if the FSF
happens to be taken over by some evil corporate identity or anyone with
different ideas than RMS, they will own all copyright-assigned code, and
-can revoke the GPL and enforce any license they please. If the code has
-many different copyright holders, this is much less likely of a
+can revoke the GPL and enforce any license they please. (This is false,
+according to RMS; the FSF's covenants and the assignment contracts
+require that it or any successors may release the code only under
+copyleft. Thus, the only real loophole is if the FSF goes bankrupt,
+somehow leaving the code in the public domain -- stephen.) If the code
+has many different copyright holders, this is much less likely of a
scenario.
@end itemize
@@ -2074,9 +2083,12 @@
1993, comprise the bulk (if not the entirety) of the public
discussions between the Lucid and FSF camps on why the split happened
and why a merger never did.
+@uref{http://www.jwz.org/doc/lemacs.html,The Lucid Emacs Split}.
The current XEmacs maintainers have a much more pusillanimous summary
-of this history on their XEmacs versus GNU Emacs page.
+of this history on
+@uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html,their XEmacs
+versus GNU Emacs page}.
-- jwz, 11-Feb-2000.
@@ -2415,8 +2427,8 @@
This determines what the build environment is, chooses the
appropriate @file{s/} and @file{m/} file, and runs a series of tests to
determine many details about your environment, such as which library
-functions are available and exactly how they work. The reason for
-running these tests is that it allows XEmacs to be compiled on a much
+functions are available and exactly how they work.
+Running these tests allows XEmacs to be compiled on a much
wider variety of platforms than those that the XEmacs developers happen
to be familiar with, including various sorts of hybrid platforms. This
is especially important now that many operating systems give you a great
@@ -2425,12 +2437,17 @@
would be impossible to pre-determine and pre-specify the information for
all possible configurations.
-In fact, the @file{s/} and @file{m/} files are basically @emph{evil},
-since they contain unmaintainable platform-specific hard-coded
-information. XEmacs has been moving in the direction of having all
+Thus, the @file{s/} and @
+preserve the order of assignments.
+
+Here is a table of the currently defined variables and their meanings (as
+of February 2005):
+
+@table @samp
+@item #!/bin/sh
+The shebang, making this an executable script on Unix.
+
+@item emacs_is_beta
+Set to @samp{t} when the release is a beta test release, otherwise null.
+
+@item emacs_major_version
+@itemx emacs_minor_version
+@itemx emacs_beta_version
+Strings containing decimal numbers representing the components of the
+version of the source tree. The name @samp{emacs_beta_version} is a
+relic of the time when XEmacs had a two component version for public
+releases. Since XEmacs 21.1, both the beta series and the stable series
+have three-component version numbers, and @samp{emacs_beta_version} holds
+the lowest-order component of the stable series as well as the beta series.
+
+@item xemacs_codename
+An optional string containing a codename for the release. Recent
+maintainers have chosen humorous themes for their codenames, and
+typically the names are used in alphabetical order.
+
+@item emacs_kit_version
+An optional string used for special branches. (This should be
+deprecated in favor of xemacs_extra_name.)
+
+@item infodock_major_version
+@itemx infodock_minor_version
+@itemx infodock_build_version
+Strings containing decimal numbers representing the components of the
+version of the Infodock applied to the source tree. (The Infodock
+project has been in hibernation since XEmacs 21.1.9 or so; these
+variables are unused in current XEmacsen.)
+
+@item xemacs_extra_name
+A string containing arbitrary additional information. If length is
+positive, it is automatically added to the version string after the
+codename.
+
+@item xemacs_release_date
+A string containing the date of the latest release in the series in ISO
+8601 format. The time zone should not be present, it is defined to be
+UTC. Time is optional. Not currently used in the version string.
+@end table
+
+
+
+@node Adding Configurable Features, The configure Script, The version.sh Script, The Build Configuration System
@section Adding Configurable Features
@cindex adding configurable features
@cindex configurable features, adding
@@ -4161,7 +4281,7 @@
@node The configure Script, The Makefile Precursors, Adding Configurable Features, The Build Configuration System
@section The configure Script
@cindex configure script
-@cindex script, configure
+@cindex scripts, configure
At the heart of the XEmacs build configuration system is the
@file{configure} script. This beast is maintained using the Autoconf
Index: man/lispref/mule.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/mule.texi,v
retrieving revision 1.11
diff -u -r1.11 mule.texi
--- man/lispref/mule.texi 4 Nov 2004 23:06:07 -0000 1.11
+++ man/lispref/mule.texi 9 Mar 2005 05:27:51 -0000
@@ -1765,7 +1765,7 @@
* CCL Statements:: Semantics of CCL statements.
* CCL Expressions:: Operators and expressions in CCL.
* Calling CCL:: Running CCL programs.
-* CCL Examples:: The encoding functions for Big5 and KOI-8.
+* CCL Example:: A trivial program to transform the Web's URL encoding.
@end menu
@node CCL Syntax, CCL Statements, , CCL
@@ -1986,7 +1986,7 @@
Shift JIS. CCL_DECODE_SJIS is its inverse.) It is somewhat odd to
represent the SJIS operations in infix form.
-@node Calling CCL, CCL Examples, CCL Expressions, CCL
+@node Calling CCL, CCL Example, CCL Expressions, CCL
@comment Node, Next, Previous, Up
@subsection Calling CCL
@@ -2052,11 +2052,277 @@
Resets the CCL interpreter's internal elapsed time registers.
@end defun
-@node CCL Examples, , Calling CCL, CCL
+@node CCL Example, , Calling CCL, CCL
@comment Node, Next, Previous, Up
-@subsection CCL Examples
+@subsection CCL Example
- This section is not yet written.
+ In this section, we describe the implementation of a trivial coding
+system to transform from the Web's URL encoding to XEmacs' internal
+coding. Many people will have been first exposed to URL encoding when
+they saw ``%20'' where they expected a space in a file's name on their
+local hard disk; this can happen when a browser saves a file from the
+web and doesn't encode the name, as passed from the server, properly.
+
+ URL encoding itself is underspecified with regard to encodings beyond
+ASCII. The relevant document, RFC 1738, explicitly doesn't give any
+information on how to encode non-ASCII characters, and the ``obvious''
+way---use the %xx values for the octets of the eight bit MIME character
+set in which the page was served---breaks when a user types a character
+outside that character set. Best practice for web development is to
+serve all pages as UTF-8 and treat incoming form data as using that
+coding system. (Oh, and gamble that your clients won't ever want to
+type anything outside Unicode. But that's not so much of a gamble with
+today's client operating systems.) We don't treat non-ASCII in this
+example, as dealing with @samp{(read-multibyte-character ...)} and
+errors therewith would make it much harder to understand.
+
+ Since CCL isn't a very rich language, we move much of the logic that
+would ordinarily be computed from operations like @code{(member ..)},
+@code{(and ...)} and @code{(or ...)} into tables, from which register
+values are read and written, and on which @code{if} statements are
+predicated. Much more of the implementation of this coding system is
+occupied with constructing these tables---in normal Emacs Lisp---than it
+is with actual CCL code.
+
+ All the @code{defvar} statements we deal with in the next few sections
+are surrounded by a @code{(eval-and-compile ...)}, which means that the
+logic which initializes these variables executes at compile time, and if
+XEmacs loads the compiled version of the file, these variables are
+initialized as constants.
+
+@menu
+* Four bits to ASCII:: Two tables used for getting hex digits from ASCII.
+* URI Encoding constants:: Useful predefined characters.
+* Numeric to ASCII-hexadecimal conversion:: Trivial in Lisp, not so in CCL.
+* Characters to be preserved:: No transformation needed for these characters.
+* The program to decode to internal format:: .
+* The program to encode from internal format:: .
+
+@end menu
+
+@node Four bits to ASCII, URI Encoding constants, , CCL Example
+@subsubsection Four bits to ASCII
+
+ The first @code{defvar} is for
+@code{url-coding-high-order-nybble-as-ascii}, a 256-entry table that
+maps from an octet's value to the ASCII encoding for the hex value of
+its most significant four bits. That might sound complex, but it isn't;
+for decimal 65, hex value @samp{#x41}, the entry in the table is the
+ASCII encoding of `4'. For decimal 122, ASCII `z', hex value
+@code{#x7a}, @code{(elt url-coding-high-order-nybble-as-ascii #x7a)}
+after this file is loaded gives the ASCII encoding of 7.
+
+@example
+(defvar url-coding-high-order-nybble-as-ascii
+ (let ((val (make-vector 256 0))
+ (i 0))
+ (while (< i (length val))
+ (aset val i (char-int (aref (format "%02X" i) 0)))
+ (setq i (1+ i)))
+ val)
+ "Table to find an ASCII version of an octet's most significant 4 bits.")
+@end example
+
+ The next table, @code{url-coding-low-order-nybble-as-ascii} is almost
+the same thing, but this time it has a map for the hex encoding of the
+low-order four bits. So the sixty-fifth entry (offset @samp{#x51}) is
+the ASCII encoding of `1', the hundred-and-twenty-second (offset
+@samp{#x7a}) is the ASCII encoding of `A'.
+
+@example
+(defvar url-coding-low-order-nybble-as-ascii
+ (let ((val (make-vector 256 0))
+ (i 0))
+ (while (< i (length val))
+ (aset val i (char-int (aref (format "%02X" i) 1)))
+ (setq i (1+ i)))
+ val)
+ "Table to find an ASCII version of an octet's least significant 4 bits.")
+@end example
+
+@node URI Encoding constants, Numeric to ASCII-hexadecimal conversion, Four bits to ASCII, CCL Example
+@subsubsection URI Encoding constants
+
+ Next, we have a couple of variables that make the CCL code more
+readable. The first is the ASCII encoding of the percentage sign; this
+character is used as an escape code, to start the encoding of a
+non-printable character. For historical reasons, URL encoding allows
+the space character to be encoded as a plus sign--it does make typing
+URLs like @samp{http://google.com/search?q=XEmacs+home+page} easier--and
+as such, we have to check when decoding for this value, and map it to
+the space character. When doing this in CCL, we use the
+@code{url-coding-escaped-space-code} variable.
+
+@example
+(defvar url-coding-escape-character-code (char-int ?%)
+ "The code point for the percentage sign, in ASCII.")
+
+(defvar url-coding-escaped-space-code (char-int ?+)
+ "The URL-encoded value of the space character, that is, +.")
+@end example
+
+@node Numeric to ASCII-hexadecimal conversion
+@subsubsection Numeric to ASCII-hexadecimal conversion
+
+ Now, we have a couple of utility tables that wouldn't be necessary in
+a more expressive programming language than is CCL. The first is sixteen
+in length, and maps a hexadecimal number to the ASCII encoding of that
+number; so zero maps to ASCII `0', ten maps to ASCII `A.' The second
+does the reverse; that is, it maps an ASCII character to its value when
+interpreted as a hexadecimal digit. ('A' => 10, 'c' => 12, '2' => 2, as
+a few examples.)
+
+@example
+(defvar url-coding-hex-digit-table
+ (let ((i 0)
+ (val (make-vector 16 0)))
+ (while (< i 16)
+ (aset val i (char-int (aref (format "%X" i) 0)))
+ (setq i (1+ i)))
+ val)
+ "A map from a hexadecimal digit's numeric value to its encoding in ASCII.")
+
+(defvar url-coding-latin-1-as-hex-table
+ (let ((val (make-vector 256 0))
+ (i 0))
+ (while (< i (length val))
+ ;; Get a hex val for this ASCII character.
+ (aset val i (string-to-int (format "%c" i) 16))
+ (setq i (1+ i)))
+ val)
+ "A map from Latin 1 code points to their values as hexadecimal digits.")
+@end example
+
+@node Characters to be preserved
+@subsubsection Characters to be preserved
+
+ And finally, the last of these tables. URL encoding says that
+alphanumeric characters, the underscore, hyphen and the full stop
+@footnote{That's what the standards call it, though my North American
+readers will be more familiar with it as the period character.} retain
+their ASCII encoding, and don't undergo transformation.
+@code{url-coding-should-preserve-table} is an array in which the entries
+are one if the corresponding ASCII character should be left as-is, and
+zero if they should be transformed. So the entries for all the control
+and most of the punctuation charcters are zero. Lisp programmers will
+observe that this initialization is particularly inefficient, but
+they'll also be aware that this is a long way from an inner loop where
+every nanosecond counts.
+
+@example
+(defvar url-coding-should-preserve-table
+ (let ((preserve
+ (list ?- ?_ ?. ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o
+ ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z ?A ?B ?C ?D ?E ?F ?G
+ ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y
+ ?Z ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))
+ (i 0)
+ (res (make-vector 256 0)))
+ (while (< i 256)
+ (when (member (int-char i) preserve)
+ (aset res i 1))
+ (setq i (1+ i)))
+ res)
+ "A 256-entry array of flags, indicating whether or not to preserve an
+octet as its ASCII encoding.")
+@end example
+
+@node The program to decode to internal format
+@subsubsection The program to decode to internal format
+
+ After the almost interminable tables, we get to the CCL. The first
+CCL program, @code{ccl-decode-urlcoding} decodes from the URL coding to
+our internal format; since this version of CCL doesn't have support for
+error checking on the input, we don't do any verification on it.
+
+The buffer magnification--approximate ratio of the size of the output
+buffer to the size of the input buffer--is declared as one, because
+fractional values aren't allowed. (Since all those %20's will map to
+` ', the length of the output text will be less than that of the input
+text.)
+
+So, first we read an octet from the input buffer into register
+@samp{r0}, to set up the loop. Next, we start the loop, with a
+@code{(loop ...)} statement, and we check if the value in @samp{r0} is a
+percentage sign. (Note the comma before
+@code{url-coding-escape-character-code}; since CCL is a Lisp macro
+language, we can break out of the macro evaluation with a comman, and as
+such, ``@code{,url-coding-escape-character-code}'' will be evaluated as a
+literal `37.')
+
+If it is a percentage sign, we read the next two octets into @samp{r2}
+and @samp{r3}, and convert them into their hexadecimal numeric values,
+using the @code{url-coding-latin-1-as-hex-table} array declared above.
+(But again, it'll be interpreted as a literal array.) We then left
+shift the first by four bits, mask the two together, and write the
+result to the output buffer.
+
+If it isn't a percentage sign, and it is a `+' sign, we write a
+space--hexadecimal 20--to the output buffer.
+
+If none of those things are true, we pass the octet to the output buffer
+untransformed. (This could be a place to put error checking, in a more
+expressive language.) We then read one more octet from the input
+buffer, and move to the next iteration of the loop.
+
+@example
+(define-ccl-program ccl-decode-urlcoding
+ `(1
+ ((read r0)
+ (loop
+ (if (r0 == ,url-coding-escape-character-code)
+ ((read r2 r3)
+ ;; Assign the value at offset r2 in the url-coding-hex-digit-table
+ ;; to r3.
+ (r2 = r2 ,url-coding-latin-1-as-hex-table)
+ (r3 = r3 ,url-coding-latin-1-as-hex-table)
+ (r2 <<= 4)
+ (r3 |= r2)
+ (write r3))
+ (if (r0 == ,url-coding-escaped-space-code)
+ (write #x20)
+ (write r0)))
+ (read r0)
+ (repeat))))
+ "CCL program to take URI-encoded ASCII text and transform it to our
+internal encoding. ")
+@end example
+
+@node The program to encode from internal format
+@subsubsection The program to encode from internal format
+
+ Next, we see the CCL program to encode ASCII text as URL coded text.
+Here, the buffer magnification is specified as three, to account for ` '
+mapping to %20, etc. As before, we read an octet from the input into
+@samp{r0}, and move into the body of the loop. Next, we check if we
+should preserve the value of this octet, by reading from offset
+@samp{r0} in the @code{url-coding-should-preserve-table} into @samp{r1}.
+Then we have an @samp{if} statement predicated on the value in
+@samp{r1}; for the true branch, we write the input octet directly. For
+the false branch, we write a percentage sign, the ASCII encoding of the
+high four bits in hex, and then the ASCII encoding of the low four bits
+in hex.
+
+We then read an octet from the input into @samp{r0}, and repeat the loop.
+
+@example
+(define-ccl-program ccl-encode-urlcoding
+ `(3
+ ((read r0)
+ (loop
+ (r1 = r0 ,url-coding-should-preserve-table)
+ ;; If we should preserve the value, just write the octet directly.
+ (if r1
+ (write r0)
+ ;; else, write a percentage sign, and the hex value of the octet, in
+ ;; an ASCII-friendly format.
+ ((write ,url-coding-escape-character-code)
+ (write r0 ,url-coding-high-order-nybble-as-ascii)
+ (write r0 ,url-coding-low-order-nybble-as-ascii)))
+ (read r0)
+ (repeat))))
+ "CCL program to encode octets (almost) according to RFC 1738")
+@end example
@node Category Tables, Unicode Support, CCL, MULE
@section Category Tables
--
Institute of Policy and Planning Sciences http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
Ask not how you can "do" free software business;
ask what your business can "do for" free software.
[View Less]
[AC21.5] small doc patch for regex
19 years, 10 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
Not needed for 21.4.
Index: src/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.801
diff -u -U0 -r1.801 ChangeLog
--- src/ChangeLog 2 Mar 2005 18:31:55 -0000 1.801
+++ src/ChangeLog 9 Mar 2005 04:57:21 -0000
@@ -0,0 +1,6 @@
+2005-01-13 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * regex.c (re_match_2_internal):
+ * regex.h (struct re_pattern_buffer):
+ …
[View More]Improve comments. Add a DEBUG_PRINT2 for null matches.
+
Index: src/regex.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/regex.c,v
retrieving revision 1.55
diff -u -r1.55 regex.c
--- src/regex.c 24 Jan 2005 23:34:08 -0000 1.55
+++ src/regex.c 9 Mar 2005 04:58:05 -0000
@@ -5178,8 +5178,9 @@
: ((regoff_t) (d - string2 + size1)));
}
- /* Go through the first `min (num_regs, regs->num_regs)'
- registers, since that is all we initialized. */
+ /* Map over the NUM_NONSHY_REGS non-shy internal registers.
+ Copy each into the corresponding external register.
+ MCNT indexes external registers. */
for (mcnt = 1; mcnt < MIN (num_nonshy_regs, regs->num_regs);
mcnt++)
{
@@ -5198,9 +5199,10 @@
} /* regs && !bufp->no_sub */
/* If we have regs and the regs structure has more elements than
- were in the pattern, set the extra elements to -1. If we
- (re)allocated the registers, this is the case, because we
- always allocate enough to have at least one -1 at the end.
+ were in the pattern, set the extra elements starting with
+ NUM_NONSHY_REGS to -1. If we (re)allocated the registers,
+ this is the case, because we always allocate enough to have
+ at least one -1 at the end.
We do this even when no_sub is set because some applications
(XEmacs) reuse register structures which may contain stale
@@ -5406,8 +5408,11 @@
p1 = p; /* To send to group_match_null_string_p. */
if (REG_MATCH_NULL_STRING_P (reg_info[*p]) == MATCH_NULL_UNSET_VALUE)
- REG_MATCH_NULL_STRING_P (reg_info[*p])
- = group_match_null_string_p (&p1, pend, reg_info);
+ REG_MATCH_NULL_STRING_P (reg_info[*p])
+ = group_match_null_string_p (&p1, pend, reg_info);
+
+ DEBUG_PRINT2 (" group CAN%s match null string\n",
+ REG_MATCH_NULL_STRING_P (reg_info[*p]) ? "NOT" : "");
/* Save the position in the string where we were the last time
we were at this open-group operator in case the group is
Index: src/regex.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/regex.h,v
retrieving revision 1.13
diff -u -r1.13 regex.h
--- src/regex.h 14 Oct 2004 17:26:24 -0000 1.13
+++ src/regex.h 9 Mar 2005 04:58:05 -0000
@@ -357,8 +357,8 @@
when it is matched. */
RE_TRANSLATE_TYPE translate;
- /* Number of returnable groups found by the compiler. (This does
- not count shy groups.) */
+ /* Number of subpatterns (returnable groups) found by the compiler.
+ (This does not count shy groups.) */
int re_nsub;
/* Total number of groups found by the compiler. (Including
--
Institute of Policy and Planning Sciences http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
Ask not how you can "do" free software business;
ask what your business can "do for" free software.
[View Less]
[COMMIT] Package Release Announcement 2005-03-07
19 years, 10 months
Norbert Koch
NOTE: This patch has been committed.
Hi!
Here's the announcement for the new packages.
norbert.
ChangeLog addition:
2005-03-08 Norbert Koch <viteno(a)xemacs.org>
* index.content: Announce new packages.
Releases/ChangeLog addition:
2005-03-08 Norbert Koch <viteno(a)xemacs.org>
* 2005-03-07.content: Announce new packages.
xemacsweb source patch:
Diff command: cvs -f -z3 -q diff -u -N
Files affected: Releases/index.content Releases/2005-03-07.content index.content
…
[View More]Index: index.content
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/index.content,v
retrieving revision 1.142
diff -u -r1.142 index.content
--- index.content 18 Feb 2005 10:14:21 -0000 1.142
+++ index.content 8 Mar 2005 10:24:15 -0000
@@ -97,7 +97,7 @@
<dl>
<!-- one of (dd dt) -->
<dt><strong><a href="<!-- _GP_ relPath(qq{Releases/index.html#Packages}) -->">Official</a> Release:</strong></dt>
- <dd><a href="Releases/2005-01-18.html">2005-01-18</a></dd>
+ <dd><a href="Releases/2005-03-07.html">2005-03-07</a></dd>
</dl>
<h1>XEmacs Community News</h1>
Index: Releases/2005-03-07.content
===================================================================
RCS file: Releases/2005-03-07.content
diff -N Releases/2005-03-07.content
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Releases/2005-03-07.content 8 Mar 2005 10:24:16 -0000
@@ -0,0 +1,527 @@
+%title%
+XEmacs Packages have been released (2005-03-07)
+%author%
+automatically generated from release announcement by release-mail-to-html.el
+%main%
+ <h1><a name="announcement">XEmacs Packages have been released (2005-03-07)</a></h1>
+ <p>goto announcement,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+From: Norbert Koch <viteno(a)xemacs.org>
+Subject: XEmacs Packages have been released (2005-03-07)
+To: xemacs-announce(a)xemacs.org
+Date: Mon, 07 Mar 2005 22:38:22 +0100
+Message-ID: <vz1xar6ss1.fsf(a)arafel.viteno.net>
+Reply-To: xemacs-beta(a)xemacs.org
+
+[[PGP Signed Part:Norbert Koch (XEmacs package-release manager) <viteno(a)xemacs.org>]]
+Hello.
+
+The following XEmacs packages have just been released.
+
+Updated or New Packages:
+=======================
+auctex-1.46-pkg.tar.gz upstream version: 11.55
+ediff-1.51-pkg.tar.gz upstream version: 2.75
+edit-utils-2.22-pkg.tar.gz upstream version: none
+ispell-1.31-pkg.tar.gz upstream version: 3.6
+latin-euro-standards-1.03-pkg.ta upstream version: 1.03
+latin-unity-1.14-pkg.tar.gz upstream version: 1.14
+mail-lib-1.71-pkg.tar.gz upstream version: none
+mule-ucs-1.11-pkg.tar.gz upstream version: 0.84
+os-utils-1.36-pkg.tar.gz upstream version: none
+pc-1.27-pkg.tar.gz upstream version: none
+pcomplete-1.04-pkg.tar.gz upstream version: 1.1.6
+perl-modes-1.07-pkg.tar.gz upstream version: none
+prog-modes-2.02-pkg.tar.gz upstream version: none
+text-modes-1.84-pkg.tar.gz upstream version: none
+vhdl-1.20-pkg.tar.gz upstream version: 3.33.2
+viper-1.38-pkg.tar.gz upstream version: 3.09
+xemacs-base-1.96-pkg.tar.gz upstream version: none
+
+Detailed Changes:
+================
+
+Installing These:
+================
+
+Manually:
+--------
+ 1) Download the packages that you want to install from: [1]
+ /ftp.xemacs.org:/pub/xemacs/packages/
+ 2) Unpack them to: [2]
+ /usr/local/lib/xemacs/xemacs-packages/
+ 3) Re-start XEmacs.
+
+Using XEmacs Package Tools (XEmacs 21.[245].x):
+----------------------------------------------
+ 1) Tools -> Packages -> Add Download Site -> choose site
+ 2) Tools -> Packages -> List and Install
+ 3) Select the packages you wish to install (there are brief
+ instructions at the bottom of the packages buffer).
+ 4) Packages -> Install/Remove Selected
+ 5) Re-start XEmacs.
+
+Using XEmacs Package Tools (XEmacs 21.1.14):
+-------------------------------------------
+ 1) Options -> Manage Packages -> Add Download Site -> choose site
+ 2) Options -> Manage Packages -> List and Install
+ 3 - 5) As per XEmacs 21.[245].x.
+
+Norbert Koch,
+XEmacs Package Release Manager
+
+Footnotes:
+[1] Or from a mirror near you.
+
+[2] Note: Mule packages should be installed into:
+ /usr/local/lib/xemacs/mule-packages/
+[[End of PGP Signed Part]]</pre>
+ <h1><a name="changes">ChangeLogs</a> for XEmacs Packages 2005-03-07</h1>
+ <p>goto <a href="#announcement">announcement</a>,
+ changes</p>
+ <ul>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:auctex:ChangeLog">xemacs-packages/auctex/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:ediff:ChangeLog">xemacs-packages/ediff/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:edit-utils:ChangeLog">xemacs-packages/edit-utils/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:ispell:ChangeLog">xemacs-packages/ispell/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#mule-packages:latin-euro-standards:ChangeLog">mule-packages/latin-euro-standards/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#mule-packages:latin-unity:ChangeLog">mule-packages/latin-unity/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:mail-lib:ChangeLog">xemacs-packages/mail-lib/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#mule-packages:mule-ucs:ChangeLog">mule-packages/mule-ucs/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:os-utils:ChangeLog">xemacs-packages/os-utils/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:pc:ChangeLog">xemacs-packages/pc/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:pcomplete:ChangeLog">xemacs-packages/pcomplete/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:perl-modes:ChangeLog">xemacs-packages/perl-modes/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:prog-modes:ChangeLog">xemacs-packages/prog-modes/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:text-modes:ChangeLog">xemacs-packages/text-modes/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:vhdl:ChangeLog">xemacs-packages/vhdl/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:viper:ChangeLog">xemacs-packages/viper/ChangeLog</a></li>
+ <li>ChangeLog Entries from <a href="#xemacs-packages:xemacs-base:ChangeLog">xemacs-packages/xemacs-base/ChangeLog</a></li>
+ </ul>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:auctex:ChangeLog">xemacs-packages/auctex/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-12 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.46 released.
+
+2005-02-11 Uwe Brauer <oub(a)mat.ucm.es>
+
+ * tex-site.el: comment for the moment (defcustom TeX-macro-global
+
+ * tex.el: merge tex.el from 11.55 into version from Xemacs pkg.
+
+ * merge tex-jp.el from 11.55 into version from Xemacs pkg.
+
+ * add jsarticle.el and jsbook.el
+
+2005-02-10 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.45 released.
+
+2005-01-21 Steve Youngs <steve(a)sxemacs.org>
+
+ * tex-site.el: Do NOT add `TeX-image-directory' to the load-path.
+
+2005-01-19 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.44 released.
+
+2005-01-15 Uwe Brauer <oub(a)gmx.net>
+
+ * Makefile (ETC_ELCS):
+ add files jurabib.elc listings.el url.elc csquotes.elc
+
+ * add texi/quickstart.texi
+
+ * Makefile (DATA_2_FILES): add
+ DATA_2_FILES = $(wildcard images/*.xpm)
+ DATA_2_DEST = $(PACKAGE)/images
+
+2005-01-14 Uwe Brauer <oub(a)gmx.net>
+
+ * Makefile (ELCS): Add toolbar-x.elc tex-bar.elc
+
+ * tex-site.el (TeX-macro-global):
+ Merge tex-site.el from Xemacs pkg with tex-site from 11.54
+
+ * tex-jp.el: ditto
+
+ * tex.el: ditto</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:ediff:ChangeLog">xemacs-packages/ediff/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-19 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.51 released.
+
+2005-02-19 Michael Kifer <kifer(a)cs.stonybrook.edu>
+
+ * ediff.el (ediff-set-diff-overlays-in-one-buffer,
+ ediff-set-fine-overlays-in-one-buffer,ediff-goto-word) make sure
+ we use the syntax table of the correct buffer.
+ (ediff-same-file-contents,ediff-same-contents): enhancements thanks to
+ Felix Gatzemeier.
+
+ * ediff-init.el (ediff-hide-face): checks for definedness of functions.
+ (ediff-file-remote-p): make synonymous with file-remote-p.
+ In all deffaces ediff-*-face-*, use min-colors.
+
+ * ediff-mult.el (ediff-meta-mark-equal-files): make use of
+ ediff-recurse-to-subdirectories.
+ (ediff-mark-if-equal): check that the arguments are strings, use
+ ediff-same-contents (after to Felix Gatzemeier).
+
+ * ediff.el (ediff-merge-on-startup): don't set buffer-modified-p to
+ nil.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:edit-utils:ChangeLog">xemacs-packages/edit-utils/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-10 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 2.22 released.
+
+2005-02-09 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * man.el: Bind manual-entry to C-h C-m by default.
+
+2005-02-03 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 2.21 released.
+
+2005-01-31 Ben Wing <ben(a)xemacs.org>
+
+ * lazy-shot.el (lazy-shot-install-extent):
+ Use plain set-extent-property as
+ set-extent-initial-redisplay-function is going away.
+
+2005-01-31 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 2.20 released.
+
+2005-01-29 Ville Skyttä <scop(a)xemacs.org>
+
+ * edit-utils.texi: Spelling fixes, add document title.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:ispell:ChangeLog">xemacs-packages/ispell/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-13 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.31 released.
+
+2005-02-13 Michael Sperber <mike(a)xemacs.org>
+
+ * ispell.el (ispell-command-loop): Don't rely on
+ `save-window-excursion' to preserve window identity. This makes
+ r)eplace work on XEmacs 21.5.
+
+2005-01-23 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.30 released.
+
+2005-01-14 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * ispell.el (ispell-change-dictionary): Don't necessarily nuke
+ ispell-dictionary on every call from
+ ispell-buffer-local-dict. This allows the advertised method of
+ defaulting the dictionary--
+
+ (setq ispell-dictionary "language-name")
+
+ --to actually work.</pre>
+ <h2>ChangeLog Entries from <a name="mule-packages:latin-euro-standards:ChangeLog">mule-packages/latin-euro-standards/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-16 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.03 released.
+
+ * package-info.in: Correct the package name. Move description
+ into one line.
+
+ * Makefile (VERSION): XEmacs package 1.02 released.
+
+ * Makefile (VERSION): XEmacs package 1.01 released.
+
+2005-02-08 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * latin-euro-standards: New package, refactored from latin-unity.
+
+ * latin-euro-latin10.el:
+ * latin-euro-latin7.el:
+ * latin-euro-latin8.el:
+ * latin-euro-latin9.el:
+ Refactored from latin-unity-latin{7,8,9,10}.el.
+
+ * Makefile:
+ * latin-euro-standards.el:
+ * latin-euro-standards.texi:
+ Created.</pre>
+ <h2>ChangeLog Entries from <a name="mule-packages:latin-unity:ChangeLog">mule-packages/latin-unity/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-28 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.14 released.
+
+2005-02-16 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.13 released.
+
+ * Makefile (VERSION): XEmacs package 1.12 released.
+
+2005-02-08 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * Makefile: Make the package depend on latin-euro-standards,
+ increment the Makefile version. </pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:mail-lib:ChangeLog">xemacs-packages/mail-lib/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-28 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.71 released.
+
+2005-02-26 Simon Josefsson <jas(a)extundo.com>
+
+ * browse-url.el (browse-url-netscape): Fix last commit. Reported
+ by "Johann 'Myrkraverk' Oskarsson"
+ <myrkraverk(a)users.sourceforget.net>.
+
+2005-02-22 Simon Josefsson <jas(a)extundo.com>
+
+ * browse-url.el (browse-url-netscape-new-window-is-tab): New
+ variable.
+ (browse-url-netscape): Use it. Doc fix. Reported by "Johann
+ 'Myrkraverk' Oskarsson" <myrkraverk(a)users.sourceforget.net>.</pre>
+ <h2>ChangeLog Entries from <a name="mule-packages:mule-ucs:ChangeLog">mule-packages/mule-ucs/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-28 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.11 released.
+
+2005-02-28 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * doc/mule-ucs.texi (Top):
+ "latin-unity may be of use" -> "latin-unity will probably be of use"
+ * doc/mule-ucs.texi (Overview):
+ Mention that Mule-UCS will probably trash data.
+ * doc/mule-ucs.texi (Configuration):
+ Re-iterate that Mule-UCS will probably trash data. Comment out
+ the hope that advanced features will be documented; I don't
+ anticipate that happening.
+
+2005-02-28 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.10 released.
+
+2005-02-16 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.09 released.
+
+2005-02-08 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * Makefile: Make the package depend on latin-euro-standards,
+ increment the Makefile version.
+
+2005-01-31 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.07 released.
+
+2005-01-30 Adrian Aichner <adrian(a)xemacs.org>
+
+ * doc/mule-ucs.texi (Configuration): Quote utf-8 in code sample.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:os-utils:ChangeLog">xemacs-packages/os-utils/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-01-31 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.36 released.
+
+2005-01-29 Ville Skyttä <scop(a)xemacs.org>
+
+ * os-utils.texi: Spelling fixes, add document title.
+
+ * arc-mode.el: Sync with GNU Emacs 20.2, add *.[ejw]ar to
+ auto-mode-alist association.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:pc:ChangeLog">xemacs-packages/pc/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-03 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.27 released.
+
+2005-01-31 Ben Wing <ben(a)xemacs.org>
+
+ * pending-del.el:
+ Add skeleton-pair-insert-maybe.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:pcomplete:ChangeLog">xemacs-packages/pcomplete/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-01-23 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.04 released.
+
+2004-10-08 René Kyllingstad <listmailxemacs(a)kyllingstad.com>
+
+ * pcomplete.el: define pcomplete-read-event instead of read-event,
+ since it's not a complete read-event implementation.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:perl-modes:ChangeLog">xemacs-packages/perl-modes/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-10 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.07 released.
+
+2005-02-10 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * cperl-mode.el: Mark the previous changes as XEmacs-specific changes.
+
+2005-02-09 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * cperl-mode.el: Autoload cperl-perldoc, cperl-perldoc-at-point.
+ * cperl-mode.el (cperl-mode-map):
+ Bind them to C-cC-hp, C-cC-hP, respectively. </pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:prog-modes:ChangeLog">xemacs-packages/prog-modes/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-03 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 2.02 released.
+
+ * verilog-mode.el: Sync with upstream 4.2.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:text-modes:ChangeLog">xemacs-packages/text-modes/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-14 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.84 released.
+
+ * whitespace-visual-mode.el: New mode, successor to
+ old-whitespace-mode. Includes some bug fixes.
+
+2005-02-10 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.83 released.
+
+2005-02-10 Mike FABIAN <mfabian(a)suse.de>
+
+ * whitespace.el (whitespace-global-mode): Autoload a dummy autoload
+ instead of `define-minor-mode'.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:vhdl:ChangeLog">xemacs-packages/vhdl/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-14 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.20 released.
+
+2005-02-07 Jerry James <james(a)xemacs.org>
+
+ * vhdl-mode.el: Sync with version 3.33.2.
+ * Makefile (AUTHOR_VERSION): Change to 3.33.2.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:viper:ChangeLog">xemacs-packages/viper/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-02-19 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.38 released.
+
+2005-02-19 Michael Kifer <kifer(a)cs.stonybrook.edu>
+
+ * viper-cmd.el (viper-prefix-commands): make into a defconst.
+ (viper-exec-buffer-search): use regexp-quote to quote the buffer
+ string.
+ (viper-minibuffer-setup-sentinel): make some variables buffer-local.
+ (viper-skip-separators): bug fix.
+ (viper-set-searchstyle-toggling-macros): allow to unset macros in a
+ particular major mode.
+ (viper-del-backward-char-in-replace): don't put deleted char on the
+ kill ring.
+
+ * viper-ex.el (viper-color-display-p): new function.
+ (viper-has-face-support-p): use viper-color-display-p.
+
+ * viper-keym.el (viper-gnus-modifier-map): new keymap.
+
+ * viper-macs.el (viper-unrecord-kbd-macro): bug fix.
+
+ * viper-util.el (viper-glob-unix-files): fix shell status check.
+ (viper-file-remote-p): make equivalent to file-remote-p.
+
+ * viper.el (viper-major-mode-modifier-list): use
+ viper-gnus-modifier-map.</pre>
+ <h2>ChangeLog Entries from <a name="xemacs-packages:xemacs-base:ChangeLog">xemacs-packages/xemacs-base/ChangeLog</a></h2>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+ <pre xml:space="preserve">
+
+2005-03-05 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.96 released.
+
+2005-03-04 Vin Shelton <acs(a)xemacs.org>
+
+ * compile.el (find-grep): Aliases need to be quoted, apparently.
+
+2005-03-04 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.95 released.
+
+2005-02-26 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * compile.el (find-grep): Alias it to grep-find--if you're used to
+ the shell, find and _then_ grep is the word order that springs to
+ mind.</pre>
+ <p>goto <a href="#announcement">announcement</a>,
+ <a href="#changes">changes</a></p>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: xml
+sgml-omittag:nil
+sgml-shorttag:nil
+sgml-namecase-general:nil
+sgml-general-insert-case:lower
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:("../template.html" "html" "body" "table" "tr" "td")
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Index: Releases/index.content
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Releases/index.content,v
retrieving revision 1.98
diff -u -r1.98 index.content
--- Releases/index.content 21 Feb 2005 22:11:51 -0000 1.98
+++ Releases/index.content 8 Mar 2005 10:24:16 -0000
@@ -371,6 +371,7 @@
</p>
<ul>
+ <li><strong>2005-03-07</strong>: <a href="2005-03-07.html">[2005-03-07 release notice]</a> <a href="2005-03-07.html#changes">[changelogs]</a></li>
<li><strong>2005-01-18</strong>: <a href="2005-01-18.html">[2005-01-18 release notice]</a> <a href="2005-01-18.html#changes">[changelogs]</a></li>
<li><strong>2004-08-18</strong>: <a href="2004-08-18.html">[2004-08-18 release notice]</a> <a href="2004-08-18.html#changes">[changelogs]</a></li>
<li><strong>2004-05-17</strong>: <a href="2004-05-17.html">[2004-05-17 release notice]</a> <a href="2004-05-17.html#changes">[changelogs]</a></li>
[View Less]
[PATCH] Autoconf FAQ update.
19 years, 10 months
Malcolm Purvis
This is the autoconf 2.5 related changes to the FAQ and will make the FAQ
specific to 21.5. Should I recast this to describe 21.4 and 21.5 options in
the same document?
Malcolm
man/ChangeLog addition:
2005-03-05 Malcolm Purvis <malcolmp(a)xemacs.org>
* xemacs-faq.texi: Change configure arguments to the new autoconf 2.5
style.
xemacs-autoconf-2.5 source patch:
Diff command: cvs -q diff -u
Files affected: man/xemacs-faq.texi
Index: man/xemacs-faq.texi
=========================…
[View More]==========================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/man/xemacs-faq.texi,v
retrieving revision 1.84
diff -u -r1.84 xemacs-faq.texi
--- man/xemacs-faq.texi 2005/02/04 02:51:21 1.84
+++ man/xemacs-faq.texi 2005/03/05 10:28:26
@@ -1102,8 +1102,8 @@
sparc-sun-sunos4.1.4 (gcc)
@end example
-Some systems have a dual mode 32-bit/64-bit compiler. On most of
-these, XEmacs requires the @samp{--pdump} configure option to build
+Some systems have a dual mode 32-bit/64-bit compiler. On most of these,
+XEmacs requires the @samp{--enable-pdump} configure option to build
correctly with the 64-bit version of the compiler.
@example
@@ -3262,12 +3262,12 @@
@code{cd $prefix/lib/xemacs ; tar zxvf <tarballname>}
-If you have the packages somewhere nonstandard and don't want to
-bother with @samp{$prefix} (for example, you're a developer and are
-compiling the packages yourself, and want your own private copy of
-everything), you can also directly specify this using @file{configure}.
-To do this under 21.5 and above use the @samp{--package-prefix} parameter
-to specify the directory under which you untarred the above tarballs.
+If you have the packages somewhere nonstandard and don't want to bother
+with @samp{$prefix} (for example, you're a developer and are compiling
+the packages yourself, and want your own private copy of everything),
+you can also directly specify this using @file{configure}. To do this
+under 21.5 and above use the @samp{--with-package-prefix} parameter to
+specify the directory under which you untarred the above tarballs.
Under 21.4 and previous you need to use @samp{--package-path},
something like this:
@@ -3504,11 +3504,10 @@
under @file{/usr/local/lib/xemacs}.
You can specify where exactly XEmacs looks for packages by using the
-@samp{--package-prefix} or @samp{--package-path} parameters to
-@file{configure} (or the equivalent settings in @file{config.inc},
-under Windows), or setting the @samp{EMACSPACKAGEPATH} environment
-variable (which has the same format as @samp{--package-path}).
-(a)xref{Q2.1.1}.
+@samp{--with-package-prefix} or @samp{--with-package-path} parameters to
+@file{configure} (or the equivalent settings in @file{config.inc}, under
+Windows), or setting the @samp{EMACSPACKAGEPATH} environment variable
+(which has the same format as @samp{--with-package-path}). @xref{Q2.1.1}.
See @file{configure.usage} for more info about the format of these
@file{configure} parameters.
@@ -3547,14 +3546,14 @@
using the following flags to @file{configure}:
@example
---site-libraries=WHATEVER
---site-includes=WHATEVER
+--with-site-libraries=WHATEVER
+--with-site-includes=WHATEVER
@end example
If you have multiple paths to specify, use the following syntax:
@example
---site-libraries='/path/one /path/two /path/etc'
+--with-site-libraries='/path/one /path/two /path/etc'
@end example
@node Q2.2.2, Q2.3.1, Q2.2.1, Installation
@@ -3751,7 +3750,7 @@
@item
Specify the target location of the extra libs on the command line
to @file{configure}, e.g.
-(a)samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}.
+(a)samp{./configure --with-site-prefixes=/build/libs i586-pc-mingw32}.
@end itemize
@node Q2.3.7, Q2.3.8, Q2.3.6, Installation
@@ -3964,7 +3963,7 @@
the top-level source directory) to read what it says about your
platform.
-If you compiled XEmacs using @samp{--use-union-type} (or the option
+If you compiled XEmacs using @samp{--enable-union-type} (or the option
@samp{USE_UNION_TYPE} in @file{config.inc} under Windows), try
recompiling again without it. The union type has been known to trigger
compiler errors in a number of cases.
@@ -3982,14 +3981,14 @@
strongly recompiling your XEmacs with debugging symbols and with no
optimization (e.g. with GCC use the compiler flags @samp{-g -O0} --
that's an "oh" followed by a zero), and with the configure options
-@samp{--debug=yes} and @samp{--error-checking=all}. This will make
-your XEmacs run somewhat slower, but you are a lot more likely to
-catch the problem earlier (closer to its source). It makes it a lot
-easier to determine what's going on with a debugger. The way to
-control the compiler flags is with the configuration option
-@samp{--cflags}. If you have a recent version of 21.5, you should use
-@samp{--without-optimization} in preference to directly setting
-@samp{--cflags}.
+@samp{--enable-debug=yes} and @samp{--enable-error-checking=all}. This
+will make your XEmacs run somewhat slower, but you are a lot more likely
+to catch the problem earlier (closer to its source). It makes it a lot
+easier to determine what's going on with a debugger. The way to control
+the compiler flags is with the configuration option
+@samp{--with-cflags}. If you have a recent version of 21.5, you should
+use @samp{--without-optimization} in preference to directly setting
+@samp{--with-cflags}.
@item
If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie
@@ -4145,9 +4144,9 @@
If you're using a debugger to get a C stack backtrace and you're seeing
stack traces with some of the innermost frames mangled, it may be due to
dynamic linking. (This happens especially under Linux.) Consider
-reconfiguring with @samp{--dynamic=no}. Also, sometimes (again under
-Linux), stack backtraces of core dumps will have the frame where the
-fatal signal occurred mangled; if you can obtain a stack trace while
+reconfiguring with @samp{--with-dynamic=no}. Also, sometimes (again
+under Linux), stack backtraces of core dumps will have the frame where
+the fatal signal occurred mangled; if you can obtain a stack trace while
running the XEmacs process under a debugger, the stack trace should be
clean.
@@ -4292,9 +4291,9 @@
complex command run from a make suite, it may be easier to attach to
the process once it's running.
-Under Microsoft Windows (and perhaps other operating systems), there
-is another useful trick you can do if you have configured with
-debugging support (configure option @samp{--debug} or setting
+Under Microsoft Windows (and perhaps other operating systems), there is
+another useful trick you can do if you have configured with debugging
+support (configure option @samp{--with-debug} or setting
@samp{DEBUG_XEMACS} in @file{nt/config.inc}). Set the environment
variable @samp{XEMACSDEBUG} (as described above) to @samp{(setq
debug-on-error t)}. Then, when an error occurs noninteractively,
@@ -6439,15 +6438,15 @@
@uref{http://radscan.com/nas.html}.
-To build XEmacs with it, use the @file{configure} flag @samp{--with-sound=nas}.
+To build XEmacs with it, use the @file{configure} flag @samp{--enable--sound=nas}.
@dfn{Enlightened Sound Daemon} (ESD or EsounD) is yet another sound system.
@uref{http://www.tux.org/~ricdude/EsounD.html}.
-To build XEmacs with it, use the @file{configure} flag @samp{--with-sound=esd}.
+To build XEmacs with it, use the @file{configure} flag @samp{--enable-sound=esd}.
-You can specify support for both with a flag like @samp{--with-sound=nas,esd}.
+You can specify support for both with a flag like @samp{--enable-sound=nas,esd}.
@node Q5.3.4, Q5.4.1, Q5.3.3, External Subsystems
@unnumberedsubsec Q5.3.4: Sunsite sounds don't play.
@@ -6837,7 +6836,7 @@
defined by @code{/bin/mail}.
There are various different protocols in general use, which you need to
-specify using the @samp{--mail-locking} option to @file{configure}:
+specify using the @samp{--with-mail-locking} option to @file{configure}:
@table @samp
@item lockf
@@ -7759,9 +7758,9 @@
bignum @ref{Q7.2.2, XEmacs segfaults when I use very big numbers!}.
To configure with GNU MP, add
-@samp{--use-number-lib=gmp}
+@samp{--enable-bignum=gmp}
to your invocation of @file{configure}. For BSD MP, use
-@samp{--use-number-lib=mp}.
+@samp{--enable-bignum=mp}.
If you would like to help with bignum support, especially on BSD MP,
please subscribe to the @uref{http://www.xemacs.org/Lists/#xemacs-beta,
--
Malcolm Purvis <malcolmp(a)xemacs.org>
[View Less]
[C] xemacsweb: Typo and markup fixes for 21.4.17.content
19 years, 10 months
Adrian Aichner
COMMIT
Hello Vin, I think this is all non-controversial.
Vin, did you run
M-x release-mail-to-html
on the email announcement to produce this file?
In that case I would have a html-quoting bug to chase in that
function.
Best regards,
Adrian
xemacsweb ChangeLog patch:
Diff command: cvs -q diff -U 0
Files affected: Releases/ChangeLog
Index: Releases/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Releases/ChangeLog,v
…
[View More]retrieving revision 1.109
diff -u -U0 -r1.109 ChangeLog
--- Releases/ChangeLog 21 Feb 2005 22:11:51 -0000 1.109
+++ Releases/ChangeLog 6 Mar 2005 21:48:27 -0000
@@ -0,0 +1,4 @@
+2005-03-06 Adrian Aichner <adrian(a)xemacs.org>
+
+ * 21.4.17.content: Typo and markup fixes.
+
xemacsweb source patch:
Diff command: cvs -f -z3 -q diff -u -w -N
Files affected: Releases/21.4.17.content
Index: Releases/21.4.17.content
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Releases/21.4.17.content,v
retrieving revision 1.1
diff -u -w -r1.1 21.4.17.content
--- Releases/21.4.17.content 9 Feb 2005 02:20:12 -0000 1.1
+++ Releases/21.4.17.content 6 Mar 2005 21:45:09 -0000
@@ -10,7 +10,7 @@
<pre xml:space="preserve">
To: xemacs-announce(a)xemacs.org, xemacs-beta(a)xemacs.org
Subject: XEmacs-21.4.17 "Jumbo Shrimp" is released
-From: Vin Shelton <acs(a)xemacs.org>
+From: Vin Shelton <acs(a)xemacs.org>
Date: Sun, 06 Feb 2005 23:56:53 -0500
Organization: The XEmacs Development Team
Reply-To: xemacs-beta(a)xemacs.org
@@ -18,8 +18,8 @@
* XEmacs 21.4.17 "Jumbo Shrimp" is released.
"Jumbo Shrimp" is the seventeenth in the OXYMORON series.
-The latest stable release of XEmacs, XEmacs 21.4.17 - "Corporate
-Culture", is now available from xemacs.org and its mirrors.
+The latest stable release of XEmacs, XEmacs 21.4.17 - "Jumbo Shrimp",
+is now available from xemacs.org and its mirrors.
XEmacs 21.4.17 repairs a serious problem in the 21.4.16 release. This
problem could cause any package or lisp code using shy regexps to
@@ -802,7 +802,7 @@
From Andrey Slusar <anrays(a)gmail.com>:
* s/freebsd.h (LIBS_SYSTEM): Only set to "-lutil -lxpg4" if
- FreeBSD version is >= 199701 _and_ < 600006.
+ FreeBSD version is >= 199701 _and_ < 600006.
2005-01-06 Zajcev Evgeny <zevlg(a)yandex.ru>
--
Adrian Aichner
mailto:adrian@xemacs.org
http://www.xemacs.org/
[View Less]
[AC sjt-xft] straighten out tabs widget geometry management
19 years, 10 months
Stephen J. Turnbull
APPROVE COMMIT sjt-xft
Make the geometry manager in Falk's tabs widget more Xt-conforming.
Suppress some lingering currently uninteresting debug output.
I don't think behavior should change, but with Xt undefined behavior
is hard to predict.
Index: lwlib/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v
retrieving revision 1.64.2.5
diff -u -r1.64.2.5 ChangeLog
--- lwlib/ChangeLog 22 Feb 2005 13:03:20 -0000 …
[View More]1.64.2.5
+++ lwlib/ChangeLog 7 Mar 2005 01:57:42 -0000
@@ -0,0 +1,8 @@
+2005-03-07 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * lwlib-Xaw.c (debug_gauge): Fix and suppress gauge debug message.
+
+ * xlwtabs.c (TabsGeometryManager): Suppress "kludging" message, too.
+ (TabsGeometryManager): Make straight the paths of the layout, or
+ at least improve the approximation to Xt conventions by 50%.
+
Index: lwlib/lwlib-Xaw.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/lwlib-Xaw.c,v
retrieving revision 1.11.2.1
diff -u -r1.11.2.1 lwlib-Xaw.c
--- lwlib/lwlib-Xaw.c 10 Dec 2004 06:43:25 -0000 1.11.2.1
+++ lwlib/lwlib-Xaw.c 7 Mar 2005 01:57:42 -0000
@@ -801,14 +801,14 @@
return label;
}
-static int debug_gauge = 1;
+static int debug_gauge = 0;
static void
lw_debug_print_xt_arglist (ArgList al, int ac)
{
int i;
for (i = 0; i < ac; i++)
- fprintf (stderr, "Widget has arg of type %s with value %lu.\n",
+ fprintf (stderr, "Widget has arg %s with value %lu.\n",
al[i].name, (unsigned long) al[i].value);
}
Index: lwlib/xlwtabs.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwtabs.c,v
retrieving revision 1.4.2.7
diff -u -r1.4.2.7 xlwtabs.c
--- lwlib/xlwtabs.c 22 Feb 2005 13:03:20 -0000 1.4.2.7
+++ lwlib/xlwtabs.c 7 Mar 2005 01:57:43 -0000
@@ -902,62 +902,72 @@
TabsWidget control = (TabsWidget) XtParent(tab);
Dimension s = SHADWID;
TabsConstraints constraint = (TabsConstraints) tab->core.constraints;
- XtGeometryResult result;
+ XtGeometryResult result, best_offer = XtGeometryYes;
Dimension rw, rh;
static int debug_count = 0;
static int debug_mask = 1;
- /* Position request always denied
- #### This is the wrong way to do this. If other parts of the
- request can be satisfied, should return XtGeometryAlmost. */
-
- if (((request->request_mode & CWX) && request->x != tab->core.x) ||
- ((request->request_mode & CWY) && request->y != tab->core.y) ||
- !constraint->tabs.resizable)
+ /* Position request cannot be satisfied, so if tabs are not resizable,
+ no request can be satisfied: return XGeometryNo. */
+ if (!constraint->tabs.resizable)
return XtGeometryNo;
- /* Make all three fields in the request valid */
- if (!(request->request_mode & CWWidth))
- request->width = tab->core.width;
- if (!(request->request_mode & CWHeight))
- request->height = tab->core.height;
- if (!(request->request_mode & CWBorderWidth))
- request->border_width = tab->core.border_width;
+ /* Assume we will refuse these; toggle iff we accept them.
+ Reply won't specify any fields not in the request. */
+ reply->request_mode = request->request_mode;
+ reply->x = tab->core.x;
+ reply->y = tab->core.y;
+
+ /* If a position request would result in a change, best offer is
+ XtGeometryAlmost. Otherwise toggle reply->request_mode. */
+ if ((request->request_mode & CWX) && request->x != tab->core.x)
+ best_offer = XtGeometryAlmost;
+ else
+ reply->request_mode &= ~CWX;
+ if ((request->request_mode & CWY) && request->y != tab->core.y)
+ best_offer = XtGeometryAlmost;
+ else
+ reply->request_mode &= ~CWY;
+
+ /* Make all three fields in the reply valid */
+ reply->width = (request->request_mode & CWWidth)
+ ? request->width : tab->core.width;
+ reply->height = (request->request_mode & CWHeight)
+ ? request->height : tab->core.height;
+ reply->border_width = (request->request_mode & CWBorderWidth)
+ ? request->border_width : tab->core.border_width;
+
+ /* check if we can already offer a compromise */
+ if (best_offer == XtGeometryAlmost &&
+ reply->width == tab->core.width &&
+ reply->height == tab->core.height &&
+ reply->border_width == tab->core.border_width)
+ return best_offer;
#ifndef DONT_DEBUG_REQUESTS
-#define DBG_REQUEST_PRINT(field,size) \
+#define DBG_REQUEST_PRINT(name,field,size) \
do { \
- if (request->field > size) \
+ if (reply->field > size) \
{ \
if (++debug_count == debug_mask) \
{ \
debug_mask <<= 1; \
- fprintf (stderr, "ridiculous request #%d: field %d > %d\n", \
- debug_count, request->field, size); \
+ fprintf (stderr, "ridiculous %s request #%d: %d > %d\n", \
+ name, debug_count, reply->field, size); \
} \
- request->field = tab->core.field; \
+ reply->field = tab->core.field; \
} \
} while (0)
- DBG_REQUEST_PRINT (width,1024);
- DBG_REQUEST_PRINT (height,768);
- DBG_REQUEST_PRINT (border_width,100);
+ DBG_REQUEST_PRINT ("width",width,1024);
+ DBG_REQUEST_PRINT ("height",height,768);
+ DBG_REQUEST_PRINT ("border_width",border_width,30);
#undef DBG_REQUEST_PRINT
#endif
-#if 0
- /* #### this is NONSENSE, isn't it?
- AFAICT XtMakeGeometryRequest would already have returned
- XtGeometryYes in this case. */
- if (request->width == tab->core.width &&
- request->height == tab->core.height &&
- request->border_width == tab->core.border_width)
- return XtGeometryNo;
-#endif
-
- rw = request->width + 2 * request->border_width;
- rh = request->height + 2 * request->border_width;
+ rw = reply->width + 2 * reply->border_width;
+ rh = reply->height + 2 * reply->border_width;
/* find out how big the children want to be now */
MaxChild (control, tab, rw, rh);
@@ -1004,7 +1014,7 @@
/* Would my size change? If so, ask to be resized. */
- if( wid != control->core.width || hgt != control->core.height )
+ if (wid != control->core.width || hgt != control->core.height)
{
Dimension oldWid = control->core.width,
oldHgt = control->core.height;
@@ -1019,8 +1029,8 @@
* offer the child a compromise, then make this a query only.
*/
- if( (request->request_mode & XtCWQueryOnly) || rw < cw || rh < ch )
- myrequest.request_mode |= XtCWQueryOnly ;
+ if ((request->request_mode & XtCWQueryOnly) || rw < cw || rh < ch)
+ myrequest.request_mode |= XtCWQueryOnly;
result = XtMakeGeometryRequest ((Widget) control,
&myrequest, &myreply);
@@ -1040,7 +1050,7 @@
* resulting Tabs widget size would be.
*/
- switch( result ) {
+ switch (result) {
case XtGeometryYes:
case XtGeometryDone:
control->tabs.needs_layout = True;
@@ -1074,9 +1084,10 @@
get triggered forever after */
int n = control->composite.num_children;
ah = control->tabs.tab_height;
- fprintf (stderr, "Kludging around %d != 1 rows, #children = %d,"
- " total height %d, using %d.\n",
- check_nrows, n, th, ah);
+ if (debug_tabs > 0)
+ fprintf (stderr, "Kludging around %d != 1 rows,"
+ " #children = %d, total height %d, using %d.\n",
+ check_nrows, n, th, ah);
}
/* OK, make our decision. If requested size is >= max sibling
@@ -1084,19 +1095,22 @@
* we accept. Otherwise, we offer a compromise.
*/
- if( rw == aw && rh == ah )
+ if (rw == aw && rh == ah)
{
/* Acceptable. If this wasn't a query, change *all* children
* to this size.
*/
- if( request->request_mode & XtCWQueryOnly )
- return XtGeometryYes ;
+ if (request->request_mode & XtCWQueryOnly)
+ {
+ control->tabs.needs_layout = False;
+ return XtGeometryYes ;
+ }
else
{
Widget *childP = control->composite.children;
- int i,bw;
+ int i, bw;
tab->core.border_width = request->border_width;
- for(i = TabsNumChildren (control); --i >= 0; ++childP)
+ for (i = TabsNumChildren (control); --i >= 0; ++childP)
if (TabVisible (*childP))
{
bw = (*childP)->core.border_width;
@@ -1119,8 +1133,7 @@
*/
reply->width = aw - 2 * request->border_width ;
reply->height = ah - 2 * request->border_width ;
- reply->border_width = request->border_width ;
- reply->request_mode = CWWidth | CWHeight | CWBorderWidth ;
+ control->tabs.needs_layout = False;
return XtGeometryAlmost ;
}
@@ -2129,8 +2142,8 @@
- /* Find max preferred child size. Returned sizes include child
- * border widths. If except is non-null, don't ask that one.
+ /* Find max preferred child size and store in control widget.
+ * If except is non-null, don't ask that one.
*/
static void
--
Institute of Policy and Planning Sciences http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
Ask not how you can "do" free software business;
ask what your business can "do for" free software.
[View Less]
[PATCH] find-grep alias needs quoting
19 years, 10 months
Vin Shelton
Without these quotes, I get the following error when compiling
browse-url.el:
Compiling /ide/build/xemacs-packages-2005-03-04/xemacs-packages/mail-lib/browse-url.el...
While compiling toplevel forms in file /ide/build/xemacs-packages-2005-03-04/xemacs-packages/mail-lib/browse-url.el:
!! Symbol's value as variable is void ((find-grep))
backtrace(nil t)
# bind (error-info)
byte-compile-report-error((void-variable find-grep))
# bind (error-info)
#<compiled-function (error-info) "...…
[View More](4)" [error-info byte-compile-report-error] 2>((void-variable find-grep))
(defalias find-grep grep-find)
# bind (current-load-list)
# (unwind-protect ...)
# bind (load-file-name)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
load-internal("compile" nil t nil nil nil)
# bind (nosuffix nomessage noerror file)
load("compile" nil t nil)
# (unwind-protect ...)
require(compile)
(progn (require (quote compile)))
eval((progn (require (quote compile))))
# bind (sym def G75823)
# (unwind-protect ...)
# bind (save-macro-environment form)
byte-compile-eval((progn (require (quote compile))))
(list (quote quote) (byte-compile-eval (cons ... body)))
# bind (body)
(lambda (&rest body) (list (quote quote) (byte-compile-eval ...)))((require (quote compile)))
(eval-when-compile (require (quote compile)))
# bind (current-load-list)
# (unwind-protect ...)
# bind (load-file-name)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
# (unwind-protect ...)
load-internal("executable" nil t nil nil nil)
# bind (nosuffix nomessage noerror file)
load("executable" nil t nil)
# (unwind-protect ...)
require(executable)
(progn (require (quote thingatpt)) (require (quote term)) (require (quote executable)))
eval((progn (require (quote thingatpt)) (require (quote term)) (require (quote executable))))
# bind (sym def G75823)
# (unwind-protect ...)
# bind (save-macro-environment form)
byte-compile-eval((progn (require (quote thingatpt)) (require (quote term)) (require (quote executable))))
(list (quote quote) (byte-compile-eval (cons ... body)))
# bind (body)
(lambda (&rest body) (list (quote quote) (byte-compile-eval ...)))((require (quote thingatpt)) (require (quote term)) (require (quote executable)))
#<subr macroexpand-internal>((eval-when-compile (require (quote thingatpt)) (require (quote term)) (require (quote executable))) ((byte-compiler-options lambda (&rest forms) (apply ... forms)) (eval-when-compile lambda (&rest body) (list ... ...)) (eval-and-compile lambda (&rest body) (byte-compile-eval ...) (cons ... body))))
# bind (cl-macro-environment cl-env cl-macro)
macroexpand((eval-when-compile (require (quote thingatpt)) (require (quote term)) (require (quote executable))) ((byte-compiler-options lambda (&rest forms) (apply ... forms)) (eval-when-compile lambda (&rest body) (list ... ...)) (eval-and-compile lambda (&rest body) (byte-compile-eval ...) (cons ... body))))
# bind (byte-compile-current-form handler form)
byte-compile-file-form((eval-when-compile (require (quote thingatpt)) (require (quote term)) (require (quote executable))))
# (unwind-protect ...)
#<compiled-function nil "...(43)" [byte-compile-unresolved-functions byte-compile-inbuffer 1 " \n" nil looking-at ";" byte-compile-file-form read byte-compile-flush-pending byte-compile-warn-about-unresolved-functions] 3>()
# (unwind-protect ...)
call-with-condition-handler(#<compiled-function (error-info) "...(4)" [error-info byte-compile-report-error] 2> #<compiled-function nil "...(43)" [byte-compile-unresolved-functions byte-compile-inbuffer 1 " \n" nil looking-at ";" byte-compile-file-form read byte-compile-flush-pending byte-compile-warn-about-unresolved-functions] 3>)
# (unwind-protect ...)
# bind (byte-compile-warnings-beginning byte-compile-point-max-prev byte-compile-log-buffer byte-compile-macro-environment byte-compile-function-environment byte-compile-autoload-environment byte-compile-unresolved-functions byte-compile-bound-variables byte-compile-free-references byte-compile-free-assignments byte-compile-verbose byte-optimize byte-compile-emacs19-compatibility byte-compile-dynamic byte-compile-dynamic-docstrings byte-compile-warnings byte-compile-file-domain byte-compile-outbuffer float-output-format case-fold-search print-length print-level byte-compile-constants byte-compile-variables byte-compile-tag-number byte-compile-depth byte-compile-maxdepth byte-compile-output eval filename byte-compile-inbuffer)
byte-compile-from-buffer(#<buffer " *Compiler Input*"> "/ide/build/xemacs-packages-2005-03-04/xemacs-packages/mail-lib/browse-url.el")
# bind (byte-compile-current-file target-file input-buffer output-buffer byte-compile-dest-file load filename)
byte-compile-file("browse-url.el")
byte-code("..." [file byte-compile-file t] 2)
# (condition-case ... . ((error (byte-code "ÂÃ!Â!ÂÄ!ÅÆ!«Æ Ç\"ªÂ @ÈN® @!ÉÊ A\"ÂË!Ç" ... 3))))
# bind (file)
batch-byte-compile-1("browse-url.el")
# bind (error file-to-process)
batch-byte-compile-one-file()
# bind (error)
batch-byte-compile()
# bind (arg)
command-line-do-funcall("-f")
# bind (dir file-count line end-of-options file-p arg tem)
command-line-1()
# bind (command-line-args-left)
command-line()
# (condition-case ... . ((t (byte-code " Â" ... 1))))
# bind (error-data)
normal-top-level()
# (condition-case ... . error)
# (catch top-level ...)
>>Error occurred processing browse-url.el:
Symbol's value as variable is void: find-grep
xemacs-packages/xemacs-base/ChangeLog addition:
2005-03-04 Vin Shelton <acs(a)xemacs.org>
* compile.el (find-grep): Aliases need to be quoted, apparently.
packages source patch:
Diff command: cvs -q diff -u
Files affected: xemacs-packages/xemacs-base/compile.el
Index: xemacs-packages/xemacs-base/compile.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/xemacs-base/compile.el,v
retrieving revision 1.33
diff -a -u -u -r1.33 compile.el
--- xemacs-packages/xemacs-base/compile.el 2005/03/04 19:38:35 1.33
+++ xemacs-packages/xemacs-base/compile.el 2005/03/05 04:15:50
@@ -769,7 +769,7 @@
(grep command-args)))
;; XEmacs addition
-(defalias find-grep grep-find)
+(defalias 'find-grep 'grep-find)
;; XEmacs addition: all grep-all-files stuff
[View Less]
[AC sjt-xft] Refactor charset/lang checking
19 years, 10 months
Stephen J. Turnbull
AC sjt-xft
Big user-visible change: Xft debug level is now Lisp-accessible in
xft-debug-level, a primitive Lisp integer variable. I've turned debug
information back on, but you can stifle it after the initialization
phase with (setq xft-debug-level 0) in init.el.
The window manager debug information has been suppressed, that won't
come back.
This patch adds font charset support checking for multi-language
character sets like Latin-1, and extends the language-based checking
to Greek, …
[View More]Korean, simplified Chinese, and traditional Chinese. I
don't really know if it works, but it should be easier to see what's
going on so that people who actually use Latin-X etc can start to
debug it.
Also, I've started work on refactoring font.el. So far limited to
removing unused or irrelevant junk, like the font-running-xemacs
variable and the code to make keywords evaluate to themselves (since
keywords have been supported natively for aeons).
Index: lisp/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v
retrieving revision 1.599.2.4
diff -u -r1.599.2.4 ChangeLog
--- lisp/ChangeLog 1 Mar 2005 13:14:00 -0000 1.599.2.4
+++ lisp/ChangeLog 5 Mar 2005 11:21:45 -0000
@@ -0,0 +1,18 @@
+2005-03-02 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * font.el (font-running-xemacs): Remove definition.
+ (font-x-font-regexp):
+ (font-x-registry-and-encoding-regexp):
+ (font-default-font-for-device):
+ (x-font-create-name-core):
+ (mswindows-font-create-name):
+ (font-set-face-font):
+ (font-blink-callback):
+ Remove references.
+
+ (define-font-keywords): Remove definition and top-level references.
+
+ (set-font-style-by-keywords):
+ (font-properties-from-style):
+ Comment out.
+
Index: lisp/font.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/font.el,v
retrieving revision 1.15.2.2
diff -u -r1.15.2.2 font.el
--- lisp/font.el 1 Mar 2005 13:14:01 -0000 1.15.2.2
+++ lisp/font.el 5 Mar 2005 11:21:45 -0000
@@ -29,6 +29,18 @@
;;; Commentary:
+;; This file is totally bogus in the context of Emacs. Much of what it does
+;; is really in the provice of faces (for example all the style parameters),
+;; and that's the way it is in GNU Emacs.
+;;
+;; What is needed for fonts at the Lisp level is a consistent way to access
+;; face properties that are actually associated with fonts for some rendering
+;; engine, in other words, the kinds of facilities provided by fontconfig
+;; patterns. We just need to provide an interface to looking up, storing,
+;; and manipulating font specifications with certain properties. There will
+;; be some engine-specific stuff, like the bogosity of X11's character set
+;; registries.
+
;;; Code:
(globally-declare-fboundp
@@ -96,23 +108,14 @@
;;; Lots of variables / keywords for use later in the program
;;; Not much should need to be modified
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defconst font-running-xemacs (string-match "XEmacs" (emacs-version))
- "Whether we are running in XEmacs or not.")
-
-(defmacro define-font-keywords (&rest keys)
- `(eval-and-compile
- (let ((keywords (quote ,keys)))
- (while keywords
- (or (boundp (car keywords))
- (set (car keywords) (car keywords)))
- (setq keywords (cdr keywords))))))
-
+;; #### These aren't window system mappings
(defconst font-window-system-mappings
'((x . (x-font-create-name x-font-create-object))
(gtk . (x-font-create-name x-font-create-object))
(ns . (ns-font-create-name ns-font-create-object))
(mswindows . (mswindows-font-create-name mswindows-font-create-object))
(pm . (x-font-create-name x-font-create-object)) ; Change? FIXME
+ ;; #### what is this bogosity?
(tty . (tty-font-create-plist tty-font-create-object)))
"An assoc list mapping device types to a list of translations.
@@ -155,12 +158,11 @@
"How much a font is allowed to vary from the desired size.")
;; Canonical (internal) sizes are in points.
-;; Registry
-(define-font-keywords:family :style :size :registry :encoding)
-(define-font-keywords
-:weight :extra-light :light :demi-light :medium :normal :demi-bold
-:bold :extra-bold)
+;; Property keywords: :family :style :size :registry :encoding :weight
+;; Weight keywords: :extra-light :light :demi-light :medium
+;;:normal :demi-bold :bold :extra-bold
+;; See GNU Emacs 21.4 for more properties and keywords we should support
(defvar font-style-keywords nil)
@@ -268,27 +270,31 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Utility functions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defun set-font-style-by-keywords (fontobj styles)
- (make-local-variable 'font-func)
- (declare (special font-func))
- (if (listp styles)
- (while styles
- (setq font-func (car-safe (cdr-safe (assq (car styles) font-style-keywords)))
- styles (cdr styles))
- (and (fboundp font-func) (funcall font-func fontobj t)))
- (setq font-func (car-safe (cdr-safe (assq styles font-style-keywords))))
- (and (fboundp font-func) (funcall font-func fontobj t))))
-
-(defun font-properties-from-style (fontobj)
- (let ((todo font-style-keywords)
- type func retval)
- (while todo
- (setq func (cdr (cdr (car todo)))
- type (car (pop todo)))
- (if (funcall func fontobj)
- (setq retval (cons type retval))))
- retval))
+;; #### unused?
+; (defun set-font-style-by-keywords (fontobj styles)
+; (make-local-variable 'font-func)
+; (declare (special font-func))
+; (if (listp styles)
+; (while styles
+; (setq font-func (car-safe (cdr-safe (assq (car styles)
+; font-style-keywords)))
+; styles (cdr styles))
+; (and (fboundp font-func) (funcall font-func fontobj t)))
+; (setq font-func (car-safe (cdr-safe (assq styles font-style-keywords))))
+; (and (fboundp font-func) (funcall font-func fontobj t))))
+
+;; #### unused?
+; (defun font-properties-from-style (fontobj)
+; (let ((todo font-style-keywords)
+; type func retval)
+; (while todo
+; (setq func (cdr (cdr (car todo)))
+; type (car (pop todo)))
+; (if (funcall func fontobj)
+; (setq retval (cons type retval))))
+; retval))
+;; #### only used in this file; maybe there's a cl.el function?
(defun font-unique (list)
(let ((retval)
(cur))
@@ -475,9 +481,8 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; The window-system dependent code (X-style)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defvar font-x-font-regexp (or (and font-running-xemacs
- (boundp 'x-font-regexp)
- x-font-regexp)
+(defvar font-x-font-regexp (when (and (boundp 'x-font-regexp)
+ x-font-regexp)
(let
((- "[-?]")
(foundry "[^-]*")
@@ -504,13 +509,12 @@
))))
(defvar font-x-registry-and-encoding-regexp
- (or (and font-running-xemacs
- (boundp 'x-font-regexp-registry-and-encoding)
- (symbol-value 'x-font-regexp-registry-and-encoding))
- (let ((- "[-?]")
- (registry "[^-]*")
- (encoding "[^-]+"))
- (concat - "\\(" registry "\\)" - "\\(" encoding "\\)\\'"))))
+ (when (and (boundp 'x-font-regexp-registry-and-encoding)
+ (symbol-value 'x-font-regexp-registry-and-encoding))
+ (let ((- "[-?]")
+ (registry "[^-]*")
+ (encoding "[^-]+"))
+ (concat - "\\(" registry "\\)" - "\\(" encoding "\\)\\'"))))
(defvar font-x-family-mappings
'(
@@ -638,14 +642,13 @@
;;;###autoload
(defun font-default-font-for-device (&optional device)
(or device (setq device (selected-device)))
- (if font-running-xemacs
- (font-truename
- (make-font-specifier
- (face-font-name 'default device)))
+ (font-truename
+ (make-font-specifier
+ (face-font-name 'default device)))
(let ((font (cdr-safe (assq 'font (frame-parameters device)))))
(if (and (fboundp 'fontsetp) (fontsetp font))
(aref (get-font-info (aref (cdr (get-fontset-info font)) 0)) 2)
- font))))
+ font)))
;;;###autoload
(defun font-default-object-for-device (&optional device)
@@ -702,8 +705,7 @@
(font-family default)
(x-font-families-for-device device)))
(weight (or (font-weight fontobj) :medium))
- (size (or (if font-running-xemacs
- (font-size fontobj))
+ (size (or (font-size fontobj)
(font-size default)))
(registry (or (font-registry fontobj)
(font-registry default)
@@ -916,8 +918,7 @@
(family (or (font-family fontobj)
(font-family default)))
(weight (or (font-weight fontobj) :regular))
- (size (or (if font-running-xemacs
- (font-size fontobj))
+ (size (or (font-size fontobj)
(font-size default)))
(underline-p (font-underline-p fontobj))
(strikeout-p (font-strikethru-p fontobj))
@@ -1013,7 +1014,7 @@
(setq cur (car font-name)
font-name (cdr font-name))
(apply 'set-face-property face (car cur) (cdr cur) args))))
- (font-running-xemacs
+ (t
(apply 'set-face-font face font-name args)
(apply 'set-face-underline-p face (font-underline-p font) args)
(if (and (or (font-smallcaps-p font) (font-bigcaps-p font))
@@ -1024,16 +1025,18 @@
(font-linethrough-p font)
(font-strikethru-p font))
args))
- (t
- (condition-case nil
- (apply 'set-face-font face font-name args)
- (error
- (let ((args (car-safe args)))
- (and (or (font-bold-p font)
- (memq (font-weight font) '(:bold :demi-bold)))
- (make-face-bold face args t))
- (and (font-italic-p font) (make-face-italic face args t)))))
- (apply 'set-face-underline-p face (font-underline-p font) args)))))
+;;; this used to be default with preceding conditioned on font-running-xemacs
+; (t
+; (condition-case nil
+; (apply 'set-face-font face font-name args)
+; (error
+; (let ((args (car-safe args)))
+; (and (or (font-bold-p font)
+; (memq (font-weight font) '(:bold :demi-bold)))
+; (make-face-bold face args t))
+; (and (font-italic-p font) (make-face-italic face args t)))))
+; (apply 'set-face-underline-p face (font-underline-p font) args))
+ )))
(t
;; Let the original set-face-font signal any errors
(set-face-property face 'font-specification nil)
@@ -1408,13 +1411,14 @@
(defun font-blink-callback ()
;; Optimized to never invert the face unless one of the visible windows
;; is showing it.
- (let ((faces (if font-running-xemacs (face-list t) (face-list)))
+ (let ((faces (face-list t))
(obj nil))
(while faces
(if (and (setq obj (face-property (car faces) 'font-specification))
(font-blink-p obj)
(memq t
- (font-map-windows 'font-face-visible-in-window-p (car faces))))
+ (font-map-windows 'font-face-visible-in-window-p
+ (car faces))))
(invert-face (car faces)))
(pop faces))))
Index: src/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.758.2.15
diff -u -r1.758.2.15 ChangeLog
--- src/ChangeLog 24 Feb 2005 11:08:24 -0000 1.758.2.15
+++ src/ChangeLog 5 Mar 2005 11:22:04 -0000
@@ -0,0 +1,56 @@
+2005-03-05 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ Refactor language/charset checking in Xft.
+
+ * objects-x.c (struct charset_reporter): New type.
+ (charset_table): New internal table.
+ (DEBUG_XFT0):
+ (DEBUG_XFT1):
+ (DEBUG_XFT2):
+ (PRINT_XFT_PATTERN):
+ (CHECKING_LANG):
+ New debugging macros.
+ (mule_to_fc_charset): New function.
+ (x_find_charset_font): Completely rewrite Xft part using the above.
+
+ Cache knowledge of charset in font instances.
+
+ * objects-impl.h (struct Lisp_Font_Instance): New member charset.
+ Update comment on use of truename.
+ * objects.c (syms_of_objects): DEFSUBR Ffont_instance_charset.
+ (Ffont_instance_charset): New accessor.
+ (Fmake_font_instance): New argument CHARSET, update charset member.
+ (font_instantiate): Update call to Fmake_font_instance.
+ (font_instance_description): Add charset member.
+ * objects.h (Fmake_font_instance): Update EXFUN.
+ (Ffont_instance_charset): New EXFUN.
+
+ Make Xft debug level adjustable from Lisp.
+
+ * xft-fonts.c (vars_of_xft_fonts): New DEFVAR_INT
+ xft-debug-level (from debug_xft), adjust style of xft-version.
+ * xft-fonts.h (debug_xft): Now Lisp-visible, change declaration.
+
+ Miscellaneous.
+
+ * lisp.h (Vcharset_iso8859_15): Export it.
+ * faces.h (struct face_cachel): Update comment on space usage.
+ * faces.c: Comment proposed changes to improve font handling.
+ * frame-x.c:
+ * EmacsShell-sub.c:
+ Disable geometry debugging.
+
+2005-02-24 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * xft-fonts.h:
+ * xft-fonts.c:
+ Update copyright notices.
+
+ * xft.fonts.h (string_list_to_fcobjectset):
+ (extract_fcapi_string):
+ Delete; static function declarations don't belong in headers.
+
+ * xft.fonts.c (string_list_to_fcobjectset):
+ (extract_fcapi_string):
+ Declare.
+
Index: src/EmacsShell-sub.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/EmacsShell-sub.c,v
retrieving revision 1.6.2.1
diff -u -r1.6.2.1 EmacsShell-sub.c
--- src/EmacsShell-sub.c 1 Feb 2005 15:46:52 -0000 1.6.2.1
+++ src/EmacsShell-sub.c 5 Mar 2005 11:22:04 -0000
@@ -245,7 +245,6 @@
cell_height = w->wm.size_hints.height_inc;
base_width = width - cell_width * w->emacs_shell.width_cells;
base_height = height - cell_height * w->emacs_shell.height_cells;
-#define DEBUG_GEOMETRY_MANAGEMENT
#ifdef DEBUG_GEOMETRY_MANAGEMENT
/* Very useful info when debugging geometry management problems.
When it's guaranteed that no more such problems exist, take
Index: src/faces.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/faces.c,v
retrieving revision 1.43.2.3
diff -u -r1.43.2.3 faces.c
--- src/faces.c 24 Feb 2005 09:32:27 -0000 1.43.2.3
+++ src/faces.c 5 Mar 2005 11:22:05 -0000
@@ -1033,7 +1033,10 @@
}
/* ensure that the given cachel contains an updated font value for
- the given charset. Return the updated font value. */
+ the given charset. Return the updated font value (which can be
+ Qunbound, so this value must not be passed unchecked to Lisp).
+
+ #### Xft: This function will need to be updated for new font model. */
Lisp_Object
ensure_face_cachel_contains_charset (struct face_cachel *cachel,
@@ -1384,6 +1387,7 @@
}
/* Initialize a cachel. */
+/* #### Xft: this function will need to be changed for new font model. */
void
reset_face_cachel (struct face_cachel *cachel)
@@ -1465,6 +1469,7 @@
Dynarr_atp (w->face_cachels, elt)->dirty = 0;
}
+/* #### Xft: this function will need to be changed for new font model. */
void
mark_face_cachels_as_not_updated (struct window *w)
{
@@ -2019,7 +2024,9 @@
/* Note that fontconfig can search for several font families in one
call. We should use this facility. */
"monospace-12", /* Western #### add encoding info? */
- /* do we need to worry about non-Latin characters for monospace? */
+ /* do we need to worry about non-Latin characters for monospace?
+ No, at least in Debian's implementation of Xft.
+ We should recommend that "gothic" and "mincho" aliases be created? */
"Sazanami Mincho-12", /* Japanese #### add encoding info? */
/* Arphic for Chinese? */
/* Korean */
@@ -2107,7 +2114,8 @@
charset. (#### Bogus, but that's the way it currently works)
sjt sez: With Xft/fontconfig that information is available as a
- language support property. So what we need to do is to map charset
+ language support property. The character set (actually a bit
+ vector) is also available. So what we need to do is to map charset
-> language (Mule redesign Phase 1) and eventually use language
information in the buffer, then map to charsets (Phase 2) at font
instantiation time.
Index: src/faces.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/faces.h,v
retrieving revision 1.12.8.1
diff -u -r1.12.8.1 faces.h
--- src/faces.h 25 Nov 2004 12:44:13 -0000 1.12.8.1
+++ src/faces.h 5 Mar 2005 11:22:06 -0000
@@ -161,7 +161,9 @@
of them. This avoids messing with Dynarrs.
#### We should look into this and probably clean it up
- to use Dynarrs. This may be a big space hog as is. */
+ to use Dynarrs. This may be a big space hog as is.
+ sjt sez: doesn't look like it, my total face cache is 170KB.
+ Could be reduced to maybe 50KB. */
Lisp_Object font[NUM_LEADING_BYTES];
Lisp_Object display_table;
Index: src/frame-x.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/frame-x.c,v
retrieving revision 1.68.2.2
diff -u -r1.68.2.2 frame-x.c
--- src/frame-x.c 1 Feb 2005 15:46:54 -0000 1.68.2.2
+++ src/frame-x.c 5 Mar 2005 11:22:07 -0000
@@ -283,7 +283,6 @@
if (!XtIsWMShell (wmshell))
abort ();
-#define DEBUG_GEOMETRY_MANAGEMENT
#ifdef DEBUG_GEOMETRY_MANAGEMENT
/* See comment in EmacsShell.c */
printf ("x_wm_set_variable_size: %d %d\n", width, height);
Index: src/lisp.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lisp.h,v
retrieving revision 1.116.2.1
diff -u -r1.116.2.1 lisp.h
--- src/lisp.h 11 Dec 2004 05:16:19 -0000 1.116.2.1
+++ src/lisp.h 5 Mar 2005 11:22:09 -0000
@@ -4851,6 +4851,7 @@
extern Lisp_Object Vcharset_latin_jisx0201;
extern Lisp_Object Vcharset_cyrillic_iso8859_5;
extern Lisp_Object Vcharset_latin_iso8859_9;
+extern Lisp_Object Vcharset_latin_iso8859_15;
extern Lisp_Object Vcharset_japanese_jisx0208_1978;
extern Lisp_Object Vcharset_chinese_gb2312;
extern Lisp_Object Vcharset_japanese_jisx0208;
Index: src/objects-impl.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-impl.h,v
retrieving revision 1.3
diff -u -r1.3 objects-impl.h
--- src/objects-impl.h 12 Jan 2003 11:08:19 -0000 1.3
+++ src/objects-impl.h 5 Mar 2005 11:22:09 -0000
@@ -125,8 +125,13 @@
call them to get the truename (#### in reality,
they all probably just store the truename here
if they know it, and nil otherwise; we should
- check this and enforce it as a general policy) */
+ check this and enforce it as a general policy
+ X and GTK do this, except that when they don't
+ know they return NAME and don't update TRUENAME.
+ MS Windows initializes TRUENAME when the font is
+ initialized. TTY doesn't do truename.) */
Lisp_Object device;
+ Lisp_Object charset; /* Mule charset, or whatever */
/* See comment in struct console about console variants. */
enum console_variant font_instance_type;
@@ -142,7 +147,8 @@
};
#define FONT_INSTANCE_NAME(f) ((f)->name)
-#define FONT_INSTANCE_TRUENAME(f) ((f)->name)
+#define FONT_INSTANCE_TRUENAME(f) ((f)->truename)
+#define FONT_INSTANCE_CHARSET(f) ((f)->charset)
#define FONT_INSTANCE_DEVICE(f) ((f)->device)
#define FONT_INSTANCE_ASCENT(f) ((f)->ascent)
#define FONT_INSTANCE_DESCENT(f) ((f)->descent)
@@ -151,6 +157,7 @@
#define XFONT_INSTANCE_NAME(f) FONT_INSTANCE_NAME (XFONT_INSTANCE (f))
#define XFONT_INSTANCE_TRUENAME(f) FONT_INSTANCE_TRUENAME (XFONT_INSTANCE (f))
+#define XFONT_INSTANCE_CHARSET(f) FONT_INSTANCE_CHARSET (XFONT_INSTANCE (f))
#define XFONT_INSTANCE_DEVICE(f) FONT_INSTANCE_DEVICE (XFONT_INSTANCE (f))
#define XFONT_INSTANCE_ASCENT(f) FONT_INSTANCE_ASCENT (XFONT_INSTANCE (f))
#define XFONT_INSTANCE_DESCENT(f) FONT_INSTANCE_DESCENT (XFONT_INSTANCE (f))
Index: src/objects-x.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-x.c,v
retrieving revision 1.26.2.9
diff -u -r1.26.2.9 objects-x.c
--- src/objects-x.c 24 Feb 2005 11:08:27 -0000 1.26.2.9
+++ src/objects-x.c 5 Mar 2005 11:22:10 -0000
@@ -1019,7 +1019,113 @@
return buffer;
}
}
-#endif
+
+static FcCharSet *
+mule_to_fc_charset (Lisp_Object cs)
+{
+ int ucode, i, j;
+ FcCharSet *fccs;
+
+ CHECK_CHARSET (cs);
+ fccs = FcCharSetCreate ();
+ /* #### do we also need to deal with 94 vs. 96 charsets?
+ ie, how are SP and DEL treated in ASCII? non-graphic should return -1 */
+ if (1 == XCHARSET_DIMENSION (cs))
+ /* Unicode tables are indexed by offsets from ASCII SP, not by ASCII */
+ for (i = 0; i < 96; i++)
+ {
+ ucode = ((int *) XCHARSET_TO_UNICODE_TABLE (cs))[i];
+ if (ucode >= 0)
+ /* #### should check for allocation failure */
+ FcCharSetAddChar (fccs, (FcChar32) ucode);
+ }
+ else if (2 == XCHARSET_DIMENSION (cs))
+ /* Unicode tables are indexed by offsets from ASCII SP, not by ASCII */
+ for (i = 0; i < 96; i++)
+ for (j = 0; j < 96; j++)
+ {
+ ucode = ((int **) XCHARSET_TO_UNICODE_TABLE (cs))[i][j];
+ if (ucode >= 0)
+ /* #### should check for allocation failure */
+ FcCharSetAddChar (fccs, (FcChar32) ucode);
+ }
+ else
+ {
+ FcCharSetDestroy (fccs);
+ fccs = NULL;
+ }
+ return fccs;
+}
+
+/* print message to stderr: one string argument */
+#define DEBUG_XFT0(level,s) \
+ if (debug_xft > level) stderr_out (s)
+
+/* print message to stderr: one formatted string argument */
+#define DEBUG_XFT1(level,format,s) \
+ if (debug_xft > level) stderr_out (format, s)
+
+/* print message to stderr: two formatted string arguments */
+#define DEBUG_XFT2(level,format,s1,s2) \
+ if (debug_xft > level) stderr_out (format, s1, s2)
+
+/* print an Xft pattern to stderr
+ LEVEL is the debug level (to compare to debug_xft)
+ FORMAT is a newline-terminated printf format with one %s for the pattern
+ PATTERN is an FcPattern *. */
+#define PRINT_XFT_PATTERN(level,format,pattern) \
+ do { \
+ FcChar8 *name = FcNameUnparse (pattern); \
+ DEBUG_XFT1 (level, format, name); \
+ free (name); \
+ } while (0)
+
+/* print a progress message
+ LEVEL is the debug level (to compare to debug_xft)
+ FORMAT is a newline-terminated printf format with two %s for font and lang
+ FONT is the Xft font
+ LANG is the language being checked for support. */
+#define CHECKING_LANG(level,font,lang) \
+ DEBUG_XFT2 (level, "checking if %s handles %s\n", font, lang)
+
+struct charset_reporter {
+ Lisp_Object *charset;
+ /* #### Mule-ize these strings? */
+ Extbyte *language;
+ FcChar8 *rfc3066;
+};
+
+static struct charset_reporter charset_table[] =
+ {
+ /* #### it's my branch, my favorite charsets get checked first */
+ { &Vcharset_ascii, "English", "en" },
+ { &Vcharset_japanese_jisx0208, "Japanese", "ja" },
+ { &Vcharset_japanese_jisx0212, "Japanese", "ja" },
+ { &Vcharset_katakana_jisx0201, "Japanese", "ja" },
+ { &Vcharset_latin_jisx0201, "Japanese", "ja" },
+ { &Vcharset_japanese_jisx0208_1978, "Japanese", "ja" },
+ { &Vcharset_greek_iso8859_7, "Greek", "gr" },
+ { &Vcharset_chinese_gb2312, "simplified Chinese", "zh-CN" },
+ { &Vcharset_korean_ksc5601, "Korean", "ko" },
+ { &Vcharset_chinese_cns11643_1, "traditional Chinese", "zh-TW" },
+ { &Vcharset_chinese_cns11643_2, "traditional Chinese", "zh-TW" },
+ { &Vcharset_latin_iso8859_1, NULL, NULL },
+ { &Vcharset_latin_iso8859_2, NULL, NULL },
+ { &Vcharset_latin_iso8859_3, NULL, NULL },
+ { &Vcharset_latin_iso8859_4, NULL, NULL },
+ { &Vcharset_latin_iso8859_9, NULL, NULL },
+ { &Vcharset_latin_iso8859_15, NULL, NULL },
+ { &Vcharset_thai_tis620, NULL, NULL },
+ { &Vcharset_arabic_iso8859_6, NULL, NULL },
+ { &Vcharset_hebrew_iso8859_8, NULL, NULL },
+ { &Vcharset_cyrillic_iso8859_5, NULL, NULL },
+ /* #### these probably are not quite right */
+ { &Vcharset_chinese_big5_1, "traditional Chinese", "zh-TW" },
+ { &Vcharset_chinese_big5_2, "traditional Chinese", "zh-TW" },
+ { NULL, NULL, NULL }
+ };
+
+#endif /* USE_XFT */
/* find a font spec that matches font spec FONT and also matches
(the registry of) CHARSET. */
@@ -1044,126 +1150,158 @@
if (stage)
return Qnil;
+#ifdef USE_XFT
/* #### does Xft permit/require a different encoding? */
LISP_STRING_TO_EXTERNAL (font, patternext, Qx_font_name_encoding);
-#ifdef USE_XFT
- if (debug_xft > 1)
- stderr_out ("confirming charset for font instance %s\n", patternext);
- /* #### totally lazy, let's just get something out the door */
+ DEBUG_XFT1 (1, "confirming charset for font instance %s\n", patternext);
+
+ /* #### this looks like a fair amount of work, but the basic design
+ has never been rethought, and it should be
+
+ #### ALL THE OBJECTS CONSTRUCTED BY FcName(Un)Parse MUST BE FREED!
+ */
+
waste = FcInit ();
- if (waste) /* I don't think this can fail */
+ if (!waste && debug_xft > 0) /* I don't think this can fail */
/* #### should we init in xft_fonts_init()
and FcInitBringUpToDate() here? */
+ stderr_out ("Failed fontconfig initialization\n");
+ else if (waste)
{
FcChar8 *lang = "en";
+ FcCharSet *fccs = NULL;
+ FcChar8 *shortname;
+
fcc = FcConfigGetCurrent ();
- patternxft = FcNameParse (patternext);
- if (debug_xft > 1)
- stderr_out ("FcNameParse'ed name is %s\n",
- FcNameUnparse (patternxft));
+ patternxft = FcNameParse (patternext); /* #### needs freeing */
+ PRINT_XFT_PATTERN (1,"FcNameParse'ed name is %s\n",patternxft);
/* #### Next two return FcBool, but what does the return mean? */
- /* #### I wonder if the order of the next two should be reversed. */
+ /* The order is correct according the fontconfig docs. */
FcConfigSubstitute (fcc, patternxft, FcMatchPattern);
- if (debug_xft > 1)
- stderr_out ("FcConfigSubstitute'ed name is %s\n",
- FcNameUnparse (patternxft));
+ PRINT_XFT_PATTERN (0,"FcConfigSubstitute'ed name is %s\n",patternxft);
FcDefaultSubstitute (patternxft);
- if (debug_xft > 0)
- stderr_out ("FcDefaultSubstitute'ed name is %s\n",
- FcNameUnparse (patternxft));
+ PRINT_XFT_PATTERN (1,"FcDefaultSubstitute'ed name is %s\n",patternxft);
patternxft = FcFontMatch (fcc, patternxft, &fcresult);
- if (debug_xft > 0)
- stderr_out ("FcFontMatch'ed name is %s\n",
- FcNameUnparse (patternxft));
-
- /* #### There's probably a way to do this with FcCharsets, but isn't
- the language approach better in the long run? */
- /* #### can we regression test this, or does it break too early? */
- if (EQ (charset, Fget_charset (intern ("katakana-jisx0201")))
- || EQ (charset, Fget_charset (intern ("japanese-jisx0208")))
- || EQ (charset, Fget_charset (intern ("japanese-jisx0212"))))
+ PRINT_XFT_PATTERN (0,"FcFontMatch'ed name is %s\n",patternxft);
+
+ /* heuristic to give reasonable-length names */
+ {
+ FcPattern *p = FcFontRenderPrepare (fcc, patternxft, patternxft);
+ FcPatternDel (p, FC_CHARSET);
+ FcPatternDel (p, FC_LANG);
+ shortname = FcNameUnparse (p); /* #### needs freeing */
+ FcPatternDestroy (p);
+ }
+
+ /* The language approach may better in the long run, but we can't use
+ it based on Mule charsets; fontconfig doesn't provide a way to test
+ for unions of languages, etc. That will require support from the
+ text module.
+
+ Optimization: cache the generated FcCharSet in the Mule charset.
+ Don't forget to destroy it if the Mule charset gets deallocated. */
+
+ struct charset_reporter *cr;
+ for (cr = charset_table;
+ cr->charset && !EQ (*(cr->charset), charset);
+ cr++)
+ ;
+
+ if (cr->rfc3066)
{
- if (debug_xft > 0)
- stderr_out ("checking if %s handles Japanese\n", patternext);
- lang = "ja";
+ CHECKING_LANG (0, shortname, cr->language);
+ lang = cr->rfc3066;
}
- else if (EQ (charset, Fget_charset (intern ("ascii"))))
+ else if (cr->charset)
{
- if (debug_xft > 0)
- stderr_out ("checking if %s handles English\n", patternext);
- lang = "en";
+ /* #### what the hey, build 'em on the fly */
+ /* #### in the case of error this could return NULL! */
+ fccs = mule_to_fc_charset (charset);
+ lang = XSTRING_DATA (XSYMBOL (XCHARSET_NAME (charset))-> name);
}
else
{
- /* #### is this the right way to make a warning? */
+ /* OK, we fell off the end of the table */
warn_when_safe_lispobj (intern ("xft"), intern ("alert"),
list2 (build_string ("unchecked charset"),
charset));
+ /* #### THIS IS WRONG, WRONG, WRONG!!
+ It is why we never fall through to XLFD-checking. */
/* default to "en" */
}
- /* #### stderr_out crashed in the next block; why?
- probably because FcTypeOfValueToString below didn't get
- an argument!! Fixed now, but watch for crashes. */
- {
- int i = 0;
- FcValue v;
- /* the main event */
- FcResult r = FcPatternGet (patternxft, FC_LANG, i, &v);
- if (r == FcResultMatch)
- {
- if (v.type != FcTypeLangSet) /* excessive paranoia */
- {
- /* Urk! Fall back and punt to core font. */
- if (debug_xft > 0)
- stderr_out ("Unexpected type of lang value (%s)\n",
- FcTypeOfValueToString (v));
- /* uncomment this to not try core font */
- /* return Qnil; */
- }
- else if (FcLangSetHasLang (v.u.l, lang) != FcLangDifferentLang)
- {
- if (debug_xft > 0)
- stderr_out ("Xft font %s supports %s\n", patternext, lang);
- /* heuristic to give reasonable-length names */
- FcPatternDel (patternxft, FC_CHARSET);
- FcPatternDel (patternxft, FC_LANG);
- return (build_string (FcNameUnparse (patternxft)));
- }
- /* assume everything supports English */
-#if 0
- /* KLUDGE!! */
- else if (!strcmp (lang, "en"))
- {
- if (debug_xft > 0)
- stderr_out ("Xft font %s doesn't support en, using anyway\n",
- patternext);
- /* heuristic to give reasonable-length names */
- FcPatternDel (patternxft, FC_CHARSET);
- FcPatternDel (patternxft, FC_LANG);
- return (build_string (FcNameUnparse (patternxft)));
- }
-#endif
- else
- {
- if (debug_xft > 0)
- stderr_out ("Xft font %s doesn't support %s\n",
- patternext, lang);
- return Qnil;
- }
- }
- if (debug_xft > 0)
- stderr_out ("Unexpected result getting lang=%s\n",
- FcResultToString (r));
- }
+ if (fccs)
+ {
+ /* check for character set coverage */
+ Lisp_Object retval = Qunbound;
+ int i = 0;
+ FcCharSet *v;
+ FcResult r = FcPatternGetCharSet (patternxft, FC_CHARSET, i, &v);
+
+ if (r == FcResultTypeMismatch)
+ {
+ /* Urk! Fall back and punt to core font. */
+ DEBUG_XFT0 (0, "Unexpected type return in charset value\n");
+ /* uncomment this to not try core font */
+ /* retval = Qnil; */
+ }
+ else if (r == FcResultMatch && FcCharSetIsSubset (fccs, v))
+ {
+ DEBUG_XFT2 (0, "Xft font %s supports %s\n", shortname, lang);
+ /* #### would it be better to return shortname? */
+ retval = (build_string (FcNameUnparse (patternxft)));
+ }
+ else
+ {
+ DEBUG_XFT2 (0, "Xft font %s doesn't support %s\n",
+ shortname, lang);
+ /* comment this to try the core font */
+ retval = Qnil;
+ }
+
+ /* clean up and maybe return */
+ FcCharSetDestroy (fccs);
+ if (!UNBOUNDP (retval))
+ return retval;
+ }
+ else
+ {
+ /* check for language coverage */
+ int i = 0;
+ FcValue v;
+ /* the main event */
+ FcResult r = FcPatternGet (patternxft, FC_LANG, i, &v);
+ if (r == FcResultMatch)
+ {
+ if (v.type != FcTypeLangSet) /* excessive paranoia */
+ {
+ /* Urk! Fall back and punt to core font. */
+ DEBUG_XFT1 (0, "Unexpected type of lang value (%s)\n",
+ FcTypeOfValueToString (v));
+ /* uncomment this to not try core font */
+ /* return Qnil; */
+ }
+ else if (FcLangSetHasLang (v.u.l, lang) != FcLangDifferentLang)
+ {
+ DEBUG_XFT2 (0, "Xft font %s supports %s\n", shortname, lang);
+ /* #### would it be better to return shortname? */
+ return (build_string (FcNameUnparse (patternxft)));
+ }
+ else
+ {
+ DEBUG_XFT2 (0, "Xft font %s doesn't support %s\n",
+ shortname, lang);
+ return Qnil;
+ }
+ }
+ DEBUG_XFT1 (0, "Unexpected result getting lang=%s\n",
+ FcResultToString (r));
+ }
}
- else if (debug_xft > 0)
- stderr_out ("Failed fontconfig initialization\n");
- if (debug_xft > 0)
- stderr_out ("shit happens, try X11 charset match for %s\n", patternext);
-#endif
+ DEBUG_XFT1 (0, "shit happens, try X11 charset match for %s\n", patternext);
+#endif /* USE_XFT */
names = XListFonts (DEVICE_X_DISPLAY (XDEVICE (device)),
patternext, MAX_FONT_COUNT, &count);
Index: src/objects.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects.c,v
retrieving revision 1.23
diff -u -r1.23 objects.c
--- src/objects.c 4 Nov 2004 23:06:46 -0000 1.23
+++ src/objects.c 5 Mar 2005 11:22:10 -0000
@@ -274,6 +274,7 @@
{ XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, name)},
{ XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, truename)},
{ XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, device)},
+ { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, charset)},
{ XD_UNION, offsetof (Lisp_Font_Instance, data),
XD_INDIRECT (0, 0), &font_instance_data_description },
{ XD_END }
@@ -350,19 +351,23 @@
Lisp_Font_Instance);
-DEFUN ("make-font-instance", Fmake_font_instance, 1, 3, 0, /*
+/* #### Why is this exposed to Lisp? Used in:
+x-frob-font-size, gtk-font-menu-load-font, x-font-menu-load-font-xft,
+x-font-menu-load-font-core, mswindows-font-menu-load-font,
+mswindows-frob-font-style-and-sizify, mswindows-frob-font-size. */
+DEFUN ("make-font-instance", Fmake_font_instance, 1, 4, 0, /*
Return a new `font-instance' object named NAME.
DEVICE specifies the device this object applies to and defaults to the
selected device. An error is signalled if the font is unknown or cannot
be allocated; however, if NOERROR is non-nil, nil is simply returned in
-this case.
+this case. CHARSET is used internally. #### make helper function?
The returned object is a normal, first-class lisp object. The way you
`deallocate' the font is the way you deallocate any other lisp object:
you drop all pointers to it and allow it to be garbage collected. When
-these objects are GCed, the underlying X data is deallocated as well.
+these objects are GCed, the underlying GUI data is deallocated as well.
*/
- (name, device, noerror))
+ (name, device, noerror, charset))
{
Lisp_Font_Instance *f;
int retval = 0;
@@ -387,6 +392,7 @@
f->ascent = f->height = 1;
f->descent = 0;
f->width = 1;
+ f->charset = charset;
f->proportional_p = 0;
retval = MAYBE_INT_DEVMETH (XDEVICE (device), initialize_font_instance,
@@ -489,6 +495,15 @@
return font_instance_truename_internal (font_instance, ERROR_ME);
}
+DEFUN ("font-instance-charset", Ffont_instance_charset, 1, 1, 0, /*
+Return the Mule charset that FONT-INSTANCE was allocated to handle.
+*/
+ (font_instance))
+{
+ CHECK_FONT_INSTANCE (font_instance);
+ return XFONT_INSTANCE (font_instance)->charset;
+}
+
DEFUN ("font-instance-properties", Ffont_instance_properties, 1, 1, 0, /*
Return the properties (an alist or nil) of FONT-INSTANCE.
*/
@@ -878,7 +893,7 @@
if (UNBOUNDP (instance))
{
/* make sure we cache the failures, too. */
- instance = Fmake_font_instance (instantiator, device, Qt);
+ instance = Fmake_font_instance (instantiator, device, Qt, charset);
Fputhash (instantiator, instance, cache);
}
@@ -1129,6 +1144,7 @@
DEFSUBR (Ffont_instance_ascent);
DEFSUBR (Ffont_instance_descent);
DEFSUBR (Ffont_instance_width);
+ DEFSUBR (Ffont_instance_charset);
DEFSUBR (Ffont_instance_proportional_p);
DEFSUBR (Ffont_instance_truename);
DEFSUBR (Ffont_instance_properties);
Index: src/objects.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects.h,v
retrieving revision 1.10
diff -u -r1.10 objects.h
--- src/objects.h 14 Sep 2004 14:32:52 -0000 1.10
+++ src/objects.h 5 Mar 2005 11:22:10 -0000
@@ -58,10 +58,11 @@
#define CHECK_FONT_INSTANCE(x) CHECK_RECORD (x, font_instance)
#define CONCHECK_FONT_INSTANCE(x) CONCHECK_RECORD (x, font_instance)
-EXFUN (Fmake_font_instance, 3);
+EXFUN (Fmake_font_instance, 4);
EXFUN (Ffont_instance_name, 1);
EXFUN (Ffont_instance_p, 1);
EXFUN (Ffont_instance_truename, 1);
+EXFUN (Ffont_instance_charset, 1);
extern Lisp_Object Vthe_null_font_instance;
Index: src/xft-fonts.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Attic/xft-fonts.c,v
retrieving revision 1.1.2.7
diff -u -r1.1.2.7 xft-fonts.c
--- src/xft-fonts.c 22 Feb 2005 13:03:12 -0000 1.1.2.7
+++ src/xft-fonts.c 5 Mar 2005 11:22:11 -0000
@@ -1,13 +1,14 @@
/* Lisp font handling implementation for X with Xft.
Copyright (C) 2003 Eric Knauel and Matthias Neubauer
-Copyright (C) 2004 Free Software Foundation, Inc.
+Copyright (C) 2005 Eric Knauel
+Copyright (C) 2004, 2005 Free Software Foundation, Inc.
Authors: Eric Knauel <knauel(a)informatik.uni-tuebingen.de>
Matthias Neubauer <neubauer(a)informatik.uni-freiburg.de>
Stephen J. Turnbull <stephen(a)xemacs.org>
Created: 27 Oct 2003
-Updated: 24 Jul 2004 by Stephen J. Turnbull
+Updated: 05 Mar 2005 by Stephen J. Turnbull
This file is part of XEmacs.
@@ -46,9 +47,6 @@
#include "objects-x-impl.h"
#include "xft-fonts.h"
-int debug_xft = 0; /* Set to 1 enables lots of obnoxious messages.
- Setting it to 2 or 3 enables even more. */
-
/* #### TO DO ####
. The "x-xft-*" and "x_xft_*" nomenclature is mostly redundant, especially
if we separate X fonts from Xft fonts, and use fontconfig more generally.
@@ -78,8 +76,13 @@
Lisp_Object Qfc_internal_error;
Lisp_Object Vxlfd_font_name_regexp; /* Really needed in initialization? */
Lisp_Object Vxft_version;
+Fixnum debug_xft; /* Set to 1 enables lots of obnoxious messages.
+ Setting it to 2 or 3 enables even more. */
static Lisp_Object make_xlfd_font_regexp (void);
+static void string_list_to_fcobjectset (Lisp_Object list, FcObjectSet *os);
+/* #### need to change this to proper FcChar* */
+static inline char *extract_fcapi_string (Lisp_Object str);
static const struct memory_description fcpattern_description [] = {
{ XD_LISP_OBJECT, offsetof (struct fc_pattern, fontset) },
@@ -1091,10 +1094,20 @@
void
vars_of_xft_fonts (void)
{
+ /* #### I know, but the right fix is use the generic debug facility. */
+ DEFVAR_INT ("xft-debug-level", &debug_xft /*
+Level of debugging messages to issue to stderr for Xft.
+A nonnegative integer. Set to 0 to suppress all warnings.
+Default is 1 to ensure a minimum of debugging output at initialization.
+Higher levels give even more information.
+*/ );
+ debug_xft = 1;
+
DEFVAR_LISP("xft-version", &Vxft_version /*
-The major version number of the Xft library being used */
- );
+The major version number of the Xft library being used.
+*/ );
Vxft_version = make_int(XFT_VERSION);
+
Fprovide (intern ("xft"));
}
Index: src/xft-fonts.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Attic/xft-fonts.h,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 xft-fonts.h
--- src/xft-fonts.h 11 Feb 2005 15:39:08 -0000 1.1.2.4
+++ src/xft-fonts.h 5 Mar 2005 11:22:11 -0000
@@ -1,13 +1,14 @@
/* Lisp font data structures for X and Xft.
Copyright (C) 2003 Eric Knauel and Matthias Neubauer
-Copyright (C) 2004 Free Software Foundation, Inc.
+Copyright (C) 2005 Eric Knauel
+Copyright (C) 2004, 2005 Free Software Foundation, Inc.
Authors: Eric Knauel <knauel(a)informatik.uni-tuebingen.de>
Matthias Neubauer <neubauer(a)informatik.uni-freiburg.de>
Stephen J. Turnbull <stephen(a)xemacs.org>
Created: 27 Oct 2003
-Updated: 24 Jul 2004 by Stephen J. Turnbull
+Updated: 05 Mar 2005 by Stephen J. Turnbull
This file is part of XEmacs.
@@ -44,7 +45,7 @@
#include "../lwlib/lwlib-fonts.h"
#include "../lwlib/lwlib-colors.h"
-extern int debug_xft;
+extern Fixnum debug_xft;
/* #### new in xft reloaded #3; where is this used? */
XftColor xft_get_color (Display *dpy, Colormap cmap, Lisp_Object c, int dim);
@@ -89,11 +90,5 @@
Lisp_Object fc_get_pattern_integer(Lisp_Object fcpat, Lisp_Object id, const char* objid);
Lisp_Object fc_get_pattern_bool(Lisp_Object fcpat, Lisp_Object id, const char* objid);
Lisp_Object fc_get_pattern_string(Lisp_Object fcpat, Lisp_Object id, const char* objid);
-
-static void
-string_list_to_fcobjectset (Lisp_Object, FcObjectSet*);
-
-inline static char *
-extract_fcapi_string (Lisp_Object str);
#endif /* INCLUDED_xft_fonts_h_ */
--
Institute of Policy and Planning Sciences http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
Ask not how you can "do" free software business;
ask what your business can "do for" free software.
[View Less]
[COMMIT] configure.ac: Typo fix.
19 years, 10 months
Malcolm Purvis
NOTE: This patch has been committed.
Fix a typo in the filename of the old version of configure. Thanks to Ville
for pointing this out.
ChangeLog addition:
2005-03-05 Malcolm Purvis <malcolmp(a)xemacs.org>
* configure.ac: Correct the filename of the old copy of configure.
xemacs-xft-branch-rw source patch:
Diff command: cvs-rw -q diff -u
Files affected: configure.ac
Index: configure.ac
===================================================================
RCS file: /pack/…
[View More]xemacscvs/XEmacs/xemacs/configure.ac,v
retrieving revision 1.1.14.8
diff -u -r1.1.14.8 configure.ac
--- configure.ac 2005/03/04 13:34:18 1.1.14.8
+++ configure.ac 2005/03/05 02:54:50
@@ -5589,7 +5589,7 @@
"
echo " WARNING: --------------------------------------------------------------"
echo " WARNING: This was produced from a new autoconf-2.5 based configuration."
-echo " WARNING: If this configuration seems buggy then copy etc/configure-21.3"
+echo " WARNING: If this configuration seems buggy then copy etc/configure-2.13"
echo " WARNING: to configure and try again. Also please report the bug."
echo " WARNING: --------------------------------------------------------------"
--
Malcolm Purvis <malcolmp(a)xemacs.org>
[View Less]
[COMMIT] Add encode-char and decode-char functions, for wider Mule compatibility.
19 years, 10 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
If anyone is preparing a substantial Mule merge with the FSF, shout up, and
I’ll revert this, and leave it to you. Otherwise, this should help, and a
general Mule merge is not at the moment a big priority for me, and won’t be
for a while.
decode-char and encode-char are also in Mule-UCS.
lisp/ChangeLog addition:
2005-03-04 Aidan Kehoe <kehoea(a)parhasard.net>
* unicode.el (decode-char): New. This is what the FSF Mule API
calls …
[View More]unicode-to-char. The API of the function is more general,
but support for anything beyond Unicode isn't implemented, and I
can't see why it would be, given that make-char does a fine job
already.
* unicode.el (encode-char): New. This is what the FSF Mule calls
char-to-unicode.
XEmacs Trunk source patch:
Diff command: cvs -q diff -u
Files affected: lisp/unicode.el
Index: lisp/unicode.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/unicode.el,v
retrieving revision 1.11
diff -u -u -r1.11 unicode.el
--- lisp/unicode.el 2005/02/09 15:29:07 1.11
+++ lisp/unicode.el 2005/03/04 21:56:28
@@ -304,6 +304,20 @@
little-endian t
need-bom t))
+(defun decode-char (quote-ucs code &optional restriction)
+ "FSF compatibility--return Mule character with Unicode codepoint `code'.
+The second argument must be 'ucs, the third argument is ignored. "
+ (assert (eq quote-ucs 'ucs)
+ "Sorry, decode-char doesn't yet support anything but the UCS. ")
+ (unicode-to-char code))
+
+(defun encode-char (char quote-ucs &optional restriction)
+ "FSF compatibility--return the Unicode code point of `char'.
+The second argument must be 'ucs, the third argument is ignored. "
+ (assert (eq quote-ucs 'ucs)
+ "Sorry, encode-char doesn't yet support anything but the UCS. ")
+ (char-to-unicode char))
+
;; #### UTF-7 is not yet implemented, and it's tricky to do. There's
;; an implementation in appendix A.1 of the Unicode Standard, Version
;; 2.0, but I don't know its licensing characteristics.
--
“I, for instance, am gung-ho about open source because my family is being
held hostage in Rob Malda’s basement. But who fact-checks me, or Enderle,
when we say something in public? No-one!” -- Danny O’Brien
[View Less]