[AC21.5] Sync etags to pot version 17.32
17 years, 7 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
Vin, 21.4 can wait until Francesco makes one more release, I think.
There's also a new file not included in this patch, ETAGS.README,
which is basically a COPYING file. It contains basically the added
lines to the header of lib-src/etags.c, which appears below.
Index: configure.ac
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v
retrieving revision 1.58
diff -u -r1.58 configure.ac
--- configure.ac 18 May 2007 13:57:58 -0000 1.58
+++ configure.ac 21 May 2007 03:39:50 -0000
@@ -1191,8 +1191,11 @@
fi
fi
AC_DEFINE_UNQUOTED(XEMACS_CODENAME, "$xemacs_codename")
+dnl for etags
+verbose_version=$version
if test "$xemacs_extra_name" != ""; then
AC_DEFINE_UNQUOTED(XEMACS_EXTRA_NAME, "$xemacs_extra_name")
+ verbose_version="$verbose_version $xemacs_extra_name"
fi
if test "$xemacs_release_date" != ""; then
AC_DEFINE_UNQUOTED(XEMACS_RELEASE_DATE, "$xemacs_release_date")
@@ -5694,6 +5697,7 @@
AC_SUBST(PROGNAME)
AC_SUBST(version)
+AC_SUBST(verbose_version)
AC_SUBST(inststaticdir)
AC_SUBST(instvardir)
AC_SUBST(srcdir)
Index: etc/etags.1
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/etc/etags.1,v
retrieving revision 1.9
diff -u -r1.9 etags.1
--- etc/etags.1 24 Mar 2007 11:46:38 -0000 1.9
+++ etc/etags.1 21 May 2007 03:39:50 -0000
@@ -21,7 +21,7 @@
[\|\-\-append\|] [\|\-\-no\-defines\|]
[\|\-\-no\-globals\|] [\|\-\-include=\fIfile\fP\|]
[\|\-\-ignore\-indentation\|] [\|\-\-language=\fIlanguage\fP\|]
-[\|\-\-members\|] [\|\-\-output=\fItagfile\fP\|]
+[\|\-\-no\-members\|] [\|\-\-output=\fItagfile\fP\|]
[\|\-\-regex=\fIregexp\fP\|] [\|\-\-no\-regex\|]
[\|\-\-help\|] [\|\-\-version\|]
\fIfile\fP .\|.\|.
@@ -135,10 +135,10 @@
.TP
.B \-\-members
Create tag entries for variables that are members of structure-like
-constructs in C++, Objective C, Java.
+constructs in C++, Objective C, Java. This is the default for etags.
.TP
.B \-\-no\-members
-Do not tag member variables. This is the default behavior.
+Do not tag member variables. This is the default for ctags.
.TP
.B \-\-packages\-only
Only tag packages in Ada files.
@@ -224,7 +224,7 @@
.br
A regexp can be preceded by {\fIlang\fP}, thus restricting it to match
-lines of files of the specified language. Use \fBetags --help\fP to obtain
+lines of files of the specified language. Use \fBetags \-\-help\fP to obtain
a list of the recognised languages. This feature is particularly useful inside
\fBregex files\fP. A regex file contains one regex per line. Empty lines,
and those lines beginning with space or tab are ignored. Lines beginning
Index: lib-src/Makefile.in.in
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/Makefile.in.in,v
retrieving revision 1.49
diff -u -r1.49 Makefile.in.in
--- lib-src/Makefile.in.in 22 Nov 2005 07:14:42 -0000 1.49
+++ lib-src/Makefile.in.in 21 May 2007 03:39:51 -0000
@@ -42,6 +42,7 @@
ALLOCA=@ALLOCA@
LN_S=@LN_S@
version=@version@
+etags_xemacs_version=@verbose_version@
## This will be the name of the generated binary and is set automatically
## by configure.
@@ -309,7 +310,7 @@
$(CC) -c $(cflags) \
-DINHIBIT_STRING_HEADER ${top_srcdir}/src/regex.c
-etags_args = $(cflags) -DEMACS_NAME='"XEmacs"' -DVERSION='"${version}"' \
+etags_args = $(cflags) -DEMACS_NAME='"XEmacs"' -DVERSION='"${etags_xemacs_version}"' \
${srcdir}/etags.c $(GETOPTOBJS) regex.o $(ldflags)
etags_deps = ${srcdir}/etags.c $(GETOPTDEPS) regex.o ../src/config.h
@@ -322,6 +323,7 @@
ellcc: ${ellcc_deps}
$(CC) ${ellcc_args} -o $@
+## #### we should probably do the same as for pot's etags
ootags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/ootags.c \
$(GETOPTOBJS) regex.o $(ldflags)
ootags_deps = ${srcdir}/ootags.c $(GETOPTDEPS) regex.o ../src/config.h
Index: lib-src/etags.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/etags.c,v
retrieving revision 1.38
diff -u -r1.38 etags.c
--- lib-src/etags.c 24 Mar 2007 12:41:26 -0000 1.38
+++ lib-src/etags.c 21 May 2007 03:39:51 -0000
@@ -1,30 +1,69 @@
/* Tags file maker to go with GNU Emacs -*- coding: latin-1 -*-
- Copyright (C) 1984, 1987, 1988, 1989, 1993, 1994, 1995,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006 Free Software Foundation, Inc. and Ken Arnold
-
- This file is not considered part of GNU Emacs.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+Copyright (C) 1984 The Regents of the University of California
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the
+ distribution.
+3. Neither the name of the University nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Copyright (C) 1984, 1987, 1988, 1989, 1993, 1994, 1995, 1998, 1999,
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Free Software Foundation, Inc.
+
+This file is not considered part of GNU Emacs.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+/* NB To comply with the above BSD license, copyright information is
+reproduced in etc/ETAGS.README. That file should be updated when the
+above notices are.
+
+To the best of our knowledge, this code was originally based on the
+ctags.c distributed with BSD4.2, which was copyrighted by the
+University of California, as described above. */
+
/*
* Authors:
- * Ctags originally by Ken Arnold.
- * Fortran added by Jim Kleckner.
- * Ed Pelegri-Llopart added C typedefs.
- * Gnu Emacs TAGS format and modifications by RMS?
+ * 1983 Ctags originally by Ken Arnold.
+ * 1984 Fortran added by Jim Kleckner.
+ * 1984 Ed Pelegri-Llopart added C typedefs.
+ * 1985 Emacs TAGS format by Richard Stallman.
* 1989 Sam Kendall added C++.
* 1992 Joseph B. Wells improved C and C++ parsing.
* 1993 Francesco Potortì reorganised C and C++.
@@ -41,7 +80,7 @@
* configuration file containing regexp definitions for etags.
*/
-char pot_etags_version[] = "@(#) pot revision number is 17.26";
+char pot_etags_version[] = "@(#) pot revision number is 17.32";
#define TRUE 1
#define FALSE 0
@@ -120,7 +159,14 @@
# include <stdlib.h>
# include <string.h>
# else /* no standard C headers */
- extern char *getenv ();
+ extern char *getenv ();
+ extern char *strcpy ();
+ extern char *strncpy ();
+ extern char *strcat ();
+ extern char *strncat ();
+ extern unsigned long strlen ();
+ extern PTR malloc ();
+ extern PTR realloc ();
# ifdef VMS
# define EXIT_SUCCESS 1
# define EXIT_FAILURE 0
@@ -444,7 +490,7 @@
*midtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789";
static bool append_to_tagfile; /* -a: append to tags */
-/* The next four default to TRUE for etags, but to FALSE for ctags. */
+/* The next five default to TRUE for etags, but to FALSE for ctags. */
static bool typedefs; /* -t: create tags for C and Ada typedefs */
static bool typedefs_or_cplusplus; /* -T: create tags for C typedefs, level */
/* 0 struct/enum/union decls, and C++ */
@@ -453,8 +499,8 @@
/* constants and variables. */
/* -D: opposite of -d. Default under ctags. */
static bool globals; /* create tags for global variables */
-static bool declarations; /* --declarations: tag them and extern in C&Co*/
static bool members; /* create tags for C member variables */
+static bool declarations; /* --declarations: tag them and extern in C&Co*/
static bool no_line_directive; /* ignore #line directives (undocumented) */
static bool no_duplicates; /* no duplicate tags for ctags (undocumented) */
static bool update; /* -u: update tags */
@@ -577,10 +623,11 @@
definitions of `struct', `union' and `enum'. `#define' macro\n\
definitions and `enum' constants are tags unless you specify\n\
`--no-defines'. Global variables are tags unless you specify\n\
-`--no-globals'. Use of `--no-globals' and `--no-defines'\n\
-can make the tags table file much smaller.\n\
+`--no-globals' and so are struct members unless you specify\n\
+`--no-members'. Use of `--no-globals', `--no-defines' and\n\
+`--no-members' can make the tags table file much smaller.\n\
You can tag function declarations and external variables by\n\
-using `--declarations', and struct members by using `--members'.";
+using `--declarations'.";
static char *Cplusplus_suffixes [] =
{ "C", "c++", "cc", "cpp", "cxx", "H", "h++", "hh", "hpp", "hxx",
@@ -590,8 +637,8 @@
static char Cplusplus_help [] =
"In C++ code, all the tag constructs of C code are tagged. (Use\n\
--help --lang=c --lang=c++ for full help.)\n\
-In addition to C tags, member functions are also recognized, and\n\
-optionally member variables if you use the `--members' option.\n\
+In addition to C tags, member functions are also recognized. Member\n\
+variables are recognized unless you use the `--no-members' option.\n\
Tags for variables and functions in classes are named `CLASS::VARIABLE'\n\
and `CLASS::FUNCTION'. `operator' definitions have tag names like\n\
`operator+'.";
@@ -686,8 +733,8 @@
static char *PHP_suffixes [] =
{ "php", "php3", "php4", NULL };
static char PHP_help [] =
-"In PHP code, tags are functions, classes and defines. When using\n\
-the `--members' option, vars are tags too.";
+"In PHP code, tags are functions, classes and defines. Unless you use\n\
+the `--no-members' option, vars are tags too.";
static char *plain_C_suffixes [] =
{ "pc", /* Pro*C file */
@@ -834,25 +881,15 @@
#ifndef EMACS_NAME
# define EMACS_NAME "standalone"
#endif
-#ifdef EMACS_VERSION
-# ifdef XEMACS_EXTRA_NAME
-# define E_VERSION EMACS_VERSION " " XEMACS_EXTRA_NAME
-# else
-# define E_VERSION EMACS_VERSION
-# endif
-#elif defined(VERSION)
-# define E_VERSION VERSION
-#else
-# define E_VERSION "version"
+#ifndef VERSION
+# define VERSION "17.32"
#endif
-
static void
print_version ()
{
- printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, E_VERSION);
- puts (pot_etags_version);
- puts ("Copyright (C) 2006 Free Software Foundation, Inc. and Ken Arnold");
- puts ("This program is distributed under the same terms as Emacs");
+ printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, VERSION);
+ puts ("Copyright (C) 2007 Free Software Foundation, Inc.");
+ puts ("This program is distributed under the terms in ETAGS.README");
exit (EXIT_SUCCESS);
}
@@ -939,8 +976,13 @@
puts ("--no-globals\n\
Do not create tag entries for global variables in some\n\
languages. This makes the tags file smaller.");
- puts ("--members\n\
+ if (CTAGS)
+ puts ("--members\n\
Create tag entries for members of structures in some languages.");
+ else
+ puts ("--no-members\n\
+ Do not create tag entries for members of structures\n\
+ in some languages.");
puts ("-r REGEXP, --regex=REGEXP or --regex=@regexfile\n\
Make a tag for each line matching a regular expression pattern\n\
@@ -988,7 +1030,7 @@
Print on the standard output an index of items intended for\n\
human consumption, similar to the output of vgrind. The index\n\
is sorted, and gives the page number of each item.");
-# ifdef PRINT_UNDOCUMENTED_OPTIONS_HELP
+# if PRINT_UNDOCUMENTED_OPTIONS_HELP
puts ("-w, --no-duplicates\n\
Do not create duplicate tag entries, for compatibility with\n\
traditional ctags.");
@@ -1178,13 +1220,13 @@
/*
* If etags, always find typedefs and structure tags. Why not?
- * Also default to find macro constants, enum constants and
- * global variables.
+ * Also default to find macro constants, enum constants, struct
+ * members and global variables.
*/
if (!CTAGS)
{
typedefs = typedefs_or_cplusplus = constantypedefs = TRUE;
- globals = TRUE;
+ globals = members = TRUE;
}
/* When the optstring begins with a '-' getopt_long does not rearrange the
@@ -3366,17 +3408,15 @@
case '/':
if (*lp == '*')
{
- lp++;
incomm = TRUE;
- continue;
+ lp++;
+ c = ' ';
}
else if (/* cplpl && */ *lp == '/')
{
c = '\0';
- break;
}
- else
- break;
+ break;
case '%':
if ((c_ext & YACC) && *lp == '%')
{
@@ -6904,6 +6944,7 @@
* tab-width: 8
* fill-column: 79
* c-font-lock-extra-types: ("FILE" "bool" "language" "linebuffer" "fdesc" "node" "regexp")
+ * c-file-style: "gnu"
* End:
*/
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[COMMIT] Test that all listed langenv input methods exist.
17 years, 7 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
lisp/ChangeLog addition:
2007-05-20 Aidan Kehoe <kehoea(a)parhasard.net>
* mule/devanagari.el ("Devanagari"):
* mule/ethiopic.el ("Ethiopic"):
* mule/hebrew.el ("Hebrew"):
* mule/lao.el ("Lao"):
* mule/tibetan.el ("Tibetan"):
* mule/vietnamese.el ("Vietnamese"):
The Hebrew input method we don't provide, for less than stellar
reasons; we should reconsider when and if we get bidi support.
The other input methods require changes to mule-category.el that
21.4 doesn't have, and as such supporting them in the packages is
mostly impossible. I've commented out the references to them in
the corresponding language environment.
* mule/mule-category.el (define-category):
Add an optional argument to define-category, taken from GNU; it's
still only a partial implementation, though. This whole file is
chaos.
* mule/mule-category.el (make-category-table): New.
Trivial implementation, for GNU compatibility.
tests/ChangeLog addition:
2007-05-20 Aidan Kehoe <kehoea(a)parhasard.net>
* automated/mule-tests.el:
Make the file name coding system tests work on OS X.
Check various slots of the language environment structure to make
sure they're well formed--we've been shipping without a Turkish or
Latin-10 input method for years, for example, which is an error.
XEmacs Trunk source patch:
Diff command: cvs -q diff -Nu
Files affected: tests/automated/mule-tests.el
===================================================================
RCS lisp/mule/vietnamese.el
===================================================================
RCS lisp/mule/tibetan.el
===================================================================
RCS lisp/mule/mule-category.el
===================================================================
RCS lisp/mule/lao.el
===================================================================
RCS lisp/mule/hebrew.el
===================================================================
RCS lisp/mule/ethiopic.el
===================================================================
RCS lisp/mule/devanagari.el
===================================================================
RCS
Index: lisp/mule/devanagari.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/devanagari.el,v
retrieving revision 1.3
diff -u -u -r1.3 devanagari.el
--- lisp/mule/devanagari.el 2002/03/16 10:39:05 1.3
+++ lisp/mule/devanagari.el 2007/05/20 20:02:08
@@ -62,7 +62,8 @@
"Devanagari" '((charset indian-is13194 indian-2-column indian-1-column)
(coding-system in-is13194-devanagari)
(coding-priority in-is13194-devanagari)
- (input-method . "devanagari-itrans")
+ ;; Not available in packages.
+ ; (input-method . "devanagari-itrans")
(features devan-util)
(documentation . "\
Such languages using Devanagari script as Hindi and Marathi
Index: lisp/mule/ethiopic.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/ethiopic.el,v
retrieving revision 1.7
diff -u -u -r1.7 ethiopic.el
--- lisp/mule/ethiopic.el 2006/11/05 22:31:37 1.7
+++ lisp/mule/ethiopic.el 2007/05/20 20:02:08
@@ -78,7 +78,7 @@
(charset ethiopic)
(coding-system iso-2022-7bit)
(coding-priority iso-2022-7bit)
- (input-method . "ethiopic")
+ ;; (input-method . "ethiopic")
(features ethio-util)
(sample-text . "$(3$Q#U!.(B")
(documentation . t)))
Index: lisp/mule/hebrew.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/hebrew.el,v
retrieving revision 1.4
diff -u -u -r1.4 hebrew.el
--- lisp/mule/hebrew.el 2002/03/16 10:39:06 1.4
+++ lisp/mule/hebrew.el 2007/05/20 20:02:08
@@ -73,7 +73,8 @@
"Hebrew" '((charset hebrew-iso8859-8)
(coding-system iso-8859-8)
(coding-priority iso-8859-8)
- (input-method . "hebrew")
+ ;; Not available in packages.
+ ;; (input-method . "hebrew")
(sample-text . "Hebrew [2],Hylem[0](B")
(documentation . "Right-to-left writing is not yet supported.")
))
Index: lisp/mule/lao.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/lao.el,v
retrieving revision 1.5
diff -u -u -r1.5 lao.el
--- lisp/mule/lao.el 2006/11/05 22:31:37 1.5
+++ lisp/mule/lao.el 2007/05/20 20:02:08
@@ -62,7 +62,7 @@
"Lao" '((charset lao)
(coding-system lao)
(coding-priority lao)
- (input-method . "lao")
+ ;; (input-method . "lao")
(nonascii-translation . lao)
(unibyte-display . lao)
(features lao-util)
Index: lisp/mule/mule-category.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/mule-category.el,v
retrieving revision 1.9
diff -u -u -r1.9 mule-category.el
--- lisp/mule/mule-category.el 2002/08/02 16:54:25 1.9
+++ lisp/mule/mule-category.el 2007/05/20 20:02:08
@@ -37,13 +37,18 @@
(defvar defined-category-hashtable (make-hash-table :size 50))
-(defun define-category (designator doc-string)
+(defun define-category (designator doc-string &optional table)
"Make a new category whose designator is DESIGNATOR.
DESIGNATOR should be a visible letter of ' ' thru '~'.
-STRING is a doc string for the category.
-Letters of 'a' thru 'z' are already used or kept for the system."
+DOC-STRING is a doc string for the category.
+Letters of 'a' thru 'z' are already used or kept for the system.
+The category should be defined only in category table TABLE, which defaults
+to the current buffer's category table, but this is not implemented. "
+ ;; #### Implement the limiting of the definition.
(check-argument-type 'category-designator-p designator)
(check-argument-type 'stringp doc-string)
+ (setq table (or table (category-table)))
+ (check-argument-type 'category-table-p table)
(puthash designator doc-string defined-category-hashtable))
(defun undefine-category (designator)
@@ -141,6 +146,10 @@
(unwind-protect
(progn ,@body)
(set-category-table current-category-table))))
+
+(defun make-category-table ()
+ "Construct a new and empty category table and return it."
+ (make-char-table 'category))
(defun describe-category ()
"Describe the category specifications in the category table.
Index: lisp/mule/tibetan.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/tibetan.el,v
retrieving revision 1.4
diff -u -u -r1.4 tibetan.el
--- lisp/mule/tibetan.el 2006/11/05 22:31:38 1.4
+++ lisp/mule/tibetan.el 2007/05/20 20:02:08
@@ -136,7 +136,8 @@
"Tibetan" '((charset tibetan tibetan-1-column)
(coding-system tibetan-iso-8bit)
(coding-priority iso-2022-7bit tibetan-iso-8bit)
- (input-method . "tibetan-wylie")
+ ;; Not available in packages.
+ ;; (input-method . "tibetan-wylie")
(features tibet-util)
(documentation . t)
(sample-text
Index: lisp/mule/vietnamese.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/vietnamese.el,v
retrieving revision 1.7
diff -u -u -r1.7 vietnamese.el
--- lisp/mule/vietnamese.el 2006/11/05 22:31:38 1.7
+++ lisp/mule/vietnamese.el 2007/05/20 20:02:08
@@ -331,7 +331,8 @@
(coding-system viscii vscii viqr)
(coding-priority viscii)
(locale "vietnamese" "vi")
- (input-method . "vietnamese-viqr")
+ ;; Not available in packages.
+ ;; (input-method . "vietnamese-viqr")
(features viet-util)
(sample-text . "Vietnamese (Ti,1*(Bng Vi,1.(Bt) Ch,1`(Bo b,1U(Bn")
(documentation . "\
Index: tests/automated/mule-tests.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/tests/automated/mule-tests.el,v
retrieving revision 1.16
diff -u -u -r1.16 mule-tests.el
--- tests/automated/mule-tests.el 2007/05/13 11:11:38 1.16
+++ tests/automated/mule-tests.el 2007/05/20 20:02:09
@@ -327,23 +327,26 @@
;;---------------------------------------------------------------
;; Test file-system character conversion (and, en passant, file ops)
;;---------------------------------------------------------------
- (let* ((scaron (make-char 'latin-iso8859-2 57))
- (latin2-string (make-string 4 scaron))
+ (let* ((dstroke (make-char 'latin-iso8859-2 80))
+ (latin2-string (make-string 4 dstroke))
(prefix (concat (file-name-as-directory
(file-truename (temp-directory)))
latin2-string))
- (name1 (make-temp-name prefix))
- (name2 (make-temp-name prefix))
(file-name-coding-system
;; 'iso-8859-X doesn't work on darwin (as of "Panther" 10.3), it
;; seems to know that file-name-coding-system is definitely utf-8
(if (string-match "darwin" system-configuration)
'utf-8
'iso-8859-2))
- )
+ ;; make-temp-name does stat(), which on OS X requires that you
+ ;; normalise, where open() will normalise for you. Previously we
+ ;; used scaron as the Latin-2 character, and make-temp-name errored
+ ;; on OS X. LATIN CAPITAL LETTER D WITH STROKE does decompose.
+ (name1 (make-temp-name prefix))
+ (name2 (make-temp-name prefix)))
+ ;; This is how you suppress output from `message', called by `write-region'
(Assert (not (equal name1 name2)))
(Assert (not (file-exists-p name1)))
- ;; This is how you suppress output from `message', called by `write-region'
(Silence-Message
(write-region (point-min) (point-max) name1))
(Assert (file-exists-p name1))
@@ -352,9 +355,8 @@
(Assert (file-exists-p name2))
(Assert (equal (file-truename name2) name1))
(Assert (equal (file-truename name1) name1)))
+ (ignore-file-errors (delete-file name1) (delete-file name2)))
- (ignore-file-errors (delete-file name1) (delete-file name2)))
-
;; Add many more file operation tests here...
;;---------------------------------------------------------------
@@ -475,6 +477,20 @@
hebrew-iso8859-8 japanese-jisx0208 japanese-jisx0212
katakana-jisx0201 korean-ksc5601 latin-iso8859-1
latin-iso8859-2 thai-xtis vietnamese-viscii-lower))))
+
+ ;; Language environments.
+ (dolist (language (mapcar 'car language-info-alist))
+ (set-language-environment language)
+ (Assert (equal language current-language-environment))
+ (set-input-method (get-language-info language 'input-method))
+ (Assert (equal (get-language-info language 'input-method)
+ current-input-method))
+ (dolist (charset (get-language-info language 'charset))
+ (Assert (charsetp (find-charset charset))))
+ (dolist (coding-system (get-language-info language 'coding-system))
+ (Assert (coding-system-p (find-coding-system coding-system))))
+ (dolist (coding-system (get-language-info language 'coding-system))
+ (Assert (coding-system-p (find-coding-system coding-system)))))
(with-temp-buffer
(flet
--
On the quay of the little Black Sea port, where the rescued pair came once
more into contact with civilization, Dobrinton was bitten by a dog which was
assumed to be mad, though it may only have been indiscriminating. (Saki)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[COMMIT] Provide some more input methods; ensure every specified langenv IM exists
17 years, 7 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
There's more to come, but that'll be committed to the trunk.
leim/ChangeLog addition:
2007-05-20 Aidan Kehoe <kehoea(a)parhasard.net>
* quail/latin-pre.el:
Require latin-euro-standards.
* quail/latin-pre.el ("latin-10-prefix"):
* quail/latin-pre.el ("latin-4-prefix"):
* quail/latin-pre.el ("latin-5-prefix"):
* quail/latin-pre.el ("latin-7-prefix"):
* quail/latin-pre.el ("latin-8-prefix"):
* quail/latin-pre.el ("latin-9-prefix"):
* quail/latin-pre.el ("latin-prefix"):
* quail/latin-pre.el ("polish-slash"):
Import these input methods from GNU, add latin-4-prefix
independently. Change to make-char instead of providing character
literals; otherwise byte-compile under 21.4 throws an error in the
Lisp reader.
2007-05-20 Aidan Kehoe <kehoea(a)parhasard.net>
* Makefile (REQUIRES):
Require latin-euro-standards, to allow us to provide
latin-{7,8,9,10} input methods.
* leim-list.el:
Register the new input methods on startup.
* quail.el (quail-lookup-key):
Accept one more argument in quail-lookup-key, as GNU does.
* quail.el (quail-map-from-table): New.
* quail.el (quail-map-from-table-1): New.
* quail.el (quail-map-from-table-2): New.
* quail.el (quail-lookup-map-and-concat): New.
Import all four functions from GNU.
mule-base/ChangeLog addition:
2007-05-20 Aidan Kehoe <kehoea(a)parhasard.net>
* mule-util.el (nested-alist-p):
Escape a parenthesis at the start of the line, for the sake of
fontification.
* mule-util.el (set-nested-alist):
Merge a change that Handa made to the function back in 1999.
XEmacs Mule Packages source patch:
Diff command: cvs -q diff -Nu
Files affected: mule-base/mule-util.el
===================================================================
RCS leim/quail/latin-pre.el
===================================================================
RCS leim/quail.el
===================================================================
RCS leim/leim-list.el
===================================================================
RCS leim/Makefile
===================================================================
RCS
Index: leim/Makefile
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/mule-packages/leim/Makefile,v
retrieving revision 1.34
diff -u -u -r1.34 Makefile
--- leim/Makefile 2006/08/14 08:31:26 1.34
+++ leim/Makefile 2007/05/20 19:13:49
@@ -22,7 +22,7 @@
MAINTAINER = XEmacs Development Team <xemacs-beta(a)xemacs.org>
PACKAGE = leim
PKG_TYPE = regular
-REQUIRES = leim mule-base fsf-compat xemacs-base
+REQUIRES = leim mule-base fsf-compat xemacs-base latin-euro-standards
CATEGORY = mule
ELCS = quail.elc leim-list.elc
Index: leim/leim-list.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/mule-packages/leim/leim-list.el,v
retrieving revision 1.5
diff -u -u -r1.5 leim-list.el
--- leim/leim-list.el 2002/07/24 16:43:09 1.5
+++ leim/leim-list.el 2007/05/20 19:13:49
@@ -99,6 +99,39 @@
"3>" "Latin-3 characters input method with prefix modifiers"
"quail/latin-pre")
(register-input-method
+ "polish-slash" "Polish" 'quail-use-package
+ "PL>" "Polish diacritics and slash character are input as `/[acelnosxzACELNOSXZ/]'."
+ "quail/latin-pre")
+(register-input-method
+ "latin-9-prefix" "Latin-9" 'quail-use-package
+ "0>" "Latin-9 characters input method with prefix modifiers"
+ "quail/latin-pre")
+(register-input-method
+ "latin-8-prefix" "Latin-8" 'quail-use-package
+ "8>" "Latin-8 characters input method with prefix modifiers"
+ "quail/latin-pre")
+(register-input-method
+ "latin-prefix" "Latin" 'quail-use-package
+ "L>" "Latin characters input method with prefix modifiers."
+ "quail/latin-pre")
+(register-input-method
+ "latin-10-prefix" "Latin-10" 'quail-use-package
+ "10>" "Latin-10 characters input method with prefix modifiers"
+ "quail/latin-pre")
+(register-input-method
+ "latin-7-prefix" "Latin-7" 'quail-use-package
+ "7>" "Latin-7 characters input method with prefix modifiers"
+ "quail/latin-pre")
+(register-input-method
+ "latin-5-prefix" "Latin-5" 'quail-use-package
+ "5>" "Latin-5 characters input method with prefix modifiers"
+ "quail/latin-pre")
+(register-input-method
+ "latin-4-prefix" "Latin-4" 'quail-use-package
+ "4>" "Latin-4 characters input method with prefix modifiers"
+ "quail/latin-pre")
+
+(register-input-method
"latin-1-postfix" "Latin-1" 'quail-use-package
"1<" "Latin-1 character input method with postfix modifiers"
"quail/latin-post")
@@ -279,6 +312,10 @@
"DA<" "Danish input method (rule: AE -> ,AF(B, OE -> ,AX(B, AA -> ,AE(B, E' -> ,AI(B)"
"quail/latin-alt")
(register-input-method
+ "lao" "Lao" 'quail-use-package
+ "(1E(B" "Lao input method simulating Lao keyboard layout based on Thai TIS620"
+ "quail/lao")
+(register-input-method
"esperanto-alt-postfix" "Latin-3" 'quail-use-package
"EO<" "Esperanto input method with postfix modifiers"
"quail/latin-alt")
@@ -322,10 +359,31 @@
"turkish-alt-postfix" "Latin-3" 'quail-use-package
"TR<" "Turkish (T,C|(Brk,Cg(Be) input method with postfix modifiers"
"quail/latin-alt")
-(register-input-method
- "ipa" "IPA" 'quail-use-package
- "IPA" "International Phonetic Alphabet for English, French, German and Italian"
- "quail/ipa")
+
+(if (not (and (fboundp 'decode-char) (decode-char 'ucs #x31C)
+ (eq #x31C (encode-char (decode-char 'ucs #x31C) 'ucs))))
+ (register-input-method
+ "ipa" "IPA" 'quail-use-package
+ "IPA"
+ "International Phonetic Alphabet for English, French, German and Italian"
+ "quail/ipa")
+
+ (register-input-method
+ "kirshenbaum-ipa" "IPA" 'quail-use-package
+ "IPA-K"
+ "International Phonetic Alphabet, Kirshenbaum ASCII transliteration."
+ "quail/ipa-21.5")
+ (register-input-method
+ "x-sampa-ipa" "IPA" 'quail-use-package
+ "IPA-S"
+ "International Phonetic Alphabet, X-SAMPA ASCII transliteration."
+ "quail/ipa-21.5")
+ (register-input-method
+ "ipa" "IPA" 'quail-use-package
+ "IPA"
+ "International Phonetic Alphabet for English, French, German and Italian"
+ "quail/ipa-21.5"))
+
(register-input-method
"korean-hanja" "Korean" 'quail-use-package
"$(C9zyS(B" "2$(C9z=D(BKSC$(CySm.(B: $(Cz1SWGO4B(B $(CySm.@G(B $(Cj$@;(B $(CGQ1[(B2$(C9zcR@87N(B $(C{<usGO?)(B $(C`TwI(B"
@@ -398,6 +456,14 @@
"chinese-tonepy" "Chinese-GB" 'quail-use-package
"$A5wF4(B" "$A::WVJdHk!K4x5wF4Rt!K!!(B"
"quail/TONEPY")
+(register-input-method
+ "tibetan-wylie" "Tibetan" 'quail-use-package
+ "TIBw" "Tibetan character input by Extended Wylie key assignment."
+ "quail/tibetan")
+(register-input-method
+ "tibetan-tibkey" "Tibetan" 'quail-use-package
+ "TIBt" "Tibetan character input by TibKey key assignment."
+ "quail/tibetan")
(register-input-method
"chinese-sw" "Chinese-GB" 'quail-use-package
"$AJWN2(B" "$A::WVJdHk!KJWN2!K!!(B"
Index: leim/quail.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/mule-packages/leim/quail.el,v
retrieving revision 1.7
diff -u -u -r1.7 quail.el
--- leim/quail.el 2006/06/03 06:58:18 1.7
+++ leim/quail.el 2007/05/20 19:13:50
@@ -965,7 +965,7 @@
(t
(error "Invalid object in Quail map: %s" def))))
-(defun quail-lookup-key (key &optional len)
+(defun quail-lookup-key (key &optional len not-reset-indices)
"Lookup KEY of length LEN in the current Quail map and return the definition.
The returned value is a Quail map specific to KEY."
(or len
@@ -1003,7 +1003,7 @@
(if (and (consp translation) (vectorp (cdr translation)))
(progn
(setq quail-current-translations translation)
- (if (quail-forget-last-selection)
+ (if (and (not not-reset-indices) (quail-forget-last-selection))
(setcar (car quail-current-translations) 0))))
;; We may have to reform cdr part of MAP.
(if (and (cdr map) (symbolp (cdr map)))
@@ -1853,6 +1853,123 @@
key binding
--- -------\n"))
(help-mode)))))
+
+
+;; Quail map generator from state transition table.
+
+(defun quail-map-from-table (table)
+ "Make quail map from state transition table TABLE.
+
+TABLE is an alist, the form is:
+ ((STATE-0 TRANSITION-0-1 TRANSITION-0-2 ...) (STATE-1 ...) ...)
+
+STATE-n are symbols to denote state. STATE-0 is the initial state.
+
+TRANSITION-n-m are transition rules from STATE-n, and have the form
+\(RULES . STATE-x) or RULES, where STATE-x is one of STATE-n above,
+RULES is a symbol whose value is an alist of keys \(string) vs the
+correponding characters or strings. The format of the symbol value of
+RULES is the same as arguments to `quail-define-rules'.
+
+If TRANSITION-n-m has the form (RULES . STATE-x), it means that
+STATE-n transits to STATE-x when keys in RULES are input. Recursive
+transition is allowed, i.e. STATE-x may be STATE-n.
+
+If TRANSITION-n-m has the form RULES, the transition terminates
+when keys in RULES are input.
+
+The generated map can be set for the current Quail package by the
+function `quail-install-map' (which see)."
+ (let ((state-alist (mapcar (lambda (x) (list (car x))) table))
+ tail elt)
+ ;; STATE-ALIST is an alist of states vs the correponding sub Quail
+ ;; map. It is now initialized to ((STATE-0) (STATE-1) ...).
+ ;; Set key sequence mapping rules in cdr part of each element.
+ (while table
+ (quail-map-from-table-1 state-alist (car table))
+ (setq table (cdr table)))
+
+ ;; Now STATE-ALIST has the form ((STATE-0 MAPPING-RULES) ...).
+ ;; Elements of MAPPING-RULES may have the form (STATE-x). Replace
+ ;; them with MAPPING-RULES of STATE-x to make elements of
+ ;; STATE-ALIST valid Quail maps.
+ (setq tail state-alist)
+ (while tail
+ (setq elt (car tail) tail (cdr tail))
+ (quail-map-from-table-2 state-alist elt))
+
+ ;; Return the Quail map for the initial state.
+ (car state-alist)))
+
+;; STATE-INFO has the form (STATE TRANSITION ...). Set key sequence
+;; mapping rules in the element of STATE-ALIST that corresponds to
+;; STATE according to TRANSITION ...
+(defun quail-map-from-table-1 (state-alist state-info)
+ (let* ((state (car state-info))
+ (map (assq state state-alist))
+ (transitions (cdr state-info))
+ elt)
+ (while transitions
+ (setq elt (car transitions) transitions (cdr transitions))
+ (let (rules dst-state key trans)
+ ;; ELT has the form (RULES-SYMBOL . STATE-x) or RULES-SYMBOL.
+ ;; STATE-x is one of car parts of STATE-ALIST's elements.
+ (if (consp elt)
+ (setq rules (symbol-value (car elt))
+ ;; Set (STATE-x) as branches for all keys in RULES.
+ ;; It is replaced with actual branches for STATE-x
+ ;; later in `quail-map-from-table-2'.
+ dst-state (list (cdr elt)))
+ (setq rules (symbol-value elt)))
+ (while rules
+ (setq key (car (car rules)) trans (cdr (car rules))
+ rules (cdr rules))
+ (if (stringp trans)
+ (if (= (length trans) 1)
+ (setq trans (aref trans 0))
+ (setq trans (string-to-vector trans))))
+ (set-nested-alist key trans map nil dst-state))))))
+
+;; ELEMENT is one element of STATE-ALIST. ELEMENT is a nested alist;
+;; the form is:
+;; (STATE (CHAR NESTED-ALIST) ...)
+;; NESTED-ALIST is a nested alist; the form is:
+;; (TRANS (CHAR NESTED-ALIST) ...)
+;; or
+;; (TRANS (CHAR NESTED-ALIST) ... . (STATE-x))
+;; Here, the task is to replace all occurrences of (STATE-x) with:
+;; (cdr (assq STATE-x STATE-ALIST))
+
+(defun quail-map-from-table-2 (state-alist element)
+ (let ((prev element)
+ (tail (cdr element))
+ elt)
+ (while (cdr tail)
+ (setq elt (car tail) prev tail tail (cdr tail))
+ (quail-map-from-table-2 state-alist (cdr elt)))
+ (setq elt (car tail))
+ (if (consp elt)
+ (quail-map-from-table-2 state-alist (cdr elt))
+ (setcdr prev (cdr (assq elt state-alist))))))
+
+;; Concatenate translations for all heading substrings of KEY in the
+;; current Quail map. Here, `heading substring' means (substring KEY
+;; 0 LEN), where LEN is 1, 2, ... (length KEY).
+(defun quail-lookup-map-and-concat (key)
+ (let* ((len (length key))
+ (translation-list nil)
+ map)
+ (while (> len 0)
+ (setq map (quail-lookup-key key len t)
+ len (1- len))
+ (if map
+ (let* ((def (quail-map-definition map))
+ (trans (if (consp def) (aref (cdr def) (car (car def)))
+ def)))
+ (if (integerp trans)
+ (setq trans (char-to-string trans)))
+ (setq translation-list (cons trans translation-list)))))
+ (apply 'concat translation-list)))
(defvar quail-directory-name "quail"
Index: leim/quail/latin-pre.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/mule-packages/leim/quail/latin-pre.el,v
retrieving revision 1.1.1.1
diff -u -u -r1.1.1.1 latin-pre.el
--- leim/quail/latin-pre.el 1998/01/14 06:34:57 1.1.1.1
+++ leim/quail/latin-pre.el 2007/05/20 19:14:28
@@ -30,6 +30,13 @@
(require 'quail)
+;; If things were nice and serial in 21.4 we could use literals for
+;; latin-iso8859-{14,15,16} after this require, as GNU does. But they're
+;; not, so we call make-char below, to prevent an invalid read syntax error
+;; on byte-compile.
+
+(require 'latin-euro-standards)
+
(quail-define-package
"latin-1-prefix" "Latin-1" "1>" t
"Latin-1 characters input method with prefix modifiers
@@ -624,3 +631,955 @@
(".g" ?,Cu(B)
(".z" ?,C?(B)
)
+
+(quail-define-package
+ "polish-slash" "Polish" "PL>" nil
+ "Polish diacritics and slash character are input as `/[acelnosxzACELNOSXZ/]'.
+For example, the character named `aogonek' is obtained by `/a'."
+ nil t t t nil nil nil nil nil nil t)
+
+(quail-define-rules
+ ("//" ?/)
+ ("/a" ?,B1(B)
+ ("/c" ?,Bf(B)
+ ("/e" ?,Bj(B)
+ ("/l" ?,B3(B)
+ ("/n" ?,Bq(B)
+ ("/o" ?,Bs(B)
+ ("/s" ?,B6(B)
+ ("/x" ?,B<(B)
+ ("/z" ?,B?(B)
+ ("/A" ?,B!(B)
+ ("/C" ?,BF(B)
+ ("/E" ?,BJ(B)
+ ("/L" ?,B#(B)
+ ("/N" ?,BQ(B)
+ ("/O" ?,BS(B)
+ ("/S" ?,B&(B)
+ ("/X" ?,B,(B)
+ ("/Z" ?,B/(B))
+
+(quail-define-package
+ "latin-9-prefix" "Latin-9" "0>" t
+ (apply 'format
+ "Latin-9 (ISO-8859-15) characters input method with prefix modifiers
+
+ effect | prefix | examples
+ ------------+--------+----------
+ acute | ' | 'a -> %c
+ grave | ` | `a -> %c
+ circumflex | ^ | ^a -> %c
+ diaeresis | \" | \"a -> %c, \"Y -> %c
+ tilde | ~ | ~a -> %c
+ caron | ~ | ~z -> %c
+ cedilla | ~ | ~c -> %c
+ misc | \" ~ / | \"s -> %c ~d -> %c ~t -> %c /a -> %c /e -> %c /o -> %c
+ | \" ~ / | /o -> %c
+ symbol | ~ | ~> -> %c ~< -> %c ~! -> %c ~? -> %c ~~ -> %c
+ | ~ | ~s -> %c ~e -> %c ~. -> %c ~$ -> %c ~u -> %c
+ | ~ | ~- -> %c ~= -> %c
+ symbol | _ / | _o -> %c _a -> %c // -> %c /\\ -> %c _y -> %c
+ | _ / | _: -> %c /c -> %c ~p -> %c
+ | _ / | /= -> %c
+ symbol | ^ | ^r -> %c ^c -> %c ^1 -> %c ^2 -> %c ^3 -> %c _a -> %c
+" (mapcar (lambda (code) (make-char 'latin-iso8859-15 code))
+
+ '(97 96 98 100 62 99 56 103 95 112 126 101 102 120 61 59 43 33 63
+ 56 39 36 55 35 53 45 47 58 42 48 87 37 119 34 54 44 46 41 57 50
+ 51 42)))
+ nil t nil nil nil nil nil nil nil nil t)
+
+(loop
+ for (string code)
+ in '(("'A" #x41)
+ ("'E" #x49)
+ ("'I" #x4d)
+ ("'O" #x53)
+ ("'U" #x5a)
+ ("'Y" #x5d)
+ ("'a" #x61)
+ ("'e" #x69)
+ ("'i" #x6d)
+ ("'o" #x73)
+ ("'u" #x7a)
+ ("'y" #x7d)
+ ("' " #x27)
+ ("`A" #x40)
+ ("`E" #x48)
+ ("`I" #x4c)
+ ("`O" #x52)
+ ("`U" #x59)
+ ("`a" #x60)
+ ("`e" #x68)
+ ("`i" #x6c)
+ ("`o" #x72)
+ ("`u" #x79)
+ ("``" #x60)
+ ("` " #x60)
+ ("^A" #x42)
+ ("^E" #x4a)
+ ("^I" #x4e)
+ ("^O" #x54)
+ ("^U" #x5b)
+ ("^a" #x62)
+ ("^e" #x6a)
+ ("^i" #x6e)
+ ("^o" #x74)
+ ("^u" #x7b)
+ ("^^" #x5e)
+ ("^ " #x5e)
+ ("\"A" #x44)
+ ("\"E" #x4b)
+ ("\"I" #x4f)
+ ("\"O" #x56)
+ ("\"U" #x5c)
+ ("\"a" #x64)
+ ("\"e" #x6b)
+ ("\"i" #x6f)
+ ("\"o" #x76)
+ ("\"s" #x5f)
+ ("\"u" #x7c)
+ ("\"y" #x7f)
+ ("\" " #x22)
+ ("~A" #x43)
+ ("~C" #x47)
+ ("~D" #x50)
+ ("~N" #x51)
+ ("~O" #x55)
+ ("~S" #x26)
+ ("~T" #x5e)
+ ("~Z" #x34)
+ ("~a" #x63)
+ ("~c" #x67)
+ ("~d" #x70)
+ ("~n" #x71)
+ ("~o" #x75)
+ ("~s" #x28)
+ ("~t" #x7e)
+ ("~z" #x38)
+ ("~>" #x3b)
+ ("~<" #x2b)
+ ("~!" #x21)
+ ("~?" #x3f)
+ ("~ " #x7e)
+ ("/A" #x45)
+ ("/E" #x46)
+ ("/O" #x58)
+ ("/a" #x65)
+ ("/e" #x66)
+ ("/o" #x78)
+ ("//" #x30)
+ ("/ " #x2f)
+ ("_o" #x3a)
+ ("_a" #x2a)
+ ("_+" #x31)
+ ("_y" #x25)
+ ("_:" #x77)
+ ("_ " #x20)
+ ("__" #x5f)
+ ("/c" #x22)
+ ("/\\" #x57)
+ ("/o" #x3d)
+ ("/O" #x3c)
+ ("\"Y" #x3e)
+ ("~s" #x27)
+ ("~p" #x36)
+ ("~e" #x24)
+ ("~." #x37)
+ ("~$" #x23)
+ ("~u" #x35)
+ ("^r" #x2e)
+ ("^c" #x29)
+ ("^1" #x39)
+ ("^2" #x32)
+ ("^3" #x33)
+ ("~-" #x2d)
+ ("~=" #x2f)
+ ("/=" #x2c))
+ do (quail-defrule string (make-char 'latin-iso8859-15 code)))
+
+;; Latin-8 was done by an Englishman -- Johnny Celt should take a
+;; squint at it.
+;;
+;; "Johnny" Celt here; it's fine. Aidan Kehoe, So Mai 20 15:58:45 CEST
+;; 2007
+
+(quail-define-package
+ "latin-8-prefix" "Latin-8" "8>" t
+ (apply 'format
+ "Latin-8 (ISO 8859-14) characters input method with prefix modifiers
+
+ effect | prefix | examples
+ ------------+--------+----------
+ acute | ' | 'a -> %c
+ grave | ` | `a -> %c
+ circumflex | ^ | ^w -> %c
+ diaeresis | \" | \"a -> %c
+ dot above | . | .b -> %c
+ tilde | ~ | ~a -> %c
+ cedilla | ~ | ~c -> %c
+ misc | \" ~ / | \"s -> %c /a -> %c /e -> %c /o -> %c
+ | ~ | ~s -> %c ~$ -> %c ~p -> %c
+ symbol | ^ | ^r -> %c ^c -> %c
+"
+ (mapcar (lambda (code) (make-char 'latin-iso8859-14 code))
+ '(97 96 112 100 34 99 103 95 101 102 120 39 35 54 46 41)))
+ nil t nil nil nil nil nil nil nil nil t)
+
+;; Basically following Latin-1, plus dottiness from Latin-3.
+(loop
+ for (string code)
+ in '((".B" #x21)
+ (".b" #x22)
+ (".c" #x25)
+ (".C" #x24)
+ (".D" #x26)
+ (".d" #x2b)
+ (".f" #x31)
+ (".F" #x30)
+ (".g" #x33)
+ (".G" #x32)
+ (".m" #x35)
+ (".M" #x34)
+ (".p" #x39)
+ (".P" #x37)
+ (".s" #x3f)
+ (".S" #x3b)
+ (".t" #x77)
+ (".T" #x57)
+ ("'A" #x41)
+ ("'E" #x49)
+ ("'I" #x4d)
+ ("'O" #x53)
+ ("'U" #x5a)
+ ("'Y" #x5d)
+ ("'W" #x2a)
+ ("'a" #x61)
+ ("'e" #x69)
+ ("'i" #x6d)
+ ("'o" #x73)
+ ("'u" #x7a)
+ ("'w" #x3a)
+ ("'y" #x7d)
+ ("' " #x27)
+ ("`A" #x40)
+ ("`E" #x48)
+ ("`I" #x4c)
+ ("`O" #x52)
+ ("`U" #x59)
+ ("`W" #x28)
+ ("`Y" #x2c)
+ ("`a" #x60)
+ ("`e" #x68)
+ ("`i" #x6c)
+ ("`o" #x72)
+ ("`u" #x79)
+ ("`w" #x38)
+ ("`y" #x3c)
+ ("``" #x60)
+ ("` " #x60)
+ ("^A" #x42)
+ ("^E" #x4a)
+ ("^I" #x4e)
+ ("^O" #x54)
+ ("^U" #x5b)
+ ("^a" #x62)
+ ("^e" #x6a)
+ ("^i" #x6e)
+ ("^o" #x74)
+ ("^u" #x7b)
+ ("^w" #x70)
+ ("^W" #x50)
+ ("^y" #x7e)
+ ("^Y" #x5e)
+ ("^^" #x5e)
+ ("^ " #x5e)
+ ("\"A" #x44)
+ ("\"E" #x4b)
+ ("\"I" #x4f)
+ ("\"O" #x56)
+ ("\"U" #x5c)
+ ("\"a" #x64)
+ ("\"e" #x6b)
+ ("\"i" #x6f)
+ ("\"o" #x76)
+ ("\"s" #x5f)
+ ("\"u" #x7c)
+ ("\"w" #x3e)
+ ("\"W" #x3d)
+ ("\"y" #x7f)
+ ("\"Y" #x2f)
+ ("\" " #x22)
+ ("~A" #x43)
+ ("~C" #x47)
+ ("~N" #x51)
+ ("~O" #x55)
+ ("~a" #x63)
+ ("~c" #x67)
+ ("~n" #x71)
+ ("~o" #x75)
+ ("~ " #x7e)
+ ("/A" #x45)
+ ("/E" #x46)
+ ("/O" #x58)
+ ("/a" #x65)
+ ("/e" #x66)
+ ("/o" #x78)
+ ("/ " #x2f)
+ ("~p" #x36)
+ ("~s" #x27)
+ ("~$" #x23)
+ ("^r" #x2e)
+ ("^c" #x29))
+ do (quail-defrule string (make-char 'latin-iso8859-14 code)))
+
+;; XEmacs change; breves removed from the docstring since we don't actually
+;; support them. Also, encode characters using the standard ISO-2022-7
+;; escapes instead of GNU's mule-unicode-XXXX-XXXX character sets.
+(quail-define-package
+ "latin-prefix" "Latin" "L>" t
+ (format "Latin characters input method with prefix modifiers.
+This is the union of various input methods originally made for input
+of characters from a single Latin-N charset.
+
+ effect | prefix | examples
+ ------------+--------+----------
+ acute | ' | 'a -> ,Aa(B, '' -> ,A4(B
+ grave | ` | `a -> ,A`(B
+ circumflex | ^ | ^a -> ,Ab(B
+ diaeresis | \" | \"a -> ,Ad(B \"\" -> ,A((B
+ tilde | ~ | ~a -> ,Ac(B
+ cedilla | ~ | ~c -> ,Ag(B
+ dot above | . | .g -> %c .B -> %c
+ misc | \" ~ / | \"s -> ,A_(B ~d -> ,Ap(B ~t -> ,A~(B /a -> ,Ae(B /e -> ,Af(B /o -> ,Ax(B
+ symbol | ~ | ~> -> ,A;(B ~< -> ,A+(B ~! -> ,A!(B ~? -> ,A?(B ~~ -> ,A8(B
+ symbol | _ / | _o -> ,A:(B _a -> ,A*(B // -> ,A0(B /\\ -> ,AW(B _y -> ,A%(B
+ symbol | ^ | ^r -> ,A.(B ^c -> ,A)(B ^1 -> ,A9(B ^2 -> ,A2(B ^3 -> ,A3(B
+" (make-char 'latin-iso8859-3 117) (make-char 'latin-iso8859-14 33))
+ nil t nil nil nil nil nil nil nil nil t)
+
+(loop for (string charset code)
+ in '(("' " ascii #x27)
+ ("''" latin-iso8859-1 #x34)
+ ("'A" latin-iso8859-1 #x41)
+ ("'E" latin-iso8859-1 #x49)
+ ("'I" latin-iso8859-1 #x4d)
+ ("'O" latin-iso8859-1 #x53)
+ ("'U" latin-iso8859-1 #x5a)
+ ("'W" latin-iso8859-14 #x2a)
+ ("'Y" latin-iso8859-1 #x5d)
+ ("'a" latin-iso8859-1 #x61)
+ ("'e" latin-iso8859-1 #x69)
+ ("'i" latin-iso8859-1 #x6d)
+ ("'o" latin-iso8859-1 #x73)
+ ("'u" latin-iso8859-1 #x7a)
+ ("'w" latin-iso8859-14 #x3a)
+ ("'y" latin-iso8859-1 #x7d)
+ (".B" latin-iso8859-14 #x21)
+ (".C" latin-iso8859-14 #x24)
+ (".D" latin-iso8859-14 #x26)
+ (".F" latin-iso8859-14 #x30)
+ (".G" latin-iso8859-14 #x32)
+ (".I" latin-iso8859-3 #x29)
+ (".M" latin-iso8859-14 #x34)
+ (".P" latin-iso8859-14 #x37)
+ (".S" latin-iso8859-14 #x3b)
+ (".T" latin-iso8859-14 #x57)
+ (".Z" latin-iso8859-3 #x2f)
+ (".b" latin-iso8859-14 #x22)
+ (".c" latin-iso8859-14 #x25)
+ (".d" latin-iso8859-14 #x2b)
+ (".f" latin-iso8859-14 #x31)
+ (".g" latin-iso8859-3 #x75)
+ (".m" latin-iso8859-14 #x35)
+ (".p" latin-iso8859-14 #x39)
+ (".s" latin-iso8859-14 #x3f)
+ (".t" latin-iso8859-14 #x77)
+ (".z" latin-iso8859-3 #x3f)
+ ("/ " ascii #x2f)
+ ("/#" latin-iso8859-1 #x23)
+ ("/$" latin-iso8859-1 #x24)
+ ("/." latin-iso8859-3 #x7f)
+ ("//" latin-iso8859-1 #x30)
+ ("/2" latin-iso8859-1 #x3d)
+ ("/3" latin-iso8859-1 #x3e)
+ ("/4" latin-iso8859-1 #x3c)
+ ("/=" latin-iso8859-1 #x2c)
+ ("/A" latin-iso8859-1 #x45)
+ ("/C" latin-iso8859-3 #x45)
+ ("/E" latin-iso8859-1 #x46)
+ ("/G" latin-iso8859-3 #x55)
+ ("/H" latin-iso8859-3 #x21)
+ ("/I" latin-iso8859-3 #x29)
+ ("/O" latin-iso8859-1 #x58)
+ ("/Z" latin-iso8859-3 #x2f)
+ ("/\\" latin-iso8859-1 #x57)
+ ("/a" latin-iso8859-1 #x65)
+ ("/c" latin-iso8859-1 #x22)
+ ("/c" latin-iso8859-3 #x65)
+ ("/e" latin-iso8859-1 #x66)
+ ("/g" latin-iso8859-3 #x75)
+ ("/h" latin-iso8859-3 #x31)
+ ("/i" latin-iso8859-3 #x39)
+ ("/o" latin-iso8859-1 #x78)
+ ("/o" latin-iso8859-15 #x3d)
+ ("/z" latin-iso8859-2 #x3f)
+ ("\" " ascii #x22)
+ ("\"A" latin-iso8859-1 #x44)
+ ("\"E" latin-iso8859-1 #x4b)
+ ("\"I" latin-iso8859-1 #x4f)
+ ("\"O" latin-iso8859-1 #x56)
+ ("\"U" latin-iso8859-1 #x5c)
+ ("\"W" latin-iso8859-14 #x3d)
+ ("\"Y" latin-iso8859-14 #x2f)
+ ("\"\"" latin-iso8859-1 #x28)
+ ("\"a" latin-iso8859-1 #x64)
+ ("\"e" latin-iso8859-1 #x6b)
+ ("\"i" latin-iso8859-1 #x6f)
+ ("\"o" latin-iso8859-1 #x76)
+ ("\"s" latin-iso8859-1 #x5f)
+ ("\"u" latin-iso8859-1 #x7c)
+ ("\"w" latin-iso8859-14 #x3e)
+ ("\"y" latin-iso8859-1 #x7f)
+ ("^ " ascii #x5e)
+ ("^1" latin-iso8859-1 #x39)
+ ("^2" latin-iso8859-1 #x32)
+ ("^3" latin-iso8859-1 #x33)
+ ("^A" latin-iso8859-1 #x42)
+ ("^C" latin-iso8859-3 #x46)
+ ("^E" latin-iso8859-1 #x4a)
+ ("^G" latin-iso8859-3 #x58)
+ ("^H" latin-iso8859-3 #x26)
+ ("^I" latin-iso8859-1 #x4e)
+ ("^J" latin-iso8859-3 #x2c)
+ ("^O" latin-iso8859-1 #x54)
+ ("^S" latin-iso8859-3 #x5e)
+ ("^U" latin-iso8859-1 #x5b)
+ ("^W" latin-iso8859-14 #x50)
+ ("^Y" latin-iso8859-14 #x5e)
+ ("^^" ascii #x5e)
+ ("^a" latin-iso8859-1 #x62)
+ ("^c" latin-iso8859-1 #x29)
+ ("^c" latin-iso8859-3 #x66)
+ ("^e" latin-iso8859-1 #x6a)
+ ("^g" latin-iso8859-3 #x78)
+ ("^h" latin-iso8859-3 #x36)
+ ("^i" latin-iso8859-1 #x6e)
+ ("^j" latin-iso8859-3 #x3c)
+ ("^o" latin-iso8859-1 #x74)
+ ("^r" latin-iso8859-1 #x2e)
+ ("^s" latin-iso8859-3 #x7e)
+ ("^u" latin-iso8859-1 #x7b)
+ ("^w" latin-iso8859-14 #x70)
+ ("^y" latin-iso8859-14 #x7e)
+ ("_+" latin-iso8859-1 #x31)
+ ("_:" latin-iso8859-1 #x77)
+ ("_a" latin-iso8859-1 #x2a)
+ ("_o" latin-iso8859-1 #x3a)
+ ("_y" latin-iso8859-1 #x25)
+ ("_ " latin-iso8859-1 #x20)
+ ("` " ascii #x60)
+ ("`A" latin-iso8859-1 #x40)
+ ("`E" latin-iso8859-1 #x48)
+ ("`I" latin-iso8859-1 #x4c)
+ ("`O" latin-iso8859-1 #x52)
+ ("`U" latin-iso8859-1 #x59)
+ ("`W" latin-iso8859-14 #x28)
+ ("`Y" latin-iso8859-14 #x2c)
+ ("``" ascii #x60)
+ ("`a" latin-iso8859-1 #x60)
+ ("`e" latin-iso8859-1 #x68)
+ ("`i" latin-iso8859-1 #x6c)
+ ("`o" latin-iso8859-1 #x72)
+ ("`u" latin-iso8859-1 #x79)
+ ("`w" latin-iso8859-14 #x38)
+ ("`y" latin-iso8859-14 #x3c)
+ ("~ " ascii #x7e)
+ ("~!" latin-iso8859-1 #x21)
+ ("~$" latin-iso8859-1 #x23)
+ ("~-" latin-iso8859-1 #x2d)
+ ("~." latin-iso8859-1 #x37)
+ ("~<" latin-iso8859-1 #x2b)
+ ("~=" latin-iso8859-1 #x2f)
+ ("~>" latin-iso8859-1 #x3b)
+ ("~?" latin-iso8859-1 #x3f)
+ ("~A" latin-iso8859-1 #x43)
+ ("~C" latin-iso8859-1 #x47)
+ ("~D" latin-iso8859-1 #x50)
+ ("~G" latin-iso8859-3 #x2b)
+ ("~N" latin-iso8859-1 #x51)
+ ("~O" latin-iso8859-1 #x55)
+ ("~O" latin-iso8859-2 #x55)
+ ("~S" latin-iso8859-3 #x2a)
+ ("~S" latin-iso8859-2 #x29)
+ ("~T" latin-iso8859-1 #x5e)
+ ("~U" latin-iso8859-3 #x5d)
+ ("~Z" latin-iso8859-2 #x2e)
+ ("~`" latin-iso8859-3 #x22)
+ ("~a" latin-iso8859-1 #x63)
+ ("~c" latin-iso8859-1 #x67)
+ ("~d" latin-iso8859-1 #x70)
+ ("~e" latin-iso8859-15 #x24)
+ ("~g" latin-iso8859-3 #x3b)
+ ("~n" latin-iso8859-1 #x71)
+ ("~o" latin-iso8859-1 #x75)
+ ("~p" latin-iso8859-1 #x36)
+ ("~s" latin-iso8859-1 #x27)
+ ("~S" latin-iso8859-3 #x2a)
+ ("~s" latin-iso8859-2 #x39)
+ ("~t" latin-iso8859-1 #x7e)
+ ("~u" latin-iso8859-1 #x35)
+ ("~u" latin-iso8859-3 #x7d)
+ ("~x" latin-iso8859-1 #x24)
+ ("~z" latin-iso8859-15 #x38)
+ ("~|" latin-iso8859-1 #x26)
+ ("~~" latin-iso8859-1 #x38))
+ do (quail-defrule string (make-char charset code)))
+
+;; XEmacs change; added.
+(quail-define-package
+ "latin-10-prefix" "Latin-10" "10>" t
+ (apply 'format
+ "Latin-10 (ISO 8859-16) characters input method with prefix modifiers
+
+ effect | prefix | examples
+ ------------+--------+----------
+ acute | ' | 'a -> %c
+ grave | ` | `a -> %c
+ circumflex | ^ | ^a -> %c
+ diaeresis | \" | \"a -> %c
+ breve | ~ | ~a -> %c
+ cedilla | , | ~c -> %c
+ ogonek | , | ,a -> %c
+ dbl. acute | : | :o -> %c
+ misc | ' , ~ | '' -> %c ,, -> %c ~< -> %c, ~D -> %c
+ | | ~s -> %c ~p -> %c
+"
+ (mapcar (lambda (code) (make-char 'latin-iso8859-16 code))
+ '(97 96 98 100 99 103 34 117 53 37 43 80 39 54)))
+ nil t nil nil nil nil nil nil nil nil t)
+
+(loop
+ for (string code)
+ in '((",A" #x21)
+ (",a" #x22)
+ ("/L" #x23)
+ ("~e" #x24)
+ (",," #x25)
+ ("~S" #x26)
+ ("/S" #x27)
+ ("~s" #x28)
+ (",S" #x2a)
+ ("~<" #x2b)
+ ("'Z" #x2c)
+ ("'z" #x2e)
+ (".Z" #x2f)
+ ("~C" #x32)
+ ("/l" #x33)
+ ("~Z" #x34)
+ ("''" #x35)
+ ("~p" #x36)
+ ("~." #x37)
+ ("~z" #x38)
+ ("~c" #x39)
+ (",s" #x3a)
+ ("~>" #x3b)
+ ("/O" #x3c)
+ ("/o" #x3d)
+ ("\"y" #x3e)
+ (".z" #x3f)
+ ("`A" #x40)
+ ("'A" #x41)
+ ("^A" #x42)
+ ("~A" #x43)
+ ("\"A" #x44)
+ ("'C" #x45)
+ ("/E" #x46)
+ (",C" #x47)
+ ("`E" #x48)
+ ("'E" #x49)
+ ("^E" #x4a)
+ ("\"E" #x4b)
+ ("`I" #x4c)
+ ("'I" #x4d)
+ ("^I" #x4e)
+ ("\"I" #x4f)
+ ("~D" #x50)
+ ("'N" #x51)
+ ("`O" #x52)
+ ("'O" #x53)
+ ("^O" #x54)
+ (":O" #x55)
+ ("\"O" #x56)
+ ("'S" #x57)
+ (":U" #x58)
+ ("`U" #x59)
+ ("'U" #x5a)
+ ("^U" #x5b)
+ ("\"U" #x5c)
+ (",E" #x5d)
+ (",T" #x5e)
+ ("/s" #x5f)
+ ("`a" #x60)
+ ("'a" #x61)
+ ("^a" #x62)
+ ("~a" #x63)
+ ("\"a" #x64)
+ ("'c" #x65)
+ ("/e" #x66)
+ (",c" #x67)
+ ("`e" #x68)
+ ("'e" #x69)
+ ("^e" #x6a)
+ ("\"e" #x6b)
+ ("`i" #x6c)
+ ("'i" #x6d)
+ ("^i" #x6e)
+ ("\"i" #x6f)
+ ("~d" #x70)
+ ("'n" #x71)
+ ("`o" #x72)
+ ("'o" #x73)
+ ("^o" #x74)
+ (":o" #x75)
+ ("\"o" #x76)
+ ("'s" #x77)
+ (":u" #x78)
+ ("`u" #x79)
+ ("'u" #x7a)
+ ("^u" #x7b)
+ ("\"u" #x7c)
+ (",e" #x7d)
+ (",t" #x7e)
+ ("\"y" #x7f))
+ do (quail-defrule string (make-char 'latin-iso8859-16 code)))
+
+;; XEmacs change; added.
+(quail-define-package
+ "latin-7-prefix" "Latin-7" "7>" t
+ (apply 'format
+ "Latin-7 (ISO 8859-13) characters input method with prefix modifiers
+
+ effect | prefix | examples
+ ------------+--------+----------
+ acute | ' | 'c -> %c, 'o -> %c
+ ogonek | , | ,a -> %c, ,u -> %c
+ macron | - | -o -> %c, -A -> %c
+ diaeresis | \" | \"u -> %c, \"o -> %c
+ h,Aa(B%cek | ~ | ~c -> %c, ~s -> %c
+ cedilla | , | ,k -> %c
+ misc | ~ ' , | ~+ -> %c, ~' -> %c [others]
+" (mapcar (lambda (code) (make-char 'latin-iso8859-13 code))
+ '(99 115 96 120 116 66 124 118 104 104 112 109 49 127)))
+ nil t nil nil nil nil nil nil nil nil t)
+
+(loop
+ for (string code)
+ in '(("''" #x21)
+ ("|c" #x22)
+ ("~L" #x23)
+ (",," #x25)
+ ("||" #x26)
+ ("/S" #x27)
+ ("/O" #x28)
+ ("~c" #x29)
+ ("~r" #x2a)
+ ("~<" #x2b)
+ ("~-" #x2c)
+ ("~-" #x2d)
+ ("~r" #x2e)
+ ("/E" #x2f)
+ ("_o" #x30)
+ ("~+" #x31)
+ ("^2" #x32)
+ ("^3" #x33)
+ ("``" #x34)
+ (",u" #x35)
+ ("~p" #x36)
+ ("~." #x37)
+ ("/o" #x38)
+ ("^1" #x39)
+ (",r" #x3a)
+ ("~>" #x3b)
+ ("/14" #x3c)
+ ("/12" #x3d)
+ ("/34" #x3e)
+ ("/e" #x3f)
+ (",A" #x40)
+ (",I" #x41)
+ ("-A" #x42)
+ ("'C" #x43)
+ ("\"A" #x44)
+ ("/A" #x45)
+ (",E" #x46)
+ ("-E" #x47)
+ ("~C" #x48)
+ ("'E" #x49)
+ ("'Z" #x4a)
+ (".E" #x4b)
+ (",G" #x4c)
+ (",K" #x4d)
+ ("-I" #x4e)
+ (",L" #x4f)
+ ("~S" #x50)
+ ("'N" #x51)
+ (",N" #x52)
+ ("'O" #x53)
+ ("-O" #x54)
+ ("~O" #x55)
+ ("\"O" #x56)
+ ("~x" #x57)
+ (",U" #x58)
+ ("/L" #x59)
+ ("'S" #x5a)
+ ("-U" #x5b)
+ ("\"U" #x5c)
+ (".Z" #x5d)
+ ("~Z" #x5e)
+ ("\"s" #x5f)
+ (",a" #x60)
+ (",i" #x61)
+ ("-a" #x62)
+ ("'c" #x63)
+ ("\"a" #x64)
+ ("/a" #x65)
+ (",e" #x66)
+ ("-e" #x67)
+ ("~c" #x68)
+ ("'e" #x69)
+ ("'z" #x6a)
+ (".e" #x6b)
+ ("'g" #x6c)
+ (",k" #x6d)
+ ("-i" #x6e)
+ (",l" #x6f)
+ ("~s" #x70)
+ ("'n" #x71)
+ (",n" #x72)
+ ("'o" #x73)
+ ("-o" #x74)
+ ("~o" #x75)
+ ("\"o" #x76)
+ ("/+" #x77)
+ (",u" #x78)
+ ("/l" #x79)
+ ("'s" #x7a)
+ ("-u" #x7b)
+ ("\"u" #x7c)
+ (".z" #x7d)
+ ("~z" #x7e)
+ ("~'" #x7f))
+ do
+ (quail-defrule string (make-char 'latin-iso8859-13 code)))
+
+;; XEmacs change; added.
+(quail-define-package
+ "latin-5-prefix" "Latin-5" "1>" t
+ "Latin-5 (ISO 8859-9) characters input method with prefix modifiers.
+
+ effect | prefix | examples
+ ------------+--------+----------
+ acute | ' | 'a -> ,Ma(B, '' -> ,M4(B
+ grave | ` | `a -> ,M`(B
+ circumflex | ^ | ^a -> ,Mb(B
+ diaeresis | \" | \"a -> ,Md(B, \"\" -> ,M((B
+ tilde | ~ | ~a -> ,Mc(B
+ cedilla | ~ | ~c -> ,Mg(B
+ misc | ---- | \"s -> ,M_(B, ~g -> ,Mp(B, ~s -> ,M~(B, /a -> ,Me(B, /e -> ,Mf(B, /o -> ,Mx(B
+ symbol | ~ | ~> -> ,M;(B, ~< -> ,M+(B, ~! -> ,M!(B, ~? -> ,M?(B, ~~ -> ,M8(B
+" nil t nil nil nil nil nil nil nil nil t)
+
+(quail-define-rules
+ ("'A" ?,MA(B)
+ ("'E" ?,MI(B)
+ ("'I" ?,MM(B)
+ ("'O" ?,MS(B)
+ ("'U" ?,MZ(B)
+ ("'Y" ?,M](B)
+ ("'a" ?,Ma(B)
+ ("'e" ?,Mi(B)
+ ("'i" ?,Mm(B)
+ ("'o" ?,Ms(B)
+ ("'u" ?,Mz(B)
+ ("'y" ?,M}(B)
+ ("''" ?,M4(B)
+ ("' " ?')
+ ("`A" ?,M@(B)
+ ("`E" ?,MH(B)
+ ("`I" ?,ML(B)
+ ("`O" ?,MR(B)
+ ("`U" ?,MY(B)
+ ("`a" ?,M`(B)
+ ("`e" ?,Mh(B)
+ ("`i" ?,Ml(B)
+ ("`o" ?,Mr(B)
+ ("`u" ?,My(B)
+ ("``" ?`)
+ ("` " ?`)
+ ("^A" ?,MB(B)
+ ("^E" ?,MJ(B)
+ ("^I" ?,MN(B)
+ ("^O" ?,MT(B)
+ ("^U" ?,M[(B)
+ ("^a" ?,Mb(B)
+ ("^e" ?,Mj(B)
+ ("^i" ?,Mn(B)
+ ("^o" ?,Mt(B)
+ ("^u" ?,M{(B)
+ ("^^" ?^)
+ ("^ " ?^)
+ ("\"A" ?,MD(B)
+ ("\"E" ?,MK(B)
+ ("\"I" ?,MO(B)
+ ("\"O" ?,MV(B)
+ ("\"U" ?,M\(B)
+ ("\"a" ?,Md(B)
+ ("\"e" ?,Mk(B)
+ ("\"i" ?,Mo(B)
+ ("\"o" ?,Mv(B)
+ ("\"s" ?,M_(B)
+ ("\"u" ?,M|(B)
+ ("\"y" ?,M(B)
+ ("\"\"" ?,M((B)
+ ("\" " ?\")
+ ("~A" ?,MC(B)
+ ("~C" ?,MG(B)
+ ("~G" ?,MP(B)
+ ("~N" ?,MQ(B)
+ ("~O" ?,MU(B)
+ ("~S" ?,M^(B)
+ ("~a" ?,Mc(B)
+ ("~c" ?,Mg(B)
+ ("~d" ?,Mp(B)
+ ("~n" ?,Mq(B)
+ ("~o" ?,Mu(B)
+ ("~s" ?,M~(B)
+ ("~>" ?\,M;(B)
+ ("~<" ?\,M+(B)
+ ("~!" ?,M!(B)
+ ("~?" ?,M?(B)
+ ("~~" ?,M8(B)
+ ("~ " ?~)
+ ("/A" ?,ME(B)
+ ("/E" ?,MF(B)
+ ("/O" ?,MX(B)
+ ("/a" ?,Me(B)
+ ("/e" ?,Mf(B)
+ ("/o" ?,Mx(B)
+ ("//" ?,M0(B)
+ ("/ " ? ))
+
+;; XEmacs change; added.
+(quail-define-package
+ "latin-4-prefix" "Latin-4" "4>" t
+ "Latin-4 (ISO 8859-4) characters input method with prefix modifiers
+
+ effect | prefix | examples
+ ------------+--------+----------
+ acute | ' | 'a -> ,Da(B
+ macron | - | -a -> ,D`(B
+ circumflex | ^ | ^a -> ,Db(B
+ diaeresis | \" | \"a -> ,Dd(B
+ tilde | ~ | ~a -> ,Dc(B
+ cedilla | , | ~k -> ,Ds(B
+ ogonek | , | ,i -> ,Dg(B
+ Nordic | / | /a -> ,De(B, /e -> ,Df(B, /o -> ,Dx(B
+ misc | ' , ~ | '' -> ,D4(B ,. -> ,D2(B ,, -> ,D8(B
+ | | /S -> ,D'(B, ~x -> ,DW(B
+" nil t nil nil nil nil nil nil nil nil t)
+
+(quail-define-rules
+ (",A" ?,D!(B)
+ ("~k" ?,D"(B)
+ (",R" ?,D#(B)
+ ("~I" ?,D%(B)
+ (",L" ?,D&(B)
+ ("/S" ?,D'(B)
+ ("\"\"" ?,D((B)
+ ("-E" ?,D*(B)
+ (",G" ?,D+(B)
+ ("-T" ?,D,(B)
+ ("~Z" ?,D.(B)
+ ("--" ?,D/(B)
+ (",." ?,D2(B)
+ (",r" ?,D3(B)
+ ("''" ?,D4(B)
+ ("~i" ?,D5(B)
+ (",l" ?,D6(B)
+ ("~~" ?,D7(B)
+ (",," ?,D8(B)
+ ("~s" ?,D9(B)
+ ("-e" ?,D:(B)
+ ("'g" ?,D;(B)
+ ("-t" ?,D<(B)
+ (",N" ?,D=(B)
+ ("~z" ?,D>(B)
+ (".n" ?,D?(B)
+ ("-A" ?,D@(B)
+ ("'A" ?,DA(B)
+ ("^A" ?,DB(B)
+ ("~A" ?,DC(B)
+ ("\"A" ?,DD(B)
+ ("/A" ?,DE(B)
+ ("/E" ?,DF(B)
+ (",I" ?,DG(B)
+ ("~C" ?,DH(B)
+ ("'E" ?,DI(B)
+ (",E" ?,DJ(B)
+ ("\"E" ?,DK(B)
+ (".E" ?,DL(B)
+ ("'I" ?,DM(B)
+ ("^I" ?,DN(B)
+ ("-I" ?,DO(B)
+ ("~D" ?,DP(B)
+ (",N" ?,DQ(B)
+ ("-O" ?,DR(B)
+ (",K" ?,DS(B)
+ ("^O" ?,DT(B)
+ ("~O" ?,DU(B)
+ ("\"O" ?,DV(B)
+ ("~x" ?,DW(B)
+ ("/O" ?,DX(B)
+ (",U" ?,DY(B)
+ ("'U" ?,DZ(B)
+ ("^U" ?,D[(B)
+ ("\"U" ?,D\(B)
+ ("~U" ?,D](B)
+ ("-U" ?,D^(B)
+ ("/s" ?,D_(B)
+ ("-a" ?,D`(B)
+ ("'a" ?,Da(B)
+ ("^a" ?,Db(B)
+ ("~a" ?,Dc(B)
+ ("\"a" ?,Dd(B)
+ ("/a" ?,De(B)
+ ("/e" ?,Df(B)
+ (",i" ?,Dg(B)
+ ("~c" ?,Dh(B)
+ ("'e" ?,Di(B)
+ (",e" ?,Dj(B)
+ ("\"e" ?,Dk(B)
+ (".e" ?,Dl(B)
+ ("'i" ?,Dm(B)
+ ("^i" ?,Dn(B)
+ ("-i" ?,Do(B)
+ ("~d" ?,Dp(B)
+ (",n" ?,Dq(B)
+ ("-o" ?,Dr(B)
+ (",k" ?,Ds(B)
+ ("^o" ?,Dt(B)
+ ("~o" ?,Du(B)
+ ("\"o" ?,Dv(B)
+ ("~-" ?,Dw(B)
+ ("/o" ?,Dx(B)
+ (",u" ?,Dy(B)
+ ("'u" ?,Dz(B)
+ ("^u" ?,D{(B)
+ ("\"u" ?,D|(B)
+ ("~u" ?,D}(B)
+ ("-u" ?,D~(B)
+ (".." ?,D(B))
+
+
+;;; arch-tag: 83017837-6b84-4366-b183-e0577e3ed838
+;;; latin-pre.el ends here
\ No newline at end of file
Index: mule-base/mule-util.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/mule-packages/mule-base/mule-util.el,v
retrieving revision 1.2
diff -u -u -r1.2 mule-util.el
--- mule-base/mule-util.el 1999/07/23 06:55:11 1.2
+++ mule-base/mule-util.el 2007/05/20 19:15:00
@@ -148,7 +148,7 @@
Nested alist is a list of the form (ENTRY . BRANCHES), where ENTRY is
any Lisp object, and BRANCHES is a list of cons cells of the form
-(KEY-ELEMENT . NESTED-ALIST).
+\(KEY-ELEMENT . NESTED-ALIST).
You can use a nested alist to store any Lisp object (ENTRY) for a key
sequence KEYSEQ, where KEYSEQ is a sequence of KEY-ELEMENT. KEYSEQ
@@ -182,9 +182,7 @@
(setq i (1+ i)))
(setcar alist entry)
(if branches
- (if (cdr alist)
- (error "Can't set branches for keyseq %s" keyseq)
- (setcdr alist branches)))))
+ (setcdr (last alist) branches))))
;;;###autoload
(defun lookup-nested-alist (keyseq alist &optional len start nil-for-too-long)
--
On the quay of the little Black Sea port, where the rescued pair came once
more into contact with civilization, Dobrinton was bitten by a dog which was
assumed to be mad, though it may only have been indiscriminating. (Saki)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[AC21.5R21.4]
17 years, 7 months
Stephen J. Turnbull
APPROVE COMMIT 21.5 RECOMMEND 21.4
I decided to see if I could do something about the perennial progress
bar crash. I'm unable to reproduce at the moment and haven't found a
report that localizes it very well, but based on one report that has a
backtrace with XFillRectangle crashing, I'm guessing that it has to do
with the function GaugeMercury (which won't appear in most backtraces
because it's static).
The attached patch fixes a genuine bug, which has some chance of being
related to the crash. All of the callers of GaugeMercury pass it ints
in the val0 and val1 arguments, but they are declared Cardinal, which
is X-ese for "unsigned". Having done a bunch of fontlocking with it,
as least I can say it doesn't cause a new crach for me. However, I
can't say for sure it will help.
And as usual there's a gratuitous (but related) doc change. I never
saw a docstring that didn't need fussing with. :-)
Index: lisp/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v
retrieving revision 1.795
diff -u -r1.795 ChangeLog
--- lisp/ChangeLog 12 May 2007 13:12:26 -0000 1.795
+++ lisp/ChangeLog 20 May 2007 14:32:02 -0000
@@ -0,0 +1,4 @@
+2007-05-20 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * gutter-items.el (progress-feedback-with-label): Clarify docstring.
+
Index: lwlib/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v
retrieving revision 1.91
diff -u -r1.91 ChangeLog
--- lwlib/ChangeLog 17 May 2007 15:06:04 -0000 1.91
+++ lwlib/ChangeLog 20 May 2007 14:32:02 -0000
@@ -0,0 +1,13 @@
+2007-05-20 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ Gauge values are signed integers (ints).
+ (XawGaugeGetValue): Declare return value as int.
+ (XawGaugeSetValue): Declare value as int.
+
+ * xlwgauge.h: Get rid of references to Cardinal in comment.
+
+ * xlwgauge.c (GaugeGetValue): Declare value as int.
+ (GaugeMercury): Declare val0 and val1 as int. Remove redundant casts.
+ (XawGaugeGetValue): Declare return value as int.
+ (XawGaugeSetValue): Declare value as int.
+
Index: lisp/gutter-items.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/gutter-items.el,v
retrieving revision 1.8
diff -u -r1.8 gutter-items.el
--- lisp/gutter-items.el 18 Mar 2003 06:58:20 -0000 1.8
+++ lisp/gutter-items.el 20 May 2007 14:32:02 -0000
@@ -679,8 +679,10 @@
(defun progress-feedback-with-label (label fmt &optional value &rest args)
"Print a progress gauge and message in the bottom gutter area of the frame.
-First argument LABEL is an identifier for this progress gauge. The rest of the
-arguments are the same as to `format'."
+LABEL is an identifier for this progress gauge.
+FMT is a format string to be passed to `format' along with ARGS.
+Optional VALUE is the current degree of progress, an integer 0-100.
+The remaining ARGS are passed with FMT `(apply #'format FMT ARGS)'."
;; #### sometimes the buffer gets changed temporarily. I don't know
;; why this is, so protect against it.
(save-excursion
Index: lwlib/xlwgauge.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwgauge.c,v
retrieving revision 1.7
diff -u -r1.7 xlwgauge.c
--- lwlib/xlwgauge.c 2 May 2006 15:30:32 -0000 1.7
+++ lwlib/xlwgauge.c 20 May 2007 14:32:02 -0000
@@ -132,7 +132,7 @@
static void DisableUpdate (GaugeWidget);
static void GaugeGetValue (XtPointer, XtIntervalId *);
-static void GaugeMercury (Display *, Window, GC, GaugeWidget, Cardinal, Cardinal);
+static void GaugeMercury (Display *, Window, GC, GaugeWidget, int, int);
static Boolean GaugeConvert (Widget, Atom *, Atom *, Atom *,
XtPointer *, unsigned long *, int *);
@@ -817,8 +817,7 @@
*/
void
-XawGaugeSetValue (Widget w,
- Cardinal value)
+XawGaugeSetValue (Widget w, int value)
{
GaugeWidget gw = (GaugeWidget)w ;
int oldvalue ;
@@ -850,7 +849,7 @@
}
-Cardinal
+int
XawGaugeGetValue (Widget w)
{
GaugeWidget gw = (GaugeWidget)w ;
@@ -873,8 +872,8 @@
Window win,
GC gc,
GaugeWidget gw,
- Cardinal val0,
- Cardinal val1)
+ int val0,
+ int val1)
{
int v0 = gw->gauge.v0 ;
int v1 = gw->gauge.v1 ;
@@ -893,10 +892,10 @@
if( vd <= 0 ) vd = 1 ;
- if( (int) val0 < v0 ) val0 = v0 ;
- else if( (int) val0 > v1 ) val0 = v1 ;
- if( (int) val1 < v0 ) val1 = v0 ;
- else if( (int) val1 > v1 ) val1 = v1 ;
+ if( val0 < v0 ) val0 = v0 ;
+ else if( val0 > v1 ) val0 = v1 ;
+ if( val1 < v0 ) val1 = v0 ;
+ else if( val1 > v1 ) val1 = v1 ;
p0 = (val0-v0)*(e1-e0-1)/vd ;
p1 = (val1-v0)*(e1-e0-1)/vd ;
@@ -1108,7 +1107,7 @@
XtIntervalId *UNUSED (intervalId))
{
GaugeWidget gw = (GaugeWidget)clientData ;
- Cardinal value ;
+ int value ;
if( gw->gauge.update > 0 )
EnableUpdate(gw) ;
Index: lwlib/xlwgauge.h
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwgauge.h,v
retrieving revision 1.2
diff -u -r1.2 xlwgauge.h
--- lwlib/xlwgauge.h 12 Apr 2001 18:21:53 -0000 1.2
+++ lwlib/xlwgauge.h 20 May 2007 14:32:02 -0000
@@ -48,9 +48,9 @@
Name Class RepType Default Value
---- ----- ------- -------------
- value Value Cardinal 0
- minValue MinValue Cardinal 0
- maxValue MaxValue Cardinal 100
+ value Value Int 0
+ minValue Int Cardinal 0
+ maxValue Int Cardinal 100
ntics NTics Cardinal 0 +
nlabels NLabels Cardinal 0 ++
labels Labels String * NULL +++
@@ -100,7 +100,7 @@
XtPointer client ;
XtPointer rval ;
{
- *(Cardinal *)rval = value ;
+ *(int *)rval = value ;
}
*/
@@ -169,11 +169,11 @@
extern void XawGaugeSetValue(
#if NeedFunctionPrototypes
Widget gauge,
- Cardinal value
+ int value
#endif
);
-extern Cardinal XawGaugeGetValue(
+extern int XawGaugeGetValue(
#if NeedFunctionPrototypes
Widget gauge
#endif
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[PATCH] xemacs-21.5-clean: sorted abbrevs partially synced from gnu
17 years, 7 months
Adrian Aichner
Hi All, I would like to commit a patch close to this pending
successful testing by me and hopefully others too.
I don't understand what GNU Emacs system abbrevs are.
A bit of them leaked in by my port from GNU Emacs.
Let me know if you see any issues with that.
GNU Emacs seems to make no effort to present abbrev tables in sorted
order internally. I have taken a different approach for consistency
between file and buffer order and the sorting inside
define-abbrev-table does not show up at all in a
M-x profile-command RET read-abbrev-file RET
for me.
I have waited long for the sorted abbrev feature to ease review of
changes to my abbrev file by use of M-x erevision.
Looks like my patience payed off finally ;->
Best regards!
Adrian
xemacs-21.5-clean ChangeLog patch:
Diff command: cvs -q diff -U 0
Files affected: lisp/ChangeLog src/ChangeLog
Index: lisp/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v
retrieving revision 1.795
diff -u -U0 -r1.795 ChangeLog
--- lisp/ChangeLog 12 May 2007 13:12:26 -0000 1.795
+++ lisp/ChangeLog 13 May 2007 20:45:04 -0000
@@ -0,0 +1,11 @@
+2007-05-13 Adrian Aichner <adrian(a)xemacs.org>
+
+ * abbrev.el: Sort abbrev-table-name-list entries by name. Unlike
+ GNU Emacs we keep tables sorted internally too, not only when
+ writing them by `write-abbrev-file'.
+ * abbrev.el (define-abbrev-table): Sort abbrev-table-name-list by
+ table names, so that `insert-abbrevs', `list-abbrevs', and
+ `write-abbrev-file' all present them in the same order.
+ * abbrev.el (insert-abbrev-table-description): Removed. Losely
+ synced to abbrev.c from GNU Emacs.
+
Index: src/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.1059
diff -u -U0 -r1.1059 ChangeLog
--- src/ChangeLog 12 May 2007 10:59:15 -0000 1.1059
+++ src/ChangeLog 13 May 2007 20:45:15 -0000
@@ -0,0 +1,7 @@
+2007-05-13 Adrian Aichner <adrian(a)xemacs.org>
+
+ * abbrev.c: Sort abbreviations by name, similar to GNU Emacs.
+ * abbrev.c (write_abbrev): Losely ported from GNU Emacs.
+ * abbrev.c (describe_abbrev): Ditto.
+ * abbrev.c (Finsert_abbrev_table_description): Ditto.
+
xemacs-21.5-clean source patch:
Diff command: cvs -f -z3 -q diff -u -w -N
Files affected: lisp/abbrev.el
===================================================================
RCS src/abbrev.c
===================================================================
RCS
Index: src/abbrev.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/abbrev.c,v
retrieving revision 1.20
diff -u -w -r1.20 abbrev.c
--- src/abbrev.c 4 Nov 2004 23:06:15 -0000 1.20
+++ src/abbrev.c 13 May 2007 20:25:11 -0000
@@ -75,6 +75,7 @@
/* Hook to run before expanding any abbrev. */
Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;
+Lisp_Object Qsystem_type, Qcount;
struct abbrev_match_mapper_closure
{
@@ -402,12 +403,169 @@
return Vlast_abbrev;
}
+static void
+write_abbrev (Lisp_Object sym, Lisp_Object stream)
+{
+ Lisp_Object name, count, system_flag;
+ /* This function can GC */
+ struct buffer *buf = current_buffer;
+
+ if (INTP (XSYMBOL (sym)->plist))
+ {
+ count = XSYMBOL (sym)->plist;
+ system_flag = Qnil;
+ }
+ else
+ {
+ count = Fget (sym, Qcount, Qunbound);
+ system_flag = Fget (sym, Qsystem_type, Qunbound);
+ }
+
+ if (NILP (XSYMBOL_VALUE (sym)) || ! NILP (system_flag))
+ return;
+
+ buffer_insert_c_string (buf, " (");
+ name = Fsymbol_name (sym);
+ Fprin1 (name, stream);
+ buffer_insert_c_string (buf, " ");
+ Fprin1 (XSYMBOL_VALUE (sym), stream);
+ buffer_insert_c_string (buf, " ");
+ Fprin1 (XSYMBOL (sym)->function, stream);
+ buffer_insert_c_string (buf, " ");
+ Fprin1 (count, stream);
+ buffer_insert_c_string (buf, ")\n");
+}
+
+static void
+describe_abbrev (Lisp_Object sym, Lisp_Object stream)
+{
+ Lisp_Object one, count, system_flag;
+ /* This function can GC */
+ struct buffer *buf = current_buffer;
+
+ if (INTP (XSYMBOL (sym)->plist))
+ {
+ count = XSYMBOL (sym)->plist;
+ system_flag = Qnil;
+ }
+ else
+ {
+ count = Fget (sym, Qcount, Qunbound);
+ system_flag = Fget (sym, Qsystem_type, Qunbound);
+ }
+
+ if (NILP (XSYMBOL_VALUE (sym)))
+ return;
+
+ one = make_int (1);
+ Fprin1 (Fsymbol_name (sym), stream);
+
+ if (!NILP (system_flag))
+ {
+ buffer_insert_c_string (buf, " (sys)");
+ Findent_to (make_int (20), one, Qnil);
+ }
+ else
+ Findent_to (make_int (15), one, Qnil);
+
+ Fprin1 (count, stream);
+ Findent_to (make_int (20), one, Qnil);
+ Fprin1 (XSYMBOL_VALUE (sym), stream);
+ if (!NILP (XSYMBOL (sym)->function))
+ {
+ Findent_to (make_int (45), one, Qnil);
+ Fprin1 (XSYMBOL (sym)->function, stream);
+ }
+ buffer_insert_c_string (buf, "\n");
+}
+
+static int
+record_symbol (Lisp_Object sym, void *arg)
+{
+ Lisp_Object closure = * (Lisp_Object *) arg;
+ XSETCDR (closure, Fcons (sym, XCDR (closure)));
+ return 0; /* Never stop */
+}
+
+DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,
+ 1, 2, 0, /*
+Insert before point a full description of abbrev table named NAME.
+NAME is a symbol whose value is an abbrev table.
+If optional 2nd arg READABLE is non-nil, a human-readable description
+is inserted. Otherwise the description is an expression,
+a call to `define-abbrev-table', which would
+define the abbrev table NAME exactly as it is currently defined.
+
+Abbrevs marked as "system abbrevs" are normally omitted. However, if
+READABLE is non-nil, they are listed. */
+ (name, readable))
+{
+ Lisp_Object table;
+ Lisp_Object symbols;
+ Lisp_Object stream;
+ /* This function can GC */
+ struct buffer *buf = current_buffer;
+
+ CHECK_SYMBOL (name);
+ table = Fsymbol_value (name);
+ CHECK_VECTOR (table);
+
+ /* FIXME: what's the XEmacs equivalent? APA */
+ /* XSETBUFFER (stream, current_buffer); */
+ /* Does not seem to work: */
+ /* Fset_buffer (stream); */
+ stream = wrap_buffer (current_buffer);
+
+ symbols = Fcons (Qnil, Qnil);
+ /* Lisp_Object closure = Fcons (Qnil, Qnil); */
+ /* struct gcpro gcpro1; */
+ /* GCPRO1 (closure); */
+ /* map_obarray (table, record_symbol, symbols); */
+ map_obarray (table, record_symbol, &symbols);
+ /* map_obarray (table, record_symbol, &closure); */
+ symbols = XCDR (symbols);
+ symbols = Fsort (symbols, Qstring_lessp);
+
+ if (!NILP (readable))
+ {
+ buffer_insert_c_string (buf, "(");
+ Fprin1 (name, stream);
+ buffer_insert_c_string (buf, ")\n\n");
+ while (! NILP (symbols))
+ {
+ describe_abbrev (XCAR (symbols), stream);
+ symbols = XCDR (symbols);
+ }
+
+ buffer_insert_c_string (buf, "\n\n");
+ }
+ else
+ {
+ buffer_insert_c_string (buf, "(define-abbrev-table '");
+ Fprin1 (name, stream);
+ buffer_insert_c_string (buf, " '(\n");
+ while (! NILP (symbols))
+ {
+ write_abbrev (XCAR (symbols), stream);
+ symbols = XCDR (symbols);
+ }
+ buffer_insert_c_string (buf, " ))\n\n");
+ }
+
+ return Qnil;
+}
void
syms_of_abbrev (void)
{
+ DEFSYMBOL(Qcount);
+ Qcount = intern ("count");
+ staticpro (&Qcount);
+ DEFSYMBOL(Qsystem_type);
+ Qsystem_type = intern ("system-type");
DEFSYMBOL (Qpre_abbrev_expand_hook);
DEFSUBR (Fexpand_abbrev);
+ DEFSUBR (Finsert_abbrev_table_description);
}
void
Index: lisp/abbrev.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/abbrev.el,v
retrieving revision 1.6
diff -u -w -r1.6 abbrev.el
--- lisp/abbrev.el 14 Apr 2002 12:42:04 -0000 1.6
+++ lisp/abbrev.el 13 May 2007 20:25:11 -0000
@@ -87,7 +87,9 @@
((not table)
(setq table (make-abbrev-table))
(set table-name table)
- (setq abbrev-table-name-list (cons table-name abbrev-table-name-list)))
+ (setq abbrev-table-name-list
+ (sort (cons table-name abbrev-table-name-list)
+ #'string-lessp)))
(t
(setq table (wrong-type-argument 'vectorp table))
(set table-name table)))
@@ -209,64 +211,64 @@
(goto-char opoint)))))
-
-(defun insert-abbrev-table-description (name &optional human-readable)
- "Insert before point a full description of abbrev table named NAME.
-NAME is a symbol whose value is an abbrev table.
-If optional second argument HUMAN-READABLE is non-nil, insert a
-human-readable description. Otherwise the description is an
-expression, a call to `define-abbrev-table', which would define the
-abbrev table NAME exactly as it is currently defined."
- (let ((table (symbol-value name))
- (stream (current-buffer)))
- (message "Abbrev-table %s..." name)
- (if human-readable
- (progn
- (prin1 (list name) stream)
- ;; Need two terpri's or cretinous edit-abbrevs blows out
- (terpri stream)
- (terpri stream)
- (mapatoms (function (lambda (sym)
- (if (symbol-value sym)
- (let* ((n (prin1-to-string (symbol-name sym)))
- (pos (length n)))
- (princ n stream)
- (while (< pos 14)
- (write-char ?\ stream)
- (setq pos (1+ pos)))
- (princ (format " %-5S " (symbol-plist sym))
- stream)
- (if (not (symbol-function sym))
- (prin1 (symbol-value sym) stream)
- (progn
- (setq n (prin1-to-string (symbol-value sym))
- pos (+ pos 6 (length n)))
- (princ n stream)
- (while (< pos 45)
- (write-char ?\ stream)
- (setq pos (1+ pos)))
- (prin1 (symbol-function sym) stream)))
- (terpri stream)))))
- table)
- (terpri stream))
- (progn
- (princ "\(define-abbrev-table '" stream)
- (prin1 name stream)
- (princ " '\(\n" stream)
- (mapatoms (function (lambda (sym)
- (if (symbol-value sym)
- (progn
- (princ " " stream)
- (prin1 (list (symbol-name sym)
- (symbol-value sym)
- (symbol-function sym)
- (symbol-plist sym))
- stream)
- (terpri stream)))))
- table)
- (princ " \)\)\n" stream)))
- (terpri stream))
- (message ""))
+; APA: Moved to c (ported function from GNU Emacs to src/abbrev.c)
+; (defun insert-abbrev-table-description (name &optional human-readable)
+; "Insert before point a full description of abbrev table named NAME.
+; NAME is a symbol whose value is an abbrev table.
+; If optional second argument HUMAN-READABLE is non-nil, insert a
+; human-readable description. Otherwise the description is an
+; expression, a call to `define-abbrev-table', which would define the
+; abbrev table NAME exactly as it is currently defined."
+; (let ((table (symbol-value name))
+; (stream (current-buffer)))
+; (message "Abbrev-table %s..." name)
+; (if human-readable
+; (progn
+; (prin1 (list name) stream)
+; ;; Need two terpri's or cretinous edit-abbrevs blows out
+; (terpri stream)
+; (terpri stream)
+; (mapatoms (function (lambda (sym)
+; (if (symbol-value sym)
+; (let* ((n (prin1-to-string (symbol-name sym)))
+; (pos (length n)))
+; (princ n stream)
+; (while (< pos 14)
+; (write-char ?\ stream)
+; (setq pos (1+ pos)))
+; (princ (format " %-5S " (symbol-plist sym))
+; stream)
+; (if (not (symbol-function sym))
+; (prin1 (symbol-value sym) stream)
+; (progn
+; (setq n (prin1-to-string (symbol-value sym))
+; pos (+ pos 6 (length n)))
+; (princ n stream)
+; (while (< pos 45)
+; (write-char ?\ stream)
+; (setq pos (1+ pos)))
+; (prin1 (symbol-function sym) stream)))
+; (terpri stream)))))
+; table)
+; (terpri stream))
+; (progn
+; (princ "\(define-abbrev-table '" stream)
+; (prin1 name stream)
+; (princ " '\(\n" stream)
+; (mapatoms (function (lambda (sym)
+; (if (symbol-value sym)
+; (progn
+; (princ " " stream)
+; (prin1 (list (symbol-name sym)
+; (symbol-value sym)
+; (symbol-function sym)
+; (symbol-plist sym))
+; stream)
+; (terpri stream)))))
+; table)
+; (princ " \)\)\n" stream)))
+; (terpri stream))
+; (message ""))
;;; End code not in FSF
(defun abbrev-mode (arg)
--
Adrian Aichner
mailto:adrian@xemacs.org
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
Re: [AC21.5R21.4] etags and implicit tags
17 years, 7 months
Stephen J. Turnbull
Francesco Potorti` writes:
> You could just change the call in the Makefile where etags is built by
> adding -DVERSION=whatever. WOuldn't that be simple enough?
Not quite, but our code really should get a good housecleaning anyway.
I'm just happy I can help keep yours clean. :-)
> I suggest you add this to etags.c if you are in a hurry to release. I
> should soon send out a new release with this change.
I'll revert our change; I don't care about one warning if I know a fix
is coming from upstream. I appreciate your willingness to work with
our picky warnings.
Vin says he probably won't release before June 1, and maybe a week or
two later, so I think there's plenty of time.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[PATCH] [AC21.5] Fix typo in ERROR_CHECK_* patch
17 years, 7 months
Stephen J. Turnbull
APPROVE COMMIT 21.5
My previous patch sorted the invocations of XE_COMPLEX_OPTION for the
options to --with-error-checking but forgot to move the comma from the
new last option to the old one. This caused the "text" option to be
generated incorrectly.
ChangeLog addition:
2007-05-18 Stephen J. Turnbull <stephen(a)xemacs.org>
* configure.ac (error-checking): Move comma misplaced by sorting.
* configure: Regenerate.
21.5 source patch:
Diff command: cvs -q diff -u
Files affected: configure.ac
Index: configure.ac
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v
retrieving revision 1.57
diff -u -u -r1.57 configure.ac
--- configure.ac 17 May 2007 15:42:24 -0000 1.57
+++ configure.ac 18 May 2007 13:39:44 -0000
@@ -991,9 +991,9 @@
XE_COMPLEX_OPTION([gc],[""]),
XE_COMPLEX_OPTION([glyphs],[""]),
XE_COMPLEX_OPTION([malloc],[""]),
- XE_COMPLEX_OPTION([structures],[""])
+ XE_COMPLEX_OPTION([structures],[""]),
XE_COMPLEX_OPTION([text],[""]),
- XE_COMPLEX_OPTION([types],[""]),])
+ XE_COMPLEX_OPTION([types],[""])])
XE_MERGED_ARG([assertions],
AS_HELP_STRING([--enable-assertions],[Compile in runtime assertions.]),
[], [])
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
Re: [AC21.5R21.4] etags and implicit tags
17 years, 7 months
Stephen J. Turnbull
Vin, if you're thinking about releasing soon, let me know. I'd like
to conform to Francesco's suggestion for the next releases of 21.4 and
21.5, and don't think it will be too hard.
Francesco Potorti` writes:
> I would prefer avoiding this, if possible, by defining VERSION in the
> Makefile as appropriate.
That makes sense. This is not entirely trivial, as VERSION is
computed in our Makefile as
version=@version@
and that of course is done by configure. But it shouldn't be too hard.
> >-# if PRINT_UNDOCUMENTED_OPTIONS_HELP
> >+# ifdef PRINT_UNDOCUMENTED_OPTIONS_HELP
>
> You changed this to quench a warning, as I understand. However, I do
> not get any, using gcc 4.1.2 with -pedantic and -Wall. What compiler do
> you use?
Compiler is:
powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5247)
Compile command is:
gcc -Wall -Wno-switch -Wundef -Wsign-compare -Wno-char-subscripts -Wpacked -Wpointer-arith -Wunused-parameter -g
I suppose it's the -Wundef. I'm not sure why that was added, and
would rather not remove it for that reason. I'm not sure that we're
100% clean at this instant, but not too long ago XEmacs had exactly
one compile warning, caused by the getopt stuff in etags. This is not
a particularly burdensome discipline.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches