Est-il possible d'empêcher kill-ring
de stocker des espaces / lignes vides? En ce moment, après avoir fait quelques changements, puis browse-kill-ring
je vais souvent voir quelque chose comme ça:
-------
-------
merchant_uuid: "some_uuid"
-------
it "creates a webhook" do
-------
-------
-------
Existe-t-il un moyen de forcer le kill-ring à n'ajouter que du contenu significatif?
helm-show-kill-ring
et il semble filtrer les entrées vides de l'anneau de destruction. Je peux toujours tirer un tas d'espaces, alors +1 pour la question.kill-do-not-save-duplicates
, ce qui empêchekill-new
d'ajouter la même chose à l'anneau de mise à mort deux fois de suite.Réponses:
Voici une approche pour gérer les éliminations vides (c'est-à-dire uniquement les espaces blancs). Plutôt que de les filtrer complètement, cela permettra au plus une entrée vierge dans le kill ring. Chaque nouveau kill vérifiera la tête du kill-ring et le remplacera s'il est vide.
Notez que j'utilise ici le mécanisme de conseil Emacs 24.4+ pour filtrer les arguments qui finissent par être transmis
kill-new
.L'effet est que vous pouvez toujours tuer et tirer un tas d'espaces blancs, mais si vous tuez des espaces blancs puis tuez autre chose, l'entrée des espaces blancs sera supprimée.
la source
kill
,kill-ring-save
etc. Si vous avez des commandes qui s'ajoutent au kill ring sans appeler,kill-new
cela ne fonctionnera pas, bien sûr.Un problème est que toute commande peut modifier le
kill-ring
donc le seul hook suffisamment puissant pour le faire est lepost-command-hook
. C'est inefficace, mais l'AFAIK est le seul moyen de le faire avec rigueur. Si cela vous convient, vous pouvez le faire:Par souci d'efficacité, je suppose que toutes les commandes s'ajoutent à la
kill-ring
, c'est probablement sûr, mais notez qu'une fonction peut insérer du texte n'importe où dans lekill-ring
. C'est rare, cependant, et je suis sûr que vous ne voulez pas parcourir tout le ring de destruction à chaque commande.la source