Shammer's Philosophy

My private adversaria

Emacs 24.3 で killring と OS のクリップボード分離

以前に導入したEmacsWiki: Copy And PasteEmacsのkillringとOSのクリップボードを分離する機能が動作しなくなってしまったので対応を考えた。具体的には

  • symbol's function definition is void ns-get-pasteboard
  • symbol's function definition is void ns-set-pasteboard

が出るようになってしまった。実際、*scratch*でこれらの関数があるのか試した結果が以下。

(fboundp 'ns-get-pasteboard)
nil
(fboundp 'ns-set-pasteboard)
nil

これまでは使えていたので、上記関数はあったはずだが24.3では定義されていない?あるいはportを使ってインストールしたからか?いずれか今の時点ではわからないが、とりあえず上記の関数を使用した実装ではなく、EmacsWikiで紹介されているSimpleclipを導入することにした。手順は以下。

  1. cd /opt/local/share/emacs/24.3/site-lisp
  2. sudo curl -O http://www.emacswiki.org/emacs/download/simpleclip.el
  3. .emacs.d/init.el の設定変更

追加したinit.elの内容は以下。

(require 'simpleclip)
(simpleclip-mode 1)
(global-set-key [f5] 'simpleclip-cut)
(global-set-key [f6] 'simpleclip-copy)
(global-set-key [f7] 'simpleclip-paste)

これでkillringとOSのクリップボードの分離ができた。

ns-get-pasteboardとns-set-pasteboardのfboundpがnilになってしまったのは気になるな。portを使った場合はEmacs.appがないみたいだからGUI版がないように見える。nsで始まる他のコマンド探してやってみたが、少なくともns-toggle-fullscreenもnilになった。なるべくGUIじゃなくてTeminalの中で使用するようにしたいからportのインストールで十分なのだが、気が向いたら24.3をソースから、あるいはdmgでインストールして同じ結果になるか試してみようかな・・・たぶんやらないだろうが。。。