Mercurial > emacs
diff lisp/term/x-win.el @ 83560:738ce3540ffb
Merged from emacs@sv.gnu.org
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-660
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-661
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-662
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-663
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-664
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-665
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-666
Fix read-only prompt problem in isearch
* emacs@sv.gnu.org/emacs--devo--0--patch-667
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-668
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-669
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-670
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-671
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-672
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-673
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-206
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-207
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-208
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-600
author | Karoly Lorentey <karoly@lorentey.hu> |
---|---|
date | Sun, 22 Apr 2007 12:12:29 +0000 |
parents | b8d9a391daf3 318b0d9919a6 |
children | 2716535391b7 |
line wrap: on
line diff
--- a/lisp/term/x-win.el Sun Apr 22 11:42:03 2007 +0000 +++ b/lisp/term/x-win.el Sun Apr 22 12:12:29 2007 +0000 @@ -2207,11 +2207,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 @@ -2226,10 +2227,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'.