[Top][All Lists]
[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))))))))