彷徨えるフジワラ

年がら年中さまよってます

Emacs でのクリップボード連携

普段の Emacs 使用ではハイライトとかカラー設定を極力無効化して使っているので、別に CUI ベースの使用("emacs -nw")でも全然困らないのだけど、アプリケーション間でのコピー&ペーストの手間で言えば、マウス操作の要否等の点から GUI ベースで稼動させた方が圧倒的に楽なんだよねぇ。

でも実際にコピー&ペーストをやってみると……

あれ?kill-ring-save(M-w) とかでコピーした文字列がペーストできないぞ?

describe-function で見てみると:

If `interprogram-cut-function' is non-nil, also save the text for a window
system cut and paste.

あぁ、これが有効になってないと、所謂クリップボードに格納されないのね。

で、interprogram-cut-function 変数値を見るとx-select-text 関数が設定されていて、この関数の仕様は:

If `x-select-enable-clipboard' is non-nil, copy the text to the system
clipboard as well.

随分たらいまわしな感じだけど、結局 x-select-enable-clipboard を non-nil にしてやれば良い模様。

Meadow だと特に設定をした記憶が無いのだが、そもそもウィンドウシステム上での稼動が前提なんだから、そりゃ、クリップボード連携はデフォルトで enable だよなぁ。

ひょっとして、x-select-enable-clipboard が non-nil なら、CUI 上の Emacs プロセスからもクリップボードに貼り付け可能?DISPLAY 設定がしてあって、実際に X Window (クリップボード実装は GNOME ?)が稼動していれば、理屈の上では出来てもおかしくないよね?

早速 CUI Emacs で確認してみると…:

  • x-select-text 関数は未定義
  • x-select-enable-clipboard 変数は定義されているものの、"not documented" な状態。

といった状況。

x-select-text を定義している *.elc を強引に読み込んでも:

Loading x-win.el but not compiled for X

となるため、CUI Emacs を起動した場合、単に出力先が tty になっているだけではなく、完全に非 X Window モードで動いている模様。

うーん、残念。