Problem with the input of '€' (U+20AC EURO SIGN) with ~/.Xmodmap

Aidan Kehoe kehoea at parhasard.net
Sat Jun 23 05:35:26 EDT 2007


 Ar an tríú lá is fiche de mí Meitheamh, scríobh Stephen J. Turnbull: 

 > Aidan, have any ideas offhand?  Do you think stuffing ISO 8859/15 in
 > the search order immediately after ISO 8859/1 would be a good idea and
 > easy to do?

Here’s a patch to do it, but after ISO 8859/2, not /1, since we want ž and š
to be taken from the former. 

Index: lisp/mule/general-late.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/general-late.el,v
retrieving revision 1.2
diff -u -u -r1.2 general-late.el
--- lisp/mule/general-late.el	2006/12/29 18:09:46	1.2
+++ lisp/mule/general-late.el	2007/06/23 09:17:51
@@ -55,7 +55,21 @@
 ;; At this point in the dump, all the charsets have been loaded. Now, load
 ;; their Unicode mappings.
 (if load-unicode-tables-at-dump-time
-    (let ((data-directory (expand-file-name "etc" source-directory)))
-      (load-unicode-tables)))
+    (let ((data-directory (expand-file-name "etc" source-directory))
+          latin-9-moved latin-2-and-after)
+      (load-unicode-tables)
+
+      ;; Move latin-iso8859-15 after latin-iso8859-2, in order to prefer its
+      ;; version of the Euro sign over that in the Greek fonts.
+      (setq latin-9-moved
+            (delq 'latin-iso8859-15 
+                  (mapcar 'charset-name (unicode-precedence-list)))
+            latin-2-and-after (memq 'latin-iso8859-2 latin-9-moved))
+      (when (and latin-9-moved (find-charset 'latin-iso8859-15))
+        (setcdr latin-2-and-after (cons 'latin-iso8859-15
+                                        (cdr latin-2-and-after)))
+        (debug-print "latin-9-moved is %S, latin-2-and-after %S"
+                     latin-9-moved latin-2-and-after)
+        (set-default-unicode-precedence-list latin-9-moved))))
 
 ;;; general-late.el ends here
Index: lisp/mule/mule-cmds.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/mule-cmds.el,v
retrieving revision 1.32
diff -u -u -r1.32 mule-cmds.el
--- lisp/mule/mule-cmds.el	2007/06/03 17:32:38	1.32
+++ lisp/mule/mule-cmds.el	2007/06/23 09:17:55
@@ -1486,7 +1486,20 @@
   "Initialize MULE environment at startup.  Don't call this."
 
   (when (not load-unicode-tables-at-dump-time)
-    (load-unicode-tables))
+    (load-unicode-tables)
+
+    ;; Move latin-iso8859-15 after latin-iso8859-2, in order to prefer its
+    ;; version of the Euro sign to that for Greek. 
+    (let* ((latin-9-moved
+            (delq 'latin-iso8859-15 
+                  (mapcar 'charset-name (unicode-precedence-list))))
+           (latin-2-and-after (memq 'latin-iso8859-2 latin-9-moved)))
+      (when (and latin-9-moved (find-charset 'latin-iso8859-15))
+        (setcdr latin-2-and-after (cons 'latin-iso8859-15
+                                        (cdr latin-2-and-after)))
+        ; (debug-print "latin-9-moved is %S, latin-2-and-after %S"
+        ;             latin-9-moved latin-2-and-after)
+        (set-default-unicode-precedence-list latin-9-moved))))
 
   ;; This is called (currently; might be moved earlier) from startup.el,
   ;; after the basic GUI systems have been initialized, and just before the

-- 
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)


More information about the XEmacs-Beta mailing list