emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/mouse-sel.el


From: Kim F . Storm
Subject: [Emacs-diffs] Changes to emacs/lisp/mouse-sel.el
Date: Wed, 11 May 2005 08:33:45 -0400

Index: emacs/lisp/mouse-sel.el
diff -c emacs/lisp/mouse-sel.el:1.43 emacs/lisp/mouse-sel.el:1.44
*** emacs/lisp/mouse-sel.el:1.43        Thu Oct 28 23:34:51 2004
--- emacs/lisp/mouse-sel.el     Wed May 11 12:33:44 2005
***************
*** 465,474 ****
  
  This should be bound to a down-mouse event."
    (interactive "@e")
!   (let (direction)
      (unwind-protect
!       (setq direction (mouse-select-internal 'PRIMARY event))
!       (mouse-sel-primary-to-region direction))))
  
  (defun mouse-select-secondary (event)
    "Set secondary selection using the mouse.
--- 465,476 ----
  
  This should be bound to a down-mouse event."
    (interactive "@e")
!   (let (select)
      (unwind-protect
!       (setq select (mouse-select-internal 'PRIMARY event))
!       (if (and select (listp select))
!         (push (cons 'mouse-2 (cdr event)) unread-command-events)
!       (mouse-sel-primary-to-region select)))))
  
  (defun mouse-select-secondary (event)
    "Set secondary selection using the mouse.
***************
*** 487,493 ****
    (mouse-select-internal 'SECONDARY event))
  
  (defun mouse-select-internal (selection event)
!   "Set SELECTION using the mouse."
    (mouse-sel-eval-at-event-end event
      (let ((thing-symbol (mouse-sel-selection-thing selection))
          (overlay (mouse-sel-selection-overlay selection)))
--- 489,502 ----
    (mouse-select-internal 'SECONDARY event))
  
  (defun mouse-select-internal (selection event)
!   "Set SELECTION using the mouse, with EVENT as the initial down-event.
! Normally, this returns the direction in which the selection was
! made: a value of 1 indicates that the mouse was dragged
! left-to-right, otherwise it was dragged right-to-left.
! 
! However, if `mouse-1-click-follows-link' is non-nil and the
! subsequent mouse events specify following a link, this returns
! the final mouse-event.  In that case, the selection is not set."
    (mouse-sel-eval-at-event-end event
      (let ((thing-symbol (mouse-sel-selection-thing selection))
          (overlay (mouse-sel-selection-overlay selection)))
***************
*** 501,507 ****
                            (car object-bounds) (cdr object-bounds)
                            (current-buffer)))
          (move-overlay overlay (point) (point) (current-buffer)))))
!     (mouse-extend-internal selection)))
  
  ;;=== Extend ==============================================================
  
--- 510,517 ----
                            (car object-bounds) (cdr object-bounds)
                            (current-buffer)))
          (move-overlay overlay (point) (point) (current-buffer)))))
!     (catch 'follow-link
!       (mouse-extend-internal selection event t))))
  
  ;;=== Extend ==============================================================
  
***************
*** 523,533 ****
    (save-window-excursion
      (mouse-extend-internal 'SECONDARY event)))
  
! (defun mouse-extend-internal (selection &optional initial-event)
    "Extend specified SELECTION using the mouse.
  Track mouse-motion events, adjusting the SELECTION appropriately.
! Optional argument INITIAL-EVENT specifies an initial down-mouse event to
! process.
  
  See documentation for mouse-select-internal for more details."
    (mouse-sel-eval-at-event-end initial-event
--- 533,544 ----
    (save-window-excursion
      (mouse-extend-internal 'SECONDARY event)))
  
! (defun mouse-extend-internal (selection &optional initial-event no-process)
    "Extend specified SELECTION using the mouse.
  Track mouse-motion events, adjusting the SELECTION appropriately.
! Optional argument INITIAL-EVENT specifies an initial down-mouse event.
! Optional argument NO-PROCESS means not to process the initial
! event.
  
  See documentation for mouse-select-internal for more details."
    (mouse-sel-eval-at-event-end initial-event
***************
*** 564,570 ****
            ;; Handle dragging
            (track-mouse
  
!             (while (if initial-event  ; Use initial event
                         (prog1
                             (setq event initial-event)
                           (setq initial-event nil))
--- 575,582 ----
            ;; Handle dragging
            (track-mouse
  
!             (while (if (and initial-event (not no-process))
!                        ;; Use initial event
                         (prog1
                             (setq event initial-event)
                           (setq initial-event nil))
***************
*** 643,648 ****
--- 655,664 ----
  
                  )))                   ; end track-mouse
  
+           ;; Detect follow-link events
+           (when (mouse-sel-follow-link-p initial-event event)
+             (throw 'follow-link event))
+ 
            ;; Finish up after dragging
            (let ((overlay-start (overlay-start overlay))
                  (overlay-end (overlay-end overlay)))
***************
*** 679,684 ****
--- 695,719 ----
  
        ))))
  
+ (defun mouse-sel-follow-link-p (initial final)
+   "Return t if we should follow a link, given INITIAL and FINAL mouse events.
+ See `mouse-1-click-follows-link' for details.  Currently, Mouse
+ Sel mode does not support using a `double' value to follow links
+ using double-clicks."
+   (and initial final mouse-1-click-follows-link
+        (eq (car initial) 'down-mouse-1)
+        (mouse-on-link-p       (posn-point (event-start initial)))
+        (= (posn-point (event-start initial))
+         (posn-point (event-end final)))
+        (= (event-click-count initial) 1)
+        (or (not (integerp mouse-1-click-follows-link))
+          (let ((t0 (posn-timestamp (event-start initial)))
+                (t1 (posn-timestamp (event-end final))))
+            (and (integerp t0) (integerp t1)
+                 (if (> mouse-1-click-follows-link 0)
+                     (<= (- t1 t0) mouse-1-click-follows-link)
+                   (< (- t0 t1) mouse-1-click-follows-link)))))))
+ 
  ;;=== Paste ===============================================================
  
  (defun mouse-insert-selection (event arg)




reply via email to

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