xyzzyのCtrl+Backspace/DeleteをMeadowのようにワード単位削除にする
Meadowではデフォルトで、Ctrl+Bacspace/Deleteが「ワード単位」の削除になります。また消した部分はクリップボードに入りません。
そこでxyzzyで同じように動くようにします。なお、xyzzyのAPIであるkill-wordは消した内容がkillーringに入ってしまうので使いませんでした。ついでにC-Left/Rightでワード単位の移動もできるようにしました。
以下そのlisp。やや綺麗に。
(defun delete-word (Direction) (save-excursion (save-restriction (let ;#initialize variables ( (BEGIN (point)) END ) ;#programs (progn (if (or (equal Direction #'backward-word) (equal Direction #'forward-word)) (progn ;then (funcall Direction) (setf END (point)) (delete-region BEGIN END) );end then );end if );end programs );end let );end save-restriction );end save-excursion );end defun ;\C-BackSpaceで後方Word削除 (defun delete-backward-word () (interactive "*") (delete-word #'backward-word) );defun ;\C-DELで前方Word削除 (defun delete-forward-word () (interactive "*") (delete-word #'forward-word) );defun ;\C-BackSpaceはこうしないと割り当てられないらしい (set-extended-key-translate-table exkey-C-backspace #\F13) (global-set-key #\F13 'delete-backward-word) (global-set-key #\C-Delete 'delete-forward-word) ;ワード単位移動 (global-set-key #\C-Left 'backward-word) (global-set-key #\C-Right 'forward-word)
ただ、word移動に使っているforward-wordとbackward-wordには少々不満が残るので(空白をワードと見てくれないので、削除しても空白が残るとか、その他記号が残るとか)、追々word移動部分も作りたい。