xyzzyのCtrl+Backspace/DeleteをMeadowのようにワード単位削除にする

Meadowではデフォルトで、Ctrl+Bacspace/Deleteが「ワード単位」の削除になります。また消した部分はクリップボードに入りません。

そこでxyzzyで同じように動くようにします。なお、xyzzyAPIである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-wordbackward-wordには少々不満が残るので(空白をワードと見てくれないので、削除しても空白が残るとか、その他記号が残るとか)、追々word移動部分も作りたい。