Удалить слово, не добавляя его в список уничтожений в Emacs - PullRequest
12 голосов
/ 26 мая 2011

При переключении файлов с помощью минибуфера (C-x C-f) я часто использую M-Backspace для удаления слов в пути. Emacs автоматически помещает то, что я удаляю, в список уничтожений. Это может раздражать, так как иногда я перемещаюсь в другой файл, чтобы вставить что-то, и в итоге я вставляю часть пути к файлу. Я знаю, что есть обходные пути, и другой код все еще находится в списке уничтожения и т. Д., Но я просто хотел бы отключить эту функцию.

Ответы [ 2 ]

17 голосов
/ 26 мая 2011

Emacs не имеет функции backward-delete-word, но ее достаточно просто определить:

(defun backward-delete-word (arg)
  "Delete characters backward until encountering the beginning of a word.
With argument ARG, do this that many times."
  (interactive "p")
  (delete-region (point) (progn (backward-word arg) (point))))

Затем вы можете связать M-Backspace с backward-delete-word в minibuffer-local-map:

(define-key minibuffer-local-map [M-backspace] 'backward-delete-word)
2 голосов
/ 29 октября 2011

См. Обсуждение этой темы на help-gnu-emacs@gnu.org: http://lists.gnu.org/archive/html/help-gnu-emacs/2011-10/msg00277.html

Обсуждение сводится к этому короткому решению:

(add-hook 'minibuffer-setup-hook'
          (lambda ()
            (make-local-variable 'kill-ring)))
...