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 ?)が稼動していれば、理屈の上では出来てもおかしくないよね?
- 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 モードで動いている模様。
うーん、残念。