xyzzyでregionとselectionを同期させる

xyzzyでは、なぜかregionとselectionが区別される。要するにマウスで選んでC-wで切り取り・・・みたいなことができない。もちろんセレクションを切り取るようにキーバインドを変えればいいんだけど、そうしたら逆にregionとしてマークしたとこがC-wで切り取れない。個人的にこの2つを厳密に分ける意味がさっぱり理解できないので、何とかならないのかなーとずっとおもってたのですが。

http://hie.s64.xrea.com/xyzzy/mylib/rv-region.html

こちらのrv-region.lを使えば実現できることを発見。元々はregionに色をつけるLispのようですが、「リージョンの作成と同時にセレクションも作成」の機能がめちゃめちゃ便利。これでregionとselectionを透過的に扱えますよー。

設定方法はこんな感じ。

;; regionを反転+selectionに変換
(require "rv-region")
(global-set-key #\C-@ 'rv-set-mark-command)
(setq *rv-region-use-selection* t)

;; C-w でselectionを切り取り
(global-set-key '(#\C-w) 'kill-selection-to-clipboard)
;; M-w でselectionをコピー
(global-set-key '(#\M-w) 'copy-selection-to-clipboard)

これでマウスで選んでもregionとしてマークしてもC-wで切り取れるという最高の環境ができました!