пятница, 10 апреля 2015 г.

Удаление в Emacs без копирования в буфер обмена

В Emacs есть такие замечательные функции, как удалить слово после курсора (kill-word), перед курсором (backward-kill-word), а так же удалить все символы от курсора до конца строки (kill-line). Однако у них есть одна особенность, они не просто удаляют символы, а еще копируют их в буфер обмена (так называемый kill ring). Лично меня подобное поведение не устраивает, поэтому я написал свои аналоги этих функций.

Т.к. Emacs редактор с открытыми исходными кодами, то изобретать я ничего не стал, просто открыл исходники функций и скопировал их, заменив (kill-region) на (delete-region), которая в kill ring не "гадит":

(defun cfg:delete-word (arg)
  (interactive "p")
  (delete-region (point) (progn (forward-word arg) (point))))

(defun cfg:backward-delete-word (arg)
  (interactive "p")
  (cfg:delete-word (- arg)))

(defun cfg:delete-line ()
  (interactive)
  (delete-region
   (point)
   (save-excursion (move-end-of-line 1) (point)))
  (delete-char 1))

Все, осталось лишь назначить их на нужные сочетания клавиш.

Комментариев нет:

Отправить комментарий