So legen Sie ein Kill-String-Längenkriterium für das Speichern in Kill-Ring fest

477
godblessfq

Gibt es eine Möglichkeit, Emacs zu sagen, dass Kill weniger als 4 Zeichen lang ist? Es ist ziemlich ärgerlich, wenn im Einzelmodus viele Einzelkills getötet werden. Vielen Dank!

1
Ich vermute, dass Sie die relevanten Funktionen aufspüren müssen, die Sie verwenden, um Daten zum Kill-Ring hinzuzufügen, z. B. "kill-new" und "kill-region" - und diese Funktionen ändern. Es gibt keine einfache Längenvariable, von der ich weiß, dass ein Benutzer eine bestimmte Mindestlänge angeben kann, bevor Daten zum "Kill-Ring" hinzugefügt werden. Andere Alternativen umfassen das Modifizieren bestimmter Funktionen, die wiederum andere Funktionen aufrufen, die für das Speichern von Informationen im Kill-Ring verantwortlich sind (die wiederum "kill-new" oder "kill-region" verwenden). lawlist vor 9 Jahren 2
So können wir diesen Funktionen einen Rat geben. Danke! godblessfq vor 9 Jahren 0
Weiß nicht, warum dich jemand abgelehnt hat. Ich denke, diese Art von Frage ist hilfreich. Mein Vorschlag wäre, eine Verbesserungsanforderung ("Mx report-emacs-bug") anzufordern, die nach einem Haken an Filterfunktionen fragt, um steuern zu können, was als Kill hinzugefügt wird. In Emacs 23 wurde beispielsweise die Option "kill-do-not-save-duplicates" hinzugefügt, was gut ist. Aber es wäre gut für Benutzer, in der Lage zu sein, zu unterscheiden, was zum "Kill-Ring" hinzugefügt wird. Anstatt für jede dieser Möglichkeiten eine Option hinzuzufügen (z. B. "kill-ring-entry-length"), sollten wir in der Lage sein, einem Hook eine Filterfunktion hinzuzufügen. Drew vor 9 Jahren 1

1 Antwort auf die Frage

1
godblessfq

Der Filtermechanismus befindet sich bereits in 24.4. Dank an Glucas. 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)