all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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.





  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
2015-09-25 15:15 ` Yuri Khan
     [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-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

* 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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.