Mercurial > emacs
changeset 75716:8bfa58061d79
(gdb-if-arrow): New macro.
(gdb-mouse-until, gdb-mouse-jump): Use it.
author | Nick Roberts <nickrob@snap.net.nz> |
---|---|
date | Wed, 07 Feb 2007 21:57:04 +0000 |
parents | 290bc5c215d2 |
children | 1e03c5a4215f |
files | lisp/progmodes/gdb-ui.el |
diffstat | 1 files changed, 21 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/gdb-ui.el Wed Feb 07 21:56:29 2007 +0000 +++ b/lisp/progmodes/gdb-ui.el Wed Feb 07 21:57:04 2007 +0000 @@ -606,6 +606,16 @@ (setq gdb-version "6.4+")) (gdb-init-2)) +(defmacro gdb-if-arrow (arrow-position &rest body) + `(if ,arrow-position + (let ((buffer (marker-buffer ,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 ,arrow-position))) + ,@body)))))) + (defun gdb-mouse-until (event) "Continue running until a source line past the current line. The destination source line can be selected either by clicking with mouse-2 @@ -613,28 +623,14 @@ (interactive "e") (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))) + (gdb-if-arrow 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")))))))))) + (gud-call (concat "until " (number-to-string line)))) + (gdb-if-arrow 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. @@ -645,32 +641,18 @@ (interactive "e") (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))) + (gdb-if-arrow 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 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))) + (gud-call (concat "jump " (number-to-string line))))) + (gdb-if-arrow 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"))))))))))) + (gud-call (concat "jump *%a"))))))) (defcustom gdb-speedbar-auto-raise nil "If non-nil raise speedbar every time display of watch expressions is\