# HG changeset patch # User Nick Roberts # Date 1170882772 0 # Node ID 9ed49c89489b4071680dc6d53a6096a225eb8566 # Parent f0eb82656af784c51c6c473c0fc1089b640d0b90 (gdb-mouse-until, gdb-mouse-jump): Make them work when there is just an assembler buffer (no source buffer). diff -r f0eb82656af7 -r 9ed49c89489b lisp/progmodes/gdb-ui.el --- a/lisp/progmodes/gdb-ui.el Wed Feb 07 21:12:18 2007 +0000 +++ b/lisp/progmodes/gdb-ui.el Wed Feb 07 21:12:52 2007 +0000 @@ -611,29 +611,30 @@ The destination source line can be selected either by clicking with mouse-2 on the fringe/margin or dragging the arrow with mouse-1 (default bindings)." (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 (not (string-match "Machine" mode-name)) - (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)))))) - (if (equal (marker-buffer gdb-overlay-arrow-position) - (window-buffer (posn-window end))) - (when (or (equal start end) - (equal (posn-point start) - (marker-position - gdb-overlay-arrow-position))) - (save-excursion - (goto-line (line-number-at-pos (posn-point end))) - (forward-char 2) - (gud-call (concat "until *%a"))))))))) + (let ((start (event-start event)) + (end (event-end event))) + (if gud-overlay-arrow-position + (let ((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)))))))) + (if gdb-overlay-arrow-position + (let ((buffer (marker-buffer gdb-overlay-arrow-position))) + (if (equal buffer (window-buffer (posn-window end))) + (with-current-buffer buffer + (when (or (equal start end) + (equal (posn-point start) + (marker-position + gdb-overlay-arrow-position))) + (save-excursion + (goto-line (line-number-at-pos (posn-point end))) + (forward-char 2) + (gud-call (concat "until *%a")))))))))) (defun gdb-mouse-jump (event) "Set execution address/line. @@ -642,32 +643,34 @@ Unlike gdb-mouse-until the destination address can be before the current line, and no execution takes place." (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 (not (string-match "Machine" mode-name)) - (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))) - (progn (gud-call (concat "tbreak " (number-to-string line))) - (gud-call (concat "jump " (number-to-string line))))))) - (if (equal (marker-buffer gdb-overlay-arrow-position) - (window-buffer (posn-window end))) - (when (or (equal start end) - (equal (posn-point start) - (marker-position - gdb-overlay-arrow-position))) - (save-excursion - (goto-line (line-number-at-pos (posn-point end))) - (forward-char 2) + (let ((start (event-start event)) + (end (event-end event))) + (if gud-overlay-arrow-position + (let ((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))) (progn - (gud-call (concat "tbreak *%a")) - (gud-call (concat "jump *%a")))))))))) + (gud-call (concat "tbreak " (number-to-string line))) + (gud-call (concat "jump " (number-to-string line))))))))) + (if gdb-overlay-arrow-position + (let ((buffer (marker-buffer gdb-overlay-arrow-position))) + (if (equal buffer (window-buffer (posn-window end))) + (with-current-buffer buffer + (when (or (equal start end) + (equal (posn-point start) + (marker-position + gdb-overlay-arrow-position))) + (save-excursion + (goto-line (line-number-at-pos (posn-point end))) + (forward-char 2) + (progn + (gud-call (concat "tbreak *%a")) + (gud-call (concat "jump *%a"))))))))))) (defcustom gdb-speedbar-auto-raise nil "If non-nil raise speedbar every time display of watch expressions is\