summaryrefslogtreecommitdiff
path: root/lisp/progmodes/gdb-ui.el
diff options
context:
space:
mode:
authorNick Roberts <nickrob@snap.net.nz>2005-02-19 05:08:49 +0000
committerNick Roberts <nickrob@snap.net.nz>2005-02-19 05:08:49 +0000
commit9efdfc10ec2c6f8953421aaacf5573b038063807 (patch)
tree5f03b45459a5b6ad95bbeeb35a13bb2847469d1e /lisp/progmodes/gdb-ui.el
parent8c4e7434d23ae46e8961989cdab8d42ac5623a13 (diff)
downloademacs-9efdfc10ec2c6f8953421aaacf5573b038063807.tar.gz
emacs-9efdfc10ec2c6f8953421aaacf5573b038063807.tar.bz2
emacs-9efdfc10ec2c6f8953421aaacf5573b038063807.zip
(gdb-var-update-handler)
(gdb-speedbar-timer-fn): Ensure speedbar updates with new values for watch expressions, (gdb-var-create-handler): Don't set speedbar-update-flag. (gdb-post-prompt): Simplify test for speedbar.
Diffstat (limited to 'lisp/progmodes/gdb-ui.el')
-rw-r--r--lisp/progmodes/gdb-ui.el26
1 files changed, 18 insertions, 8 deletions
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 4eeb8fa1886..3c1251ba59b 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -338,7 +338,6 @@ detailed description of this mode.
(match-string 3)
nil nil)))
(push var gdb-var-list)
- (setq speedbar-update-flag t)
(speedbar 1)
(if (equal (nth 2 var) "0")
(gdb-enqueue-input
@@ -433,7 +432,18 @@ detailed description of this mode.
`(lambda () (gdb-var-evaluate-expression-handler
,varnum t)))))))
(setq gdb-pending-triggers
- (delq 'gdb-var-update gdb-pending-triggers)))
+ (delq 'gdb-var-update gdb-pending-triggers))
+ (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
+ ;; dummy command to update speedbar at right time
+ (gdb-enqueue-input (list "server pwd\n" 'gdb-speedbar-timer-fn))
+ ;; keep gdb-pending-triggers non-nil till end
+ (push 'gdb-speedbar-timer gdb-pending-triggers)))
+
+(defun gdb-speedbar-timer-fn ()
+ (setq gdb-pending-triggers
+ (delq 'gdb-speedbar-timer gdb-pending-triggers))
+ (with-current-buffer gud-comint-buffer
+ (speedbar-timer-fn)))
(defun gdb-var-delete ()
"Delete watched expression from the speedbar."
@@ -882,12 +892,12 @@ happens to be appropriate."
(gdb-invalidate-threads)
(unless (eq system-type 'darwin) ;Breaks on Darwin's GDB-5.3.
;; FIXME: with GDB-6 on Darwin, this might very well work.
- (dolist (frame (frame-list))
- (when (string-equal (frame-parameter frame 'name) "Speedbar")
- (setq gdb-var-changed t) ; force update
- (dolist (var gdb-var-list)
- (setcar (nthcdr 5 var) nil))))
- (gdb-var-update))))
+ ;; only needed/used with speedbar/watch expressions
+ (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
+ (setq gdb-var-changed t) ; force update
+ (dolist (var gdb-var-list)
+ (setcar (nthcdr 5 var) nil))
+ (gdb-var-update)))))
(let ((sink gdb-output-sink))
(cond
((eq sink 'user) t)