]> code.delx.au - gnu-emacs/commitdiff
(gdb-mouse-until): New function.
authorNick Roberts <nickrob@snap.net.nz>
Tue, 25 Oct 2005 02:30:39 +0000 (02:30 +0000)
committerNick Roberts <nickrob@snap.net.nz>
Tue, 25 Oct 2005 02:30:39 +0000 (02:30 +0000)
(gdb-ann3): Bind it to mouse-2 and drag-mouse-1 in left fringe.

lisp/progmodes/gdb-ui.el

index dae1b3e811b3a156f6af9fdd39e064d2e0a68a88..459ea405eb31bf07508cc7d5d0d1e032111f366a 100644 (file)
@@ -349,6 +349,10 @@ Also display the main routine in the disassembly buffer if present."
     'gdb-mouse-set-clear-breakpoint)
   (define-key gud-minor-mode-map [left-fringe mouse-1]
     'gdb-mouse-set-clear-breakpoint)
+  (define-key gud-minor-mode-map [left-fringe mouse-2]
+    'gdb-mouse-until)
+  (define-key gud-minor-mode-map [left-fringe drag-mouse-1]
+    'gdb-mouse-until)
   (define-key gud-minor-mode-map [left-margin mouse-3]
     'gdb-mouse-toggle-breakpoint-margin)
   (define-key gud-minor-mode-map [left-fringe mouse-3]
@@ -396,6 +400,21 @@ Also display the main routine in the disassembly buffer if present."
   (gdb-set-gud-minor-mode-existing-buffers)
   (run-hooks 'gdba-mode-hook))
 
+(defun gdb-mouse-until (event)
+  "Execute source lines by dragging the overlay arrow (fringe) with the mouse."
+  (interactive "e")
+  (if gud-overlay-arrow-position
+       (let ((start (event-start event))
+             (end  (event-end event))
+             (buffer (marker-buffer gud-overlay-arrow-position)) (line))
+         (if (equal buffer (window-buffer (posn-window end)))
+             (with-current-buffer buffer
+               (when (or (equal start end)
+                         (equal (posn-point start)
+                                (marker-position gud-overlay-arrow-position)))
+                 (setq line (line-number-at-pos (posn-point end)))
+                 (gud-call (concat "until " (number-to-string line)))))))))
+
 (defcustom gdb-use-colon-colon-notation nil
   "If non-nil use FUN::VAR format to display variables in the speedbar."
   :type 'boolean