comparison 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
comparison
equal deleted inserted replaced
58048:77b8f2fd25b9 58049:fd0093bd412a
58 58
59 (defvar gdb-current-address "main" "Initialisation for Assembler buffer.") 59 (defvar gdb-current-address "main" "Initialisation for Assembler buffer.")
60 (defvar gdb-previous-address nil) 60 (defvar gdb-previous-address nil)
61 (defvar gdb-previous-frame nil) 61 (defvar gdb-previous-frame nil)
62 (defvar gdb-current-frame nil) 62 (defvar gdb-current-frame nil)
63 (defvar gdb-current-stack-level nil)
63 (defvar gdb-current-language nil) 64 (defvar gdb-current-language nil)
64 (defvar gdb-view-source t "Non-nil means that source code can be viewed.") 65 (defvar gdb-view-source t "Non-nil means that source code can be viewed.")
65 (defvar gdb-selected-view 'source "Code type that user wishes to view.") 66 (defvar gdb-selected-view 'source "Code type that user wishes to view.")
66 (defvar gdb-var-list nil "List of variables in watch window.") 67 (defvar gdb-var-list nil "List of variables in watch window.")
67 (defvar gdb-var-changed nil "Non-nil means that gdb-var-list has changed.") 68 (defvar gdb-var-changed nil "Non-nil means that gdb-var-list has changed.")
181 ;; (re-)initialize 182 ;; (re-)initialize
182 (setq gdb-current-address "main") 183 (setq gdb-current-address "main")
183 (setq gdb-previous-address nil) 184 (setq gdb-previous-address nil)
184 (setq gdb-previous-frame nil) 185 (setq gdb-previous-frame nil)
185 (setq gdb-current-frame nil) 186 (setq gdb-current-frame nil)
187 (setq gdb-current-stack-level nil)
186 (setq gdb-view-source t) 188 (setq gdb-view-source t)
187 (setq gdb-selected-view 'source) 189 (setq gdb-selected-view 'source)
188 (setq gdb-var-list nil) 190 (setq gdb-var-list nil)
189 (setq gdb-var-changed nil) 191 (setq gdb-var-changed nil)
190 (setq gdb-first-prompt nil) 192 (setq gdb-first-prompt nil)
391 393
392 (defcustom gdb-show-changed-values t 394 (defcustom gdb-show-changed-values t
393 "If non-nil highlight values that have recently changed in the speedbar. 395 "If non-nil highlight values that have recently changed in the speedbar.
394 The highlighting is done with `font-lock-warning-face'." 396 The highlighting is done with `font-lock-warning-face'."
395 :type 'boolean 397 :type 'boolean
396 :group 'gud) 398 :group 'gud
399 :version "21.4")
397 400
398 (defun gdb-speedbar-expand-node (text token indent) 401 (defun gdb-speedbar-expand-node (text token indent)
399 "Expand the node the user clicked on. 402 "Expand the node the user clicked on.
400 TEXT is the text of the button we clicked on, a + or - item. 403 TEXT is the text of the button we clicked on, a + or - item.
401 TOKEN is data related to this node. 404 TOKEN is data related to this node.
1289 (while (< (point) (point-max)) 1292 (while (< (point) (point-max))
1290 (add-text-properties (point-at-bol) (point-at-eol) 1293 (add-text-properties (point-at-bol) (point-at-eol)
1291 '(mouse-face highlight 1294 '(mouse-face highlight
1292 help-echo "mouse-2, RET: Select frame")) 1295 help-echo "mouse-2, RET: Select frame"))
1293 (beginning-of-line) 1296 (beginning-of-line)
1294 (when (and (or (looking-at "^#[0-9]*\\s-*\\S-* in \\(\\S-*\\)") 1297 (when (and (looking-at "^#\\([0-9]+\\)")
1295 (looking-at "^#[0-9]*\\s-*\\(\\S-*\\)")) 1298 (equal (match-string 1) gdb-current-stack-level))
1296 (equal (match-string 1) gdb-current-frame))
1297 (put-text-property (point-at-bol) (point-at-eol) 1299 (put-text-property (point-at-bol) (point-at-eol)
1298 'face '(:inverse-video t))) 1300 'face '(:inverse-video t)))
1299 (forward-line 1)))))) 1301 (forward-line 1))))))
1300 1302
1301 (defun gdb-stack-buffer-name () 1303 (defun gdb-stack-buffer-name ()
2045 (defun gdb-frame-handler () 2047 (defun gdb-frame-handler ()
2046 (setq gdb-pending-triggers 2048 (setq gdb-pending-triggers
2047 (delq 'gdb-get-current-frame gdb-pending-triggers)) 2049 (delq 'gdb-get-current-frame gdb-pending-triggers))
2048 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) 2050 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
2049 (goto-char (point-min)) 2051 (goto-char (point-min))
2052 (if (looking-at "Stack level \\([0-9]+\\)")
2053 (setq gdb-current-stack-level (match-string 1)))
2050 (forward-line) 2054 (forward-line)
2051 (if (looking-at ".*=\\s-+0x\\(\\S-*\\)\\s-+in\\s-+\\(\\S-*?\\);? ") 2055 (if (looking-at ".*=\\s-+0x\\(\\S-*\\)\\s-+in\\s-+\\(\\S-*?\\);? ")
2052 (progn 2056 (progn
2053 (setq gdb-current-frame (match-string 2)) 2057 (setq gdb-current-frame (match-string 2))
2054 (if (gdb-get-buffer 'gdb-locals-buffer) 2058 (if (gdb-get-buffer 'gdb-locals-buffer)