mule-ja
[Top][All Lists]
Advanced

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

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


From: Ikumi Keita
Subject: [mule-ja:27] Re: When pasting from emacs to kterm, japanese chars are lost.
Date: Thu, 14 Mar 2013 00:03:04 +0900

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

>> ありがとうございます。こちらでもちゃんと動作しました。

> この修正を commit しました。

  すみません、以前の確認が不十分だったようです。emacs 24.3 が出たのを機
に改めて確認してみたところ、
C-x RET X で next-selection-coding-system を ctext にした場合 … NG
C-x RET x で selection-coding-system を ctext にした場合      … OK
となっています。

【 実験してみたこと 】
  12345あいうえお6789 という文字列を *scratch* バッファに置いておいて、
「1」を左クリックしてから「9」を右クリックして selection を作っておき、
kterm に中クリックする…☆という実験をしてみたところ、以下のような結果に
なりました。

(1) 先に C-x RET X ctext RET してから ☆ の手順を行った場合
    日本語部分が落ちて 123456789 だけが paste される
(2) ☆ の selection を作った所で一旦 C-x RET X ctext RET を挟み、その後
    で kterm に中クリックした場合
    (1) と同じ結果
(3) 先に C-x RET x ctext RET してから ☆ の手順を行った場合
    ちゃんと 12345あいうえお6789 が paste される

  前回「ちゃんと動作した」と報告した時は、(3) しか確かめていなかったのだ
と思います。どうもすみません。

  もう少し様子を調べるため、(setq selection-coding-system nil) してから
xselect--encode-string の定義中の
                             (if non-latin-1 'UTF8_STRING
                               (if eight-bit 'C_STRING
                                 'STRING))))))))
の直後に次の3行を付け加えて (1), (2) の実験を再度行ってみました。

          (message "type=%s, coding=%s" type coding)
          (sit-for 3)
          (message "")

結果は次の通りでした。
(1) selection を作った所で echo area に
type=UTF8_STRING, coding=compound-text
と表示される。その後、kterm に中クリックした所で
type=UTF8_STRING, coding=nil
と表示される。
(2) selection を作った所で
type=UTF8_STRING, coding=nil
と表示され、C-x RET X ctext RET の時に
type=UTF8_STRING, coding=compound-text
と表示され、kterm に中クリックした所で
type=UTF8_STRING, coding=nil
と表示される。

【 結果からの推測・考察 】
  どうやら、xselect--encode-string はいくつかのタイミングで自動で実行され
るため、paste に至る前に実行されてしまい、そこで
next-selection-coding-system が nil にリセットされるため、中クリックの時
にもう一度呼び出されても、その時は next-selection-coding-system を指定し
た効果が切れてしまっている、ということではないかと思います。
  この推測が正しいとすると、kterm に限らず、他の X client に対しても、
emacs からの中クリック paste では、現状 C-x RET X による一時的な coding
指定は実質的に機能していない恐れがあると思います。

  環境依存の要素があるかもしれないので、関係あるかもしれない情報を付記し
ます。GNOME 2 を使っていて x clipboard manager が走っています。また、
emacs コンパイル時の toolkit は GTK3 が使われています。OS は FreeBSD 9.1
で xorg のバージョンは 7.5.2、GNOME のバージョンは 2.32 です。

                                                井汲 景太



reply via email to

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