(insert "Watch Expressions:\n")
(if gdb-speedbar-auto-raise
(raise-frame speedbar-frame))
- (let ((var-list gdb-var-list))
+ (let ((var-list gdb-var-list) parent)
(while var-list
- (let* (char (depth 0) (start 0)
- (var (car var-list)) (varnum (nth 1 var)))
+ (let* (char (depth 0) (start 0) (var (car var-list))
+ (varnum (nth 1 var)) (status (nth 5 var)))
(while (string-match "\\." varnum start)
(setq depth (1+ depth)
start (1+ (match-beginning 0))))
+ (if (eq depth 0) (setq parent nil))
(if (or (equal (nth 2 var) "0")
(and (equal (nth 2 var) "1")
(string-match "char \\*$" (nth 3 var))))
- (speedbar-make-tag-line 'bracket ?? nil nil
- (concat (car var) "\t" (nth 4 var))
- 'gdb-edit-value
- nil
- (if gdb-show-changed-values
- (case (nth 5 var)
- (changed 'font-lock-warning-face)
- (out-of-scope 'shadow)
- (nil nil))
- nil) depth)
+ (speedbar-make-tag-line
+ 'bracket ?? nil nil
+ (concat (car var) "\t" (nth 4 var))
+ (if (or parent (eq status 'out-of-scope))
+ nil 'gdb-edit-value)
+ nil
+ (if gdb-show-changed-values
+ (or parent (case status
+ (changed 'font-lock-warning-face)
+ (out-of-scope 'shadow)
+ (nil nil)))
+ nil) depth)
+ (if (eq status 'out-of-scope) (setq parent 'shadow))
(if (and (cadr var-list)
(string-match (concat varnum "\\.")
(cadr (cadr var-list))))
(setq char ?-)
(setq char ?+))
(if (string-match "\\*$" (nth 3 var))
- (speedbar-make-tag-line 'bracket char
- 'gdb-speedbar-expand-node varnum
- (concat (car var) "\t"
- (nth 3 var)"\t"
- (nth 4 var))
- 'gdb-edit-value nil
- (if (and (nth 5 var)
- gdb-show-changed-values)
- 'font-lock-warning-face
- nil) depth)
- (speedbar-make-tag-line 'bracket char
- 'gdb-speedbar-expand-node varnum
- (concat (car var) "\t" (nth 3 var))
- nil nil nil depth))))
+ (speedbar-make-tag-line
+ 'bracket char
+ 'gdb-speedbar-expand-node varnum
+ (concat (car var) "\t"
+ (nth 3 var)"\t"
+ (nth 4 var))
+ (if (or parent status 'out-of-scope)
+ nil 'gdb-edit-value)
+ nil
+ (if (and status gdb-show-changed-values)
+ 'shadow nil)
+ depth)
+ (speedbar-make-tag-line
+ 'bracket char
+ 'gdb-speedbar-expand-node varnum
+ (concat (car var) "\t" (nth 3 var))
+ nil nil
+ (if (and (nth 5 var) gdb-show-changed-values) 'shadow nil)
+ depth))))
(setq var-list (cdr var-list))))
(setq gdb-var-changed nil)))
(t (unless (and (save-excursion