changeset 66977:6ea7a5538417

(gdb-ann3): Move definition of gud-pp to here. Make it work in the speedbar. (gdb-find-watch-expression): New function.
author Nick Roberts <nickrob@snap.net.nz>
date Fri, 18 Nov 2005 02:47:21 +0000
parents 243cef8d7946
children 40cc5f0fb379
files lisp/progmodes/gdb-ui.el
diffstat 1 files changed, 18 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/gdb-ui.el	Fri Nov 18 02:46:06 2005 +0000
+++ b/lisp/progmodes/gdb-ui.el	Fri Nov 18 02:47:21 2005 +0000
@@ -337,6 +337,15 @@
 			 (file-name-nondirectory file) ":1\n")
 		 `(lambda () (gdb-set-gud-minor-mode ,buffer)))))))))
 
+(defun gdb-find-watch-expression ()
+  (let* ((var (nth (- (line-number-at-pos (point)) 2) gdb-var-list))
+	 (varno (nth 1 var)) (expr))
+    (string-match "\\(var[0-9]+\\)\\.\\(.*\\)" varno)
+    (dolist (var1 gdb-var-list)
+      (if (string-equal (nth 1 var1) (match-string 1 varno))
+	  (setq expr (concat (car var1) "." (match-string 2 varno)))))
+    expr))
+
 (defun gdb-ann3 ()
   (setq gdb-debug-log nil)
   (set (make-local-variable 'gud-minor-mode) 'gdba)
@@ -369,6 +378,15 @@
   (gud-def gud-go (gud-call (if gdb-active-process "continue" "run") arg)
 	   nil "Start or continue execution.")
 
+  ;; For debugging Emacs only.
+  (gud-def gud-pp
+	   (gud-call
+	    (concat
+	     "pp1 " (if (eq (buffer-local-value
+			     'major-mode (window-buffer)) 'speedbar-mode)
+			(gdb-find-watch-expression) "%e")) arg)
+	   nil   "Print the emacs s-expression.")
+
   (define-key gud-minor-mode-map [left-margin mouse-1]
     'gdb-mouse-set-clear-breakpoint)
   (define-key gud-minor-mode-map [left-fringe mouse-1]