;;;-*- Mode:LISP; Package:ZWEI; Base:10; Readtable:CL -*-

(DEFPROP COM-MOUSE-COPY-THING "Copy from mouse to point" :MOUSE-SHORT-DOCUMENTATION)
(DEFCOM COM-MOUSE-COPY-THING "Insert a copy of what's under the mouse at point"
	(KM)
  (WITH-BP (INSERTION-POINT (POINT) :NORMAL)
    (OR (MULTIPLE-VALUE-BIND (CHAR-UNDER-MOUSE NIL NIL LINE POS)
	    (MOUSE-CHAR *WINDOW* NIL)
	  (WHEN CHAR-UNDER-MOUSE
	    ;; Move to where the thing is, mark it, and save it on the kill ring.
	    (MOVE-BP (POINT) LINE POS)
	    (FUNCALL (OR (CALL-EDITING-TYPE-FUNCTION *MAJOR-MODE* 'MARK-THING-FUNCTION NIL)
			 #'DEFAULT-MARK-THING)
		     (POINT) (MARK) CHAR-UNDER-MOUSE LINE POS)
	    (KILL-RING-SAVE-INTERVAL (POINT) (MARK))
	    ;; Move back to the insertion point, and yank.
	    (MOVE-BP (POINT) INSERTION-POINT)
	    (COM-YANK)
	    DIS-TEXT))
	DIS-NONE)))


;;;; Edit history for HUNLA:L;ZWEI-MISC.LISP.1
;;;
;;; [10/27/88 03:30 CStacy] Function COM-MOUSE-COPY-THING: for quickly pointing-and-copying.
