Meadowの重さに最近辟易し始め、xyzzyに移行しようと画策中。
そこでxyzzyのマウスの挙動を、Meadowと同じにすることに。
その要求は、
1.左クリックで選択すると自動でコピー
2.右クリックでペースト
3.選択範囲を自動でselection regionに
この3つ。
またこのとき、xyzzyはkill-ringとclipboardという2つのコピー用のバッファがあることを考えないといけない。このkill-ringはxyzzyローカルのバッファで、他のアプリケーションとは共有されない。clipboardはWindowsのクリップボード。つまり他のアプリケーションと共有される。そこで、その2つのバッファを同期するLispも拾ってきた。なぜなら、C-k,C-wなどで切り取ったものは、kill-ringに入るためだ。右クリックで貼り付けられるバッファ(clipboard)と、C-yで貼り付けるバッファ(kill-ring)が異なると、ペーストするときに混乱する。そして単一化するなら、Windowsのクリップボードだとおもう。
;;どっかからぱくってきた同期部分 ;;synclonize clipboad and kill-ring (defun copy-selection-region-to-clipboard () (interactive) (setq is-selected nil) (if (and *shodat-copy-mode* (pre-selection-p)) (let ((type (get-selection-type))) (selection-start-end (start end) (copy-region-as-kill start end) (copy-region-to-clipboard start end) (setq is-selected t) (start-selection type t end))) (selection-start-end (start end) (copy-region-as-kill start end) (copy-region-to-clipboard start end) (setq is-selected t))) (if (eq is-selected nil) (progn (copy-region-as-kill (mark) (point)) (copy-region-to-clipboard (mark) (point)))) t) (defun kill-selection-region-to-clipboard () (interactive "*") (setq is-selected nil) (selection-start-end (start end) (copy-region-as-kill start end) (kill-region-to-clipboard start end) (setq is-selected t)) (if (eq is-selected nil) (progn (copy-region-as-kill (mark) (point)) (kill-region-to-clipboard (mark) (point)))) t) (defun kill-line-to-clipboard () "kill line to clipboard" (interactive) (setq kill-line-to-clipboard-start (point)) (end-of-line) (if (eq kill-line-to-clipboard-start (point)) (delete-char) (progn (copy-region-as-kill kill-line-to-clipboard-start (point)) (kill-region-to-clipboard kill-line-to-clipboard-start (point))))) (define-key *global-keymap* #\C-w 'kill-selection-region-to-clipboard ) (define-key *global-keymap* #\M-w 'copy-selection-region-to-clipboard ) (define-key *global-keymap* #\C-y 'paste-from-clipboard ) (define-key *global-keymap* #\C-k 'kill-line-to-clipboard ) ;;マウスだけでコピー・ペースト ;右クリックでペースト (defun mouse-right-up-process () (interactive "*") (mouse-left-press) (paste-from-clipboard) ;paste from clipboad ) ;左クリックでコピー&Set Mark (defun mouse-left-up-process () (interactive) (selection-start-end (Start End) (progn (copy-region-to-clipboard Start End) (set-mark End);どっしぇーなんでEndなんだ ) ) ) (global-set-key #\LBtnUp 'mouse-left-up-process) (global-set-key #\RBtnUp 'mouse-right-up-process) (global-set-key #\MBtnUp 'mouse-menu-popup)