[COMMIT] Have fsf-compat-unicode.el behave better on 21.4

Aidan Kehoe kehoea at parhasard.net
Sun Jul 29 07:11:55 EDT 2007


APPROVE COMMIT.

(This is actually embarrassing if you look closely at the diff.)

NOTE: This patch has been committed.

mule-packages/mule-base/ChangeLog addition:

2007-07-29  Aidan Kehoe  <kehoea at parhasard.net>

	* fsf-compat-unicode.el:
	* fsf-compat-unicode.el (and):
	* fsf-compat-unicode.el (fsf-compat-ccl-program):
	* fsf-compat-unicode.el (fsf-compat-init-mule-unicode-charsets):
	Shifting the arguments to mule-to-unicode 7 bits was appropriate,
	but for redisplay r1 needs to be the highest octet, r2 the lowest,
	of the 16-bit UCS code. 

	text-conversion-error is not available on 21.4, so it turns out
	the code fails in a more ugly way thatn I wanted there. 


XEmacs Packages source patch:
Diff command:   cvs -q diff -Nu
Files affected: mule-packages/mule-base/fsf-compat-unicode.el
===================================================================
RCS

Index: mule-packages/mule-base/fsf-compat-unicode.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/mule-packages/mule-base/fsf-compat-unicode.el,v
retrieving revision 1.4
diff -u -u -r1.4 fsf-compat-unicode.el
--- mule-packages/mule-base/fsf-compat-unicode.el	2007/07/27 20:30:23	1.4
+++ mule-packages/mule-base/fsf-compat-unicode.el	2007/07/29 11:02:52
@@ -28,23 +28,22 @@
 
 ;;; Code:
 
-;;; Only for 21.5 and newer. 
+;;; Only for 21.5 and newer. Compiles with 21.4 fine. 
 
 (eval-when-compile (require 'ccl))
 
 ;; Check at runtime that the Unicode support is available, and that its
 ;; coverage is good enough.
-(unless (if-fboundp 'encode-char
-	    (with-fboundp '(encode-char decode-char)
-	      (eq #x31C (encode-char (decode-char 'ucs #x31C) 'ucs))))
-  (error 'text-conversion-error
+(unless (and (fboundp 'encode-char)
+             (eq #x31C (encode-char (decode-char 'ucs #x31C) 'ucs)))
+  (error 'unimplemented
 	 "Unicode support needed is not available in your XEmacs."))
 
 ;; For redisplay of these character sets, provide a CCL program to address
 ;; iso10646-1 X11 fonts.
 (defvar fsf-compat-ccl-program 
   (eval-when-compile
-    (let ((pre-existing [1 10 131127 7 98872 65823 147513 7 82009 127 22]))
+    (let ((pre-existing [1 10 131127 7 98872 65823 147513 8 82009 255 22]))
       (when (and (> emacs-major-version 20) (> emacs-minor-version 4)
                  (featurep 'mule))
         ;; In the event that we're compiling on 21.5, check that the
@@ -56,8 +55,8 @@
                           ((r1 = (r1 << 7)) 
                            (r1 = (r1 | r2)) 
                            (mule-to-unicode r0 r1) 
-                           (r1 = (r0 >> 7)) 
-                           (r2 = (r0 & #x7F))))))
+                           (r1 = (r0 >> 8)) 
+                           (r2 = (r0 & #xFF))))))
                 nil 
                 "The pre-compiled CCL program appears broken. "))
       pre-existing))
@@ -87,9 +86,9 @@
                       chars 96
                       columns 1
                       direction l2r
-                      final final
+                      final ,final
                       graphic 0
-                      short-name ,(format "Unicode subset %c" final)
+                      short-name ,(format "Unicode subset U+%04X" first-ucs)
                       long-name ,(format "Unicode subset (U+%04X..U+%04X)"
                                          first-ucs last-ucs)
                       ccl-program ,fsf-compat-ccl-program))

-- 
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-Patches mailing list