Homepage: https://www.emacswiki.org/emacs/download/browse-kill-ring%2b.el
Author: Drew Adams
Updated:
Extensions to `browse-kill-ring.el'
Extensions to `browse-kill-ring.el'. Put this in your init file (~/.emacs): (require 'browse-kill-ring+) Option `browse-kill-ring-alternative-ring' is an alternative selection ring to use, in addition to the `kill-ring'. You can customize the value to any ring of strings you like. `browse-kill-ring' lets you use either ring as the selection ring to browse and paste. You can even use both rings, in different `browse-kill-ring' display buffers. In such a buffer (in `browse-kill-ring-mode'), `o' pops to the list for the other ring. If you have library `second-sel.el' in your `load-path' (recommended) it is loaded automatically when you load `browse-kill-ring+.el'. In this case, by default `browse-kill-ring-alternative-ring' is the secondary selection ring. You can customize the set of commands to be recognized as yank commands and alternative yank commands - see options `browse-kill-ring-yank-commands' and `browse-kill-ring-alternative-yank-commands'. The alternative yank commands are commands that yank using a different selection ring, for example, the secondary yank commands defined by library `second-sel.el'. Following a yank command or alternative yank command, `M-y' pops and yanks the appropriate type of selection. A prefix arg N chooses the Nth previous selection in the ring. Otherwise (not following a yank or alternative yank), `M-y' browses the current selection ring. A prefix arg switches to the other selection ring. If you are in a `browse-kill-ring' buffer, then `M-y' switches to the other ring even without a prefix arg. If there is no alternative selection ring (e.g., you do not use library `second-sel.el'), then `M-y' either pops (following a yank) or browses (not following a yank) the `kill-ring'. FWIW, I customize `browse-kill-ring-quit-action' to be `browse-kill-ring-quit-deletes-window/frame'. This is similar to the default behavior, except that if the window is dedicated, then the frame is deleted. Icicles offers an alternative: completion vs browsing. You might want to use the Icicles (library `icicles.el') binding of `M-y' as an alternative to the `browse-kill-ring+.el' behavior of `M-y'. If you do that you can of course still use `browse-kill-ring+.el' to browse the selection rings. Just bind `browse-kill-ring'. What Icicles offers is the ability to yank by completing against the selection rings, instead of browsing them. Commands defined here: `browse-kill-ring-copy-to-other-ring', `browse-kill-ring-switch-to-other-kill-ring', `toggle-browse-kill-ring-display-style'. User options defined here: `browse-kill-ring-alternative-push-function', `browse-kill-ring-alternative-ring', `browse-kill-ring-alternative-yank-commands', `browse-kill-ring-yank-commands'. Non-interactive functions defined here: `browse-kill-ring-current-ring', `browse-kill-ring-quit-deletes-window/frame', `browse-kill-ring-remove-dups', `browse-kill-ring-target-overlay-at'. Internal variables defined here: `browse-kill-ring-current-ring', `browse-kill-ring-mode-map'. ***** NOTE: The following functions defined in `browse-kill-ring.el' have been REDEFINED HERE: `browse-kill-ring', `browse-kill-ring-append-insert-and-move', `browse-kill-ring-current-string', `browse-kill-ring-default-keybindings', `browse-kill-ring-delete', `browse-kill-ring-do-append-insert', `browse-kill-ring-do-insert', `browse-kill-ring-insert-and-move', `browse-kill-ring-do-prepend-insert', `browse-kill-ring-edit', `browse-kill-ring-edit-finish', `browse-kill-ring-forward', `browse-kill-ring-prepend-insert-and-move', `browse-kill-ring-mode' `browse-kill-ring-setup'. ***** NOTE: The following functions defined in `second-sel.el' have been ADVISED HERE: `add-secondary-to-ring'. Key bindings defined here for `browse-kill-ring-mode-map': `t' - `toggle-browse-kill-ring-display-style' `TAB' - `browse-kill-ring-forward' `S-TAB' - `browse-kill-ring-previous' NOTE: This library automatically calls `browse-kill-ring-default-keybindings'. If you do not want that, then comment out this call (at the end of the file). TO DO: `browse-kill-ring-edit': membership of selection text is not sufficient, since there can be duplicates.