From: Michael Heerdegen <michael_heerdegen@web.de>
To: help-gnu-emacs@gnu.org
Subject: Re: kill-region without modifying the kill ring
Date: Sat, 26 Sep 2015 06:35:31 +0200 [thread overview]
Message-ID: <87d1x5lrvw.fsf@web.de> (raw)
In-Reply-To: 20150926022718.GG25140@chitra.no-ip.org
Suvayu Ali <fatkasuvayu+linux@gmail.com> writes:
> This sounds amazing! I would love to use something like this.
But note it's what I want, maybe this hack comes in your way in
situations where you like the original behavior more.
Anyway, here's the hack:
--8<---------------cut here---------------start------------->8---
(defun my-yank-reset-yank-pointer ()
(unless (eq last-command #'yank)
(setq kill-ring-yank-pointer kill-ring)))
(defun my-yank--before-ad (&rest _args)
"Before advice function for `yank'.
1. avoid persistent change of kill-ring-yank-pointer after
`yank-pop', and before next kill.
2. For yank-pop, move the really yanked text at the beg of the
kill ring."
(unless (eq kill-ring kill-ring-yank-pointer)
(let ((last-yank (car kill-ring-yank-pointer)))
(when last-yank
(setq kill-ring (cons last-yank (delete last-yank kill-ring)))
(my-yank-reset-yank-pointer)))))
(advice-add 'yank :before #'my-yank--before-ad)
(defun my-yank-pop ()
(interactive)
(if (eq last-command 'yank)
(call-interactively #'yank-pop)
(rotate-yank-pointer 1)
(yank)))
(global-set-key [(meta ?y)] #'my-yank-pop)
--8<---------------cut here---------------end--------------->8---
Regards,
Michael.
next prev parent reply other threads:[~2015-09-26 4:35 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-25 8:32 kill-region without modifying the kill ring Jim Newton
2015-09-25 12:15 ` tomas
[not found] ` <mailman.1800.1443183340.19560.help-gnu-emacs@gnu.org>
2015-09-25 12:47 ` Jim Newton
2015-09-25 12:49 ` Jim Newton
2015-09-25 13:30 ` B. T. Raven
2015-09-25 13:36 ` Jim Newton
2015-09-26 17:57 ` B. T. Raven
2015-09-25 13:51 ` Jorge A. Alfaro-Murillo
[not found] ` <mailman.1805.1443189138.19560.help-gnu-emacs@gnu.org>
2015-09-25 14:30 ` Jim Newton
2015-09-25 15:47 ` Jorge A. Alfaro-Murillo
2015-09-26 0:41 ` Robert Thorpe
2015-09-25 16:40 ` Michael Heerdegen
2015-09-26 2:27 ` Suvayu Ali
2015-09-26 4:35 ` Michael Heerdegen [this message]
2015-09-25 19:13 ` Javier
2015-09-25 15:21 ` Barry Margolin
2015-09-25 15:37 ` Jorge A. Alfaro-Murillo
[not found] ` <mailman.1812.1443195492.19560.help-gnu-emacs@gnu.org>
2015-09-25 16:37 ` Barry Margolin
2015-09-25 15:15 ` Yuri Khan
2015-09-26 2:07 ` Emanuel Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d1x5lrvw.fsf@web.de \
--to=michael_heerdegen@web.de \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).