From xemacs-m  Thu Mar 20 15:33:28 1997
Received: from venus.Sun.COM (venus.Sun.COM [192.9.25.5])
	by xemacs.org (8.8.5/8.8.5) with SMTP id PAA17492
	for <xemacs-beta@xemacs.org>; Thu, 20 Mar 1997 15:33:28 -0600 (CST)
Received: from Eng.Sun.COM ([129.146.1.25]) by venus.Sun.COM (SMI-8.6/mail.byaddr) with SMTP id NAA14513 for <xemacs-beta@xemacs.org>; Thu, 20 Mar 1997 13:32:58 -0800
Received: from themom.eng.sun.com by Eng.Sun.COM (SMI-8.6/SMI-5.3)
	id NAA21468; Thu, 20 Mar 1997 13:32:56 -0800
Received: by themom.eng.sun.com (SMI-8.6/SMI-SVR4)
	id NAA24143; Thu, 20 Mar 1997 13:31:14 -0800
Sender: mrb@themom.Eng.Sun.COM
Newsgroups: comp.emacs.xemacs
Cc: XEmacs Beta Test <xemacs-beta@xemacs.org>
Subject: PATCH: Re: Problem with compose and 20.0
References: <332F2B76.5E49@eerie.fr> <m2u3m6dhzc.fsf@altair.xemacs.org>
From: Martin Buchholz <mrb@Eng.Sun.COM>
Date: 20 Mar 1997 13:31:12 -0800
Message-ID: <ci5d8suxnbz.fsf_-_@eng.sun.com>
Organization: Sun
Lines: 102
X-Newsreader: Gnus v5.4.23/XEmacs 20.1
In-Reply-To: Steven L Baur's message of 20 Mar 1997 01:34:47 -0800
Posted-To: comp.emacs.xemacs

The following message is a courtesy copy of an article
that has been posted to comp.emacs.xemacs as well.

>>>>> "sb" == Steven L Baur <steve@miranova.com> writes:

sb> Martin?

sb> I've never seen a functional compose key.  20.x works a bit
sb> differently with regards to input than v19.

I finally really understand this problem.

The compose key works differently under 20.0 because it calls
setlocale, which triggers Sun's Xlib to do compose key processing in
certain locales, including the "C" locale.

Unfortunately, there is a bug in Sun's Xlib built-in compose key
processing which causes, for example, the physical key sequence

Compose s s

to generate the keysym sequence

Multi-key s ssharp

instead of

ssharp

as it should.  This bug in Solaris Xlib is fixed in the
not-yet-released Solaris 2.6.

Nevertheless, XEmacs should work.  The following patch fixes x-compose
so it should work with most any semi-reasonable Xlib implementation:

(Steven, please apply)

--- lisp/x11/x-compose.el.old
+++ lisp/x11/x-compose.el
@@ -269,6 +269,7 @@
 ;;; compose-map.
 
 (set-keymap-name compose-acute-map 'compose-acute-map)
+(set-keymap-default-binding compose-acute-map 'self-insert-command)
 (define-key compose-acute-map " "	"'")
 (define-key compose-acute-map "'"	[acute])
 (define-key compose-acute-map "A"	[Aacute])
@@ -285,6 +286,7 @@
 (define-key compose-acute-map "y"	[yacute])
 
 (set-keymap-name compose-grave-map 'compose-grave-map)
+(set-keymap-default-binding compose-grave-map 'self-insert-command)
 (define-key compose-grave-map " "	[grave])
 (define-key compose-grave-map "A"	[Agrave])
 (define-key compose-grave-map "E"	[Egrave])
@@ -298,11 +300,13 @@
 (define-key compose-grave-map "u"	[ugrave])
 
 (set-keymap-name compose-cedilla-map 'compose-cedilla-map)
+(set-keymap-default-binding compose-cedilla-map 'self-insert-command)
 (define-key compose-cedilla-map ","	[cedilla])
 (define-key compose-cedilla-map "C"	[Ccedilla])
 (define-key compose-cedilla-map "c"	[ccedilla])
 
 (set-keymap-name compose-diaeresis-map 'compose-diaeresis-map)
+(set-keymap-default-binding compose-diaeresis-map 'self-insert-command)
 (define-key compose-diaeresis-map " "	[diaeresis])
 (define-key compose-diaeresis-map "\""	[diaeresis])
 (define-key compose-diaeresis-map "A"	[Adiaeresis])
@@ -318,6 +322,7 @@
 (define-key compose-diaeresis-map "y"	[ydiaeresis])
 
 (set-keymap-name compose-circumflex-map 'compose-circumflex-map)
+(set-keymap-default-binding compose-circumflex-map 'self-insert-command)
 (define-key compose-circumflex-map " "	"^")
 (define-key compose-circumflex-map "/"	"|")
 (define-key compose-circumflex-map "!"	[brokenbar])
@@ -340,6 +345,7 @@
 (define-key compose-circumflex-map "u"	[ucircumflex])
 
 (set-keymap-name compose-tilde-map 'compose-tilde-map)
+(set-keymap-default-binding compose-tilde-map 'self-insert-command)
 (define-key compose-tilde-map " "	"~")
 (define-key compose-tilde-map "A"	[Atilde])
 (define-key compose-tilde-map "N"	[Ntilde])
@@ -349,6 +355,7 @@
 (define-key compose-tilde-map "o"	[otilde])
 
 (set-keymap-name compose-ring-map 'compose-ring-map)
+(set-keymap-default-binding compose-ring-map 'self-insert-command)
 (define-key compose-ring-map " "	[degree])
 (define-key compose-ring-map "A"	[Aring])
 (define-key compose-ring-map "a"	[aring])
@@ -358,6 +365,7 @@
 ;;; that are not accessible via "dead" keys.
 
 (set-keymap-name compose-map 'compose-map)
+(set-keymap-default-binding compose-map 'self-insert-command)
 (define-key compose-map " '"	"'")
 (define-key compose-map " ^"	"^")
 (define-key compose-map " `"	"`")

-- 
Martin Buchholz <mrb@eng.sun.com>
XEmacs Developer, Sun Microsystems Inc.

