Mercurial > emacs
diff lisp/progmodes/gud.el @ 90314:d1c5430c5bff
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-21
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 97-112)
- Update from CVS
- Merge from erc--emacs--0
- Update from CVS: src/regex.c (extend_range_table_work_area): Fix typo.
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 37)
- Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Wed, 22 Feb 2006 06:54:10 +0000 |
parents | 9e490faa9f6b de243d5151e8 |
children | 34c8b755296d |
line wrap: on
line diff
--- a/lisp/progmodes/gud.el Wed Feb 22 06:52:00 2006 +0000 +++ b/lisp/progmodes/gud.el Wed Feb 22 06:54:10 2006 +0000 @@ -43,14 +43,13 @@ (eval-when-compile (require 'cl)) ; for case macro (require 'comint) -(require 'font-lock) (defvar gdb-active-process) (defvar gdb-define-alist) (defvar gdb-macro-info) (defvar gdb-server-prefix) (defvar gdb-show-changed-values) -(defvar gdb-var-changed) +(defvar gdb-force-update) (defvar gdb-var-list) (defvar gdb-speedbar-auto-raise) (defvar tool-bar-map) @@ -444,7 +443,7 @@ (p (window-point window))) (cond ((memq minor-mode '(gdbmi gdba)) - (when (or gdb-var-changed + (when (or gdb-force-update (not (save-excursion (goto-char (point-min)) (let ((case-fold-search t)) @@ -453,51 +452,68 @@ (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)) + (expr (car var)) (varnum (nth 1 var)) + (type (nth 3 var)) (status (nth 5 var))) + (put-text-property + 0 (length expr) 'face font-lock-variable-name-face expr) + (put-text-property + 0 (length type) 'face font-lock-type-face type) (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 (and (nth 5 var) - gdb-show-changed-values) - 'font-lock-warning-face - nil) depth) + (string-match "char \\*$" type))) + (speedbar-make-tag-line + 'bracket ?? nil nil + (concat expr "\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) + (t t))) + t) + 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)))) + (if (string-match "\\*$" type) + (speedbar-make-tag-line + 'bracket char + 'gdb-speedbar-expand-node varnum + (concat expr "\t" + type "\t" + (nth 4 var)) + (if (or parent status 'out-of-scope) + nil 'gdb-edit-value) + nil + (if (and (or parent status) gdb-show-changed-values) + 'shadow t) + depth) + (speedbar-make-tag-line + 'bracket char + 'gdb-speedbar-expand-node varnum + (concat expr "\t" type) + nil nil + (if (and (or parent status) gdb-show-changed-values) + 'shadow t) + depth)))) (setq var-list (cdr var-list)))) - (setq gdb-var-changed nil))) - (t (if (and (save-excursion - (goto-char (point-min)) - (looking-at "Current Stack:")) - (equal gud-last-last-frame gud-last-speedbar-stackframe)) - nil + (setq gdb-force-update nil))) + (t (unless (and (save-excursion + (goto-char (point-min)) + (looking-at "Current Stack:")) + (equal gud-last-last-frame gud-last-speedbar-stackframe)) (let ((gud-frame-list (cond ((eq minor-mode 'gdb) (gud-gdb-get-stackframe buffer))