changeset 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 ea9d3f2cd5fa
children c4e62c57c22c
files lisp/menu-bar.el
diffstat 1 files changed, 27 insertions(+), 0 deletions(-) [+]
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))