diff --git a/README.org b/README.org index ad3fb58..ba9b441 100644 --- a/README.org +++ b/README.org @@ -78,6 +78,7 @@ It's in [[https://melpa.org][MELPA]], so if you have that in your package lists, #+begin_src elisp (require 'smart-hungry-delete) (smart-hungry-delete-add-default-hooks) +(smart-hungry-delete-should-add-kill-ring t) (global-set-key (kbd "") 'smart-hungry-delete-backward-char) (global-set-key (kbd "") 'smart-hungry-delete-backward-char) (global-set-key (kbd "C-d") 'smart-hungry-delete-forward-char) @@ -93,9 +94,11 @@ If you use =use-package=: (use-package smart-hungry-delete :ensure t :bind (([remap backward-delete-char-untabify] . smart-hungry-delete-backward-char) - ([remap delete-backward-char] . smart-hungry-delete-backward-char) - ([remap delete-char] . smart-hungry-delete-forward-char)) - :init (smart-hungry-delete-add-default-hooks)) + ([remap delete-backward-char] . smart-hungry-delete-backward-char) + ([remap delete-char] . smart-hungry-delete-forward-char)) + :init + (smart-hungry-delete-add-default-hooks) + (smart-hungry-delete-should-add-kill-ring t)) #+end_src Only for some modes: @@ -104,9 +107,11 @@ Only for some modes: :ensure t :bind (:map python-mode-map ([remap backward-delete-char-untabify] . smart-hungry-delete-backward-char) - ([remap delete-backward-char] . smart-hungry-delete-backward-char) - ([remap delete-char] . smart-hungry-delete-forward-char)) - :init (smart-hungry-delete-add-default-hooks)) + ([remap delete-backward-char] . smart-hungry-delete-backward-char) + ([remap delete-char] . smart-hungry-delete-forward-char)) + :init + (smart-hungry-delete-add-default-hooks) + (smart-hungry-delete-should-add-kill-ring t)) #+end_src @@ -160,4 +165,6 @@ You can configure these on a per buffer basis: =smart-hungry-delete-add-default-hooks= will add some good defaults for (some) programming modes. Check out the =smart-hungry-delete-default-*-hook= functions. +=smart-hungry-delete-should-add-kill-ring= will change whether the deleted regions is added to `kill ring` or not. Default `t`. + If you have good suggestions for more defaults, make sure to [[https://github.com/hrehfeld/emacs-smart-hungry-delete/issues][suggest the recipes!]] diff --git a/smart-hungry-delete.el b/smart-hungry-delete.el index 2e76dd7..9062d5c 100644 --- a/smart-hungry-delete.el +++ b/smart-hungry-delete.el @@ -61,6 +61,12 @@ :safe t ) +(defcustom smart-hungry-delete-add-kill-ring t + "If t, deleted region will be added to `kill ring`." + :type '(boolean) + :safe t + ) + (defun smart-hungry-delete-looking-back-limit () "LIMIT for `looking-back`." (max 0 (- (point) smart-hungry-delete-max-lookback))) @@ -124,6 +130,14 @@ completely deleted." (add-hook 'nxml-mode-hook 'smart-hungry-delete-default-sgml-mode-common-hook) (add-hook 'text-mode-hook 'smart-hungry-delete-default-text-mode-hook)) +;;;###autoload +(defun smart-hungry-delete-should-add-kill-ring (should-kill) + "Choose deleted region should be added to kill ring or not by `SHOULD-KILL`." + (interactive) + (setq smart-hungry-delete-add-kill-ring should-kill) + (put #'smart-hungry-delete-backward-char 'delete-selection (if smart-hungry-delete-add-kill-ring 'kill nil)) + (put #'smart-hungry-delete-forward-char 'delete-selection (if smart-hungry-delete-add-kill-ring 'kill nil))) + ;;;###autoload (defun smart-hungry-delete-backward-char (arg) "If there is more than one char of whitespace between previous word and point, @@ -136,8 +150,6 @@ With prefix argument ARG, just delete a single char." (prefix-command-preserve-state) (smart-hungry-delete-char arg t)) -(put #'smart-hungry-delete-backward-char 'delete-selection 'kill) - ;;;###autoload (defun smart-hungry-delete-forward-char (arg) "If there is more than one char of whitespace between point and next word, @@ -150,8 +162,6 @@ With prefix argument ARG, just delete a single char." (prefix-command-preserve-state) (smart-hungry-delete-char arg)) -(put #'smart-hungry-delete-forward-char 'delete-selection 'kill) - (defun smart-hungry-delete-char-trigger (to from) "Return t if the region (TO FROM) should be killed completely." (save-excursion @@ -204,7 +214,7 @@ With PREFIX just delete one char." fallback 'delete-char) ) (if (use-region-p) - (kill-region nil nil t) + (if smart-hungry-delete-add-kill-ring (kill-region nil nil t) (delete-region (region-beginning) (region-end))) (let ((kill-hungrily (funcall check smart-hungry-delete-char-kill-regexp))) (cond ((functionp kill-hungrily) (funcall-interactively kill-hungrily))