mule-ja
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mule-ja:13] Re: When pasting from emacs to kterm, japanese chars are lo


From: Kenichi Handa
Subject: [mule-ja:13] Re: When pasting from emacs to kterm, japanese chars are lost.
Date: Sun, 07 Oct 2012 22:41:22 +0900

In article <address@hidden>, Ikumi Keita <address@hidden> writes:

>   emacs 23 になってから、マウス操作で emacs から kterm に文字列を paste
> すると、日本語文字が全部欠落するようになっているようです。これは意図された
> 変更でしょうか?kterm は FreeBSD の ports でインストールしたもので、
> kterm-6.2.0 に ports の patch が当たったものを使っており、X resource の指
> 定で kterm の日本語コードは euc にしています。
[...]
> 推測したこと:
>   paste の際、kterm には日本語文字列は utf-8 で与えられているのではない
> か(selection-coding-system の値に関わらず)。kterm には utf-8 が解釈で
> きないため、日本語文字がすべて捨てられているのだろう。

Emacs 23 以降、selection type として TEXT を要求されると
UTF8_STRING を返すようになりました。TEXT を要求された X
client は自分で都合がよいエンコーディングを選んで返せば良いは
ずで、もし COMPOUND_TEXT などの特定のエンコーディングで返して
欲ければ、最初からそれを要求すべきなのです。でもどうやら
kterm は TEXT を要求しながら UTF8_STRING を解釈できないようで
す。

>   文字コードの問題かと思って C-x C-m X や C-x C-m x で ctext を指定して
> から copy&paste してみても変化なし(emacs 23, 24 とも)。kterm 側で
> ctrl-マウス中ボタン で日本語をデフォルトの jis に戻してから試してもダメ。

これは Emacs 側のバグですね。以下のパッチをあてれば上記コマ
ンドでちゃんと kterm に paste できるようになるはずです。

---
Kenichi Handa
address@hidden

=== modified file 'lisp/select.el'
--- lisp/select.el      2012-05-09 03:06:08 +0000
+++ lisp/select.el      2012-10-07 12:46:45 +0000
@@ -248,7 +248,12 @@
                                    (setq non-unicode t)
                                  (setq eight-bit t)))))
                      str)
-               (setq type (if non-unicode 'COMPOUND_TEXT
+               (setq type (if (or non-unicode
+                                  (and
+                                   coding
+                                   (eq (coding-system-get coding :mime-charset)
+                                       'x-ctext)))
+                              'COMPOUND_TEXT
                             (if non-latin-1 'UTF8_STRING
                               (if eight-bit 'C_STRING
                                 'STRING))))))))






reply via email to

[Prev in Thread] Current Thread [Next in Thread]