[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/term/x-win.el,v
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/term/x-win.el,v |
Date: |
Tue, 06 Mar 2007 05:50:48 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Kenichi Handa <handa> 07/03/06 05:50:48
Index: x-win.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/term/x-win.el,v
retrieving revision 1.199
retrieving revision 1.200
diff -u -b -r1.199 -r1.200
--- x-win.el 21 Jan 2007 03:22:34 -0000 1.199
+++ x-win.el 6 Mar 2007 05:50:48 -0000 1.200
@@ -2198,11 +2198,12 @@
;; (1) If their lengthes are different, select the longer one. This
;; is because an X client may just cut off unsupported characters.
;;
-;; (2) Otherwise, if the Nth character of CTEXT is an ASCII
-;; character that is different from the Nth character of UTF8,
-;; select UTF8. This is because an X client may replace unsupported
-;; characters with some ASCII character (typically ` ' or `?') in
-;; CTEXT.
+;; (2) Otherwise, if they are different at Nth character, and that
+;; of UTF8 is a Latin character and that of CTEXT belongs to a CJK
+;; character set, select UTF8. Also select UTF8 if the Nth
+;; character of UTF8 is non-ASCII where as that of CTEXT is ASCII.
+;; This is because an X client may replace unsupported characters
+;; with some ASCII character (typically ` ' or `?') in CTEXT.
;;
;; (3) Otherwise, select CTEXT. This is because legacy charsets are
;; better for the current Emacs, especially when the selection owner
@@ -2217,10 +2218,16 @@
(if (/= len-utf8 len-ctext)
(if (> len-utf8 len-ctext) utf8 ctext)
(let ((result (compare-strings utf8 0 len-utf8 ctext 0 len-ctext)))
- (if (or (eq result t)
- (>= (aref ctext (1- (abs result))) 128))
+ (if (eq result t)
ctext
- utf8)))))
+ (let ((utf8-char (aref utf8 (1- (abs result))))
+ (ctext-char (aref ctext (1- (abs result)))))
+ (if (or (and (aref (char-category-set utf8-char) ?l)
+ (aref (char-category-set ctext-char) ?C))
+ (and (>= utf8-char 128)
+ (< ctext-char 128)))
+ utf8
+ ctext)))))))
;; Get a selection value of type TYPE by calling x-get-selection with
;; an appropiate DATA-TYPE argument decidd by `x-select-request-type'.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/term/x-win.el,v,
Kenichi Handa <=