emacs: stop polluting my kill-ring (still needs some adjustments)
This commit is contained in:
parent
3ee8c1eee3
commit
f9c4bb6bd7
1 changed files with 59 additions and 0 deletions
|
@ -100,6 +100,65 @@ in rec {
|
|||
|
||||
;; Fix keyboard input of 'dead-keys'
|
||||
(require 'iso-transl)
|
||||
|
||||
|
||||
|
||||
;; Some small helper functions
|
||||
;; These are based on the already existing 'kill' versions of the function
|
||||
;; It's literally just a M-x r-str kill delete (and getting rid of tabs)
|
||||
(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))))
|
||||
(define-key global-map [remap kill-word] 'delete-word)
|
||||
;; (define-key global-map (kbd <>) 'kill-word)
|
||||
|
||||
(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)))
|
||||
(define-key global-map [remap backward-kill-word] 'backward-delete-word)
|
||||
|
||||
(defun delete-whole-line (&optional arg)
|
||||
"Delete current line.
|
||||
With prefix ARG, delete that many lines starting from the current line.
|
||||
If ARG is negative, delete backward. Also delete the preceding newline.
|
||||
\(This is meant to make \\[repeat] work well with negative arguments.)
|
||||
If ARG is zero, delete current line but exclude the trailing newline."
|
||||
(interactive "p")
|
||||
(or arg (setq arg 1))
|
||||
(if (and (> arg 0) (eobp) (save-excursion (forward-visible-line 0) (eobp)))
|
||||
(signal 'end-of-buffer nil))
|
||||
(if (and (< arg 0) (bobp) (save-excursion (end-of-visible-line) (bobp)))
|
||||
(signal 'beginning-of-buffer nil))
|
||||
(unless (eq last-command 'delete-region)
|
||||
(delete-new "")
|
||||
(setq last-command 'delete-region))
|
||||
(cond ((zerop arg)
|
||||
;; We need to delete in two steps, because the previous command
|
||||
;; could have been a delete command, in which case the text
|
||||
;; before point needs to be prepended to the current delete
|
||||
;; ring entry and the text after point appended. Also, we
|
||||
;; need to use save-excursion to avoid copying the same text
|
||||
;; twice to the delete ring in read-only buffers.
|
||||
(save-excursion
|
||||
(delete-region (point) (progn (forward-visible-line 0) (point))))
|
||||
(delete-region (point) (progn (end-of-visible-line) (point))))
|
||||
((< arg 0)
|
||||
(save-excursion
|
||||
(delete-region (point) (progn (end-of-visible-line) (point))))
|
||||
(delete-region (point)
|
||||
(progn (forward-visible-line (1+ arg))
|
||||
(unless (bobp) (backward-char))
|
||||
(point))))
|
||||
(t
|
||||
(save-excursion
|
||||
(delete-region (point) (progn (forward-visible-line 0) (point))))
|
||||
(delete-region (point)
|
||||
(progn (forward-visible-line arg) (point))))))
|
||||
(define-key global-map [remap kill-whole-line] 'delete-whole-line)
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue