Hoe kan ik voorkomen dat C-backspace of M-backspace tekst kopiëren?

Het verwijderen van een stuk tekst van de cursor zorgt ervoor dat de verwijderde inhoud wordt gekopieerd naar de kill-ring en overschrijft wat ik daar heb opgeslagen. Hoe stop ik dat dit gebeurt?

3
github.com/lewang/le_emacs_MRU_yank zou ook nuttig kunnen zijn
toegevoegd de auteur alastairs, de bron
De kill-ring bevat de laatste kill-ring-max kills. Gebruik C-y en herhaalde M-y om oudere inhoud te rekken. doc
toegevoegd de auteur jorgepc, de bron

1 antwoord

If you look at what M-backspace calls using C-h you see that it calls backward-kill-word that function simply calls kill-word with a negative argument. The kill-word function is coded as:

(defun kill-word (arg)
  "Kill characters forward until encountering the end of a word.
With argument ARG, do this that many times."
  (interactive "p")
  (kill-region (point) (progn (forward-word arg) (point))))

Als we een functie schrijven die hetzelfde doet met behulp van delete-regio in plaats van kill-regio , krijgen we het gewenste resultaat. Hier is onze nieuwe functie delete-word :

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

We kunnen nu ons eigen backward-delete-word schrijven met backward-kill-work als een voorbeeld als dit:

(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-word (- arg)))

afterwards all we need to do is bind this new function to !

Laat het me weten als je vragen hebt!

5
toegevoegd