2009-09-22

Snow Leopard の Emacs でコピペをすると文字化けする

先日、Mac OS のバージョンを 10.6 (Snow Leopard) にアップグレードした。そしたら、X11.app の Emacs アプリから Firefox や Safari に日本語をコピペできなくなってしまった。コピーする日本語が、ことごとく文字化けしてしまう (ASCII 文字のコピペに関しては OK)。

ネットを徘徊すること 3 時間。ようやく関連するエントリーを見つけた。

次のコードを .emacs に貼り付けると文字化けせずコピペできるやうになる。

(if (eq window-system 'x)
 (progn
   (defun paste-to-osx (text &optional push)
  (progn
    (let ((process-connection-type nil)) ; use pipe
   (let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
     (process-send-string proc text)
     (process-send-eof proc)))))

   (setq interprogram-cut-function 'paste-to-osx)))

MacOS X の X11.app に付属のツール pbcopy といふのを呼び出している。

X11 の環境設定

ちなみに、ぼくは X11 の環境設定をスクリーン・ショットの通りにしている。

X11.app - Settings

「ペーストボードが変更されたときに CLIPBOARD をアップデート」にチェックを入れていると、何かと不具合が多いというのが Snow Leopard での感想。バグなのかしらん?

4 comments:

  1. 実は最近は emacs あんまり使ってない、というか emacs 自体あんまり分からないし、使えるかどうかは未確認なのですが、

    set-clipboard-coding-system

    なんてものがあるようです。X11 用にビルドしたものには入ってないのかもしれませんけど、Leopard の /usr/bin/emacs (22.1.1) には入ってますね。

    ReplyDelete
  2. rok さん、こんにちは。情報ありがとうございます。
    さて、関数 set-clipboard-coding-system なのですが、私も期待をこめてこの関数を使ってみたのですが、効果はありませんでした。使ってみたのは、X11 用にコンパイルした Emacs です。Leopard 版なら、もしかして。ということはあるかもしれません (面倒でまだ試していない ^^;)

    ReplyDelete
  3. あぁ、そうですか。残念。

    いつ書いたのか記憶にないのですが、私の ~/.emacs に (set-clipboard-coding-system 'sjis-mac) なんてものがありまして、もしかしたらと思ったのですが。

    ReplyDelete
  4. そうか。shift_jis ですか。
    utf-8 の方ばかり試していたので、失敗続きだったようです。

    最近の X11, Mac, Emacs は Shift_JIS と UTF-8 が混在していて混乱気味。コピペも文字化けしたりしなかったりで、よく分かっていません。とりあえず、ソースからコンパイルした 22.1.50 は set-clipboard-coding-system なしでも何とかなっていますが、最新の Emacs 23 はどうなることやら。

    混乱が収拾したら、また別エントリー書くかもです。

    Thanks!

    ReplyDelete