Mercurial > emacs
diff lisp/menu-bar.el @ 3795:d59af8c9bc65
(mouse-menu-choose-yank): New function. Put it in the edit menu.
(yank-menu-length): New variable.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 17 Jun 1993 04:17:21 +0000 |
parents | 5fb4eefbd7ac |
children | 92d25f36e8aa |
line wrap: on
line diff
--- a/lisp/menu-bar.el Thu Jun 17 04:09:15 1993 +0000 +++ b/lisp/menu-bar.el Thu Jun 17 04:17:21 1993 +0000 @@ -104,6 +104,33 @@ (and (boundp 'pending-undo-list) pending-undo-list) buffer-undo-list))) + +(defvar yank-menu-length 100 + "*Maximum length of an item in the menu for \ +\\[mouse-menu-choose-yank].") + +(defun mouse-menu-choose-yank (event) + "Pop up a menu of the kill-ring for selection with the mouse. +The kill-ring-yank-pointer is moved to the selected element. +A subsequent \\[yank] yanks the choice just selected." + (interactive "e") + (let* ((count 0) + (menu (mapcar (lambda (string) + (if (> (length string) yank-menu-length) + (setq string (substring string + 0 yank-menu-length))) + (prog1 (cons string count) + (setq count (1+ count)))) + kill-ring))) + (rotate-yank-pointer (x-popup-menu event + (list "Yank Menu" + (cons "Pick Selection" menu)))) + (if (interactive-p) + (message "The next yank will insert the selected text.") + (current-kill 0)))) + +(define-key menu-bar-edit-menu [choose-selection] + '("Choose Pasting Selection" . mouse-menu-choose-yank)) (define-key global-map [menu-bar buffer] '("Buffers" . mouse-menu-bar-buffers))