diff lisp/progmodes/gdb-ui.el @ 58049:fd0093bd412a

(gdb-current-stack-level): New variable. (gdb-info-frames-custom, gdb-frame-handler): Use it to find current frame (in case of recursive calls). (gdb-show-changed-values): Add :version keyword.
author Nick Roberts <nickrob@snap.net.nz>
date Mon, 08 Nov 2004 21:16:33 +0000
parents 641cb7192482
children 97e4fc5c7297 3ec251523b3e cb7f41387eb3
line wrap: on
line diff
--- a/lisp/progmodes/gdb-ui.el	Mon Nov 08 21:15:50 2004 +0000
+++ b/lisp/progmodes/gdb-ui.el	Mon Nov 08 21:16:33 2004 +0000
@@ -60,6 +60,7 @@
 (defvar gdb-previous-address nil)
 (defvar gdb-previous-frame nil)
 (defvar gdb-current-frame nil)
+(defvar gdb-current-stack-level nil)
 (defvar gdb-current-language nil)
 (defvar gdb-view-source t "Non-nil means that source code can be viewed.")
 (defvar gdb-selected-view 'source "Code type that user wishes to view.")
@@ -183,6 +184,7 @@
   (setq gdb-previous-address nil)
   (setq gdb-previous-frame nil)
   (setq gdb-current-frame nil)
+  (setq gdb-current-stack-level nil)
   (setq gdb-view-source t)
   (setq gdb-selected-view 'source)
   (setq gdb-var-list nil)
@@ -393,7 +395,8 @@
   "If non-nil highlight values that have recently changed in the speedbar.
 The highlighting is done with `font-lock-warning-face'."
   :type 'boolean
-  :group 'gud)
+  :group 'gud
+  :version "21.4")
 
 (defun gdb-speedbar-expand-node (text token indent)
   "Expand the node the user clicked on.
@@ -1291,9 +1294,8 @@
 			     '(mouse-face highlight
 			       help-echo "mouse-2, RET: Select frame"))
 	  (beginning-of-line)
-	  (when (and (or (looking-at "^#[0-9]*\\s-*\\S-* in \\(\\S-*\\)")
-			 (looking-at "^#[0-9]*\\s-*\\(\\S-*\\)"))
-		     (equal (match-string 1) gdb-current-frame))
+	  (when (and (looking-at "^#\\([0-9]+\\)")
+		     (equal (match-string 1) gdb-current-stack-level))
 	    (put-text-property (point-at-bol) (point-at-eol)
 			       'face '(:inverse-video t)))
 	  (forward-line 1))))))
@@ -2047,6 +2049,8 @@
    (delq 'gdb-get-current-frame gdb-pending-triggers))
   (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
     (goto-char (point-min))
+    (if (looking-at "Stack level \\([0-9]+\\)")
+	(setq gdb-current-stack-level (match-string 1)))
     (forward-line)
     (if (looking-at ".*=\\s-+0x\\(\\S-*\\)\\s-+in\\s-+\\(\\S-*?\\);? ")
 	(progn