emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

yanking a killed or saved region with a single mouse gesture


From: Manoj Srivastava
Subject: yanking a killed or saved region with a single mouse gesture
Date: Tue, 15 Apr 2008 00:21:28 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux) (x86_64-unknown-linux-gnu)

Hi,

        I've the years, I have grown  fond of the ability to save  (or
 kill) a region, and optionally yank it, using a single mouse gesture.
 I think this used to be in Emacs a long time ago, and I have retained
 he feature for personal use.

--8<---------------cut here---------------start------------->8---
 (define-key global-map [drag-mouse-2]   'mouse-save-drag)
 (define-key global-map [drag-mouse-3]   'mouse-yank-drag)
 (define-key global-map [S-drag-mouse-2] 'mouse-kill-drag)
 (define-key global-map [S-drag-mouse-3] 'mouse-kill-and-yank-drag)
--8<---------------cut here---------------end--------------->8---

        So mouse 2 saves, mouse 3 yanks the saved region, and holding
 down the shift key kills instead of saves.

        Would this be something that could be added back into emacs? Or
 is this too esoteric?

        manoj

(defun mouse-yank-drag (click arg)
  "Yank the region the mouse was dragged at at point"
  (interactive "e\nP")
  (save-excursion
    (let* ((start-posn (posn-point (event-start click)))
           (end-posn (posn-point (event-end click)))
           (start-window (posn-window (event-start click)))
           )
      (save-window-excursion
       (select-window start-window)
       (kill-new (buffer-substring start-posn end-posn))
       )))
  (yank arg))


(defun mouse-save-drag (click)
  "kill the region the mouse was dragged at at point"
  (interactive "e")
  (save-excursion
    (let* ((start-posn (posn-point (event-start click)))
           (end-posn (posn-point (event-end click)))
           (start-window (posn-window (event-start click)))
           )
      (save-window-excursion
       (select-window start-window)
       (kill-new (buffer-substring start-posn end-posn))
       )))
  )

(defun mouse-kill-drag (click)
  "kill the region the mouse was dragged at at point"
  (interactive "e")
  (save-excursion
    (let* ((start-posn (posn-point (event-start click)))
           (end-posn (posn-point (event-end click)))
           (start-window (posn-window (event-start click)))
           )
      (save-window-excursion
        (select-window start-window)
        (kill-new (buffer-substring start-posn end-posn))
        (delete-region   start-posn end-posn)
        ))))

(defun mouse-kill-and-yank-drag (click arg)
  "kill the region the mouse was dragged at at point"
  (interactive "e\nP")
  (save-excursion
    (let* ((start-posn (posn-point (event-start click)))
           (end-posn (posn-point (event-end click)))
           (start-window (posn-window (event-start click)))
           )
      (save-window-excursion
       (select-window start-window)
       (kill-new (buffer-substring start-posn end-posn))
       (delete-region   start-posn end-posn)
       )))
  (yank arg))


-- 
Thus spake the master programmer: "Time for you to leave."  -- Geoffrey
James, "The Tao of Programming"
Manoj Srivastava <address@hidden> <http://www.golden-gryphon.com/>  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C





reply via email to

[Prev in Thread] Current Thread [Next in Thread]