как установить критерий длины строки уничтожения для хранения в списке уничтожений

326
godblessfq

Есть ли способ заставить emacs игнорировать kill длиной менее 4 символов? Весьма раздражает, что в режиме зла много убийств одного персонажа. Спасибо!

1
Я подозреваю, что вам нужно будет отследить соответствующие функции, которые вы используете для добавления данных в kill-ring - например, `kill-new` и` kill-region` - и изменить эти функции. Я не знаю простой переменной длины, которая позволяет пользователю указывать определенную минимальную длину до того, как данные будут добавлены в 'kill-ring'. Другие альтернативы включают изменение определенных функций, которые в свою очередь вызывают другие функции, ответственные за сохранение информации в kill-ring (который, в свою очередь, может использовать kill-new или kill-region). lawlist 9 лет назад 2
Таким образом, мы можем добавить совет к этим функциям. Спасибо! godblessfq 9 лет назад 0
Не знаю, почему кто-то отверг тебя. Я думаю, что такой вопрос полезен. Моим предложением было бы отправить запрос на улучшение (`Mx report-emacs-bug`) с запросом на хук функций фильтра, чтобы иметь возможность контролировать то, что добавляется как уничтожение. Например, в Emacs 23 добавлена ​​опция `kill-do-not-save-duplicates`, что хорошо. Но было бы хорошо, если бы пользователи могли еще больше различать то, что добавляется в «kill-ring». Вместо того, чтобы добавлять опцию для каждой такой возможности (например, для вашего случая `kill-ring-entry-length`), мы должны иметь возможность добавить функцию фильтра в ловушку. Drew 9 лет назад 1

1 ответ на вопрос

1
godblessfq

Механизм фильтра уже в 24.4. Благодаря глюкам. https://emacs.stackexchange.com/questions/8097/how-do-i-filter-kill-ring-contents

(defvar kill-ring-entry-length 3) (defun my/replace-blank-kill (args) (let ((string (car args)) (replace (cdr args)) (last (car-safe kill-ring))) (when (or (and last (string-blank-p last)) (< (length last) kill-ring-entry-length)) (setq replace t)) (list string replace)))  (advice-add 'kill-new :filter-args #'my/replace-blank-kill) 

Похожие вопросы