aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Roberts2006-05-07 12:08:23 +0000
committerNick Roberts2006-05-07 12:08:23 +0000
commit51158d6985a2b6f909aabddee887813b96c12d7c (patch)
treed5c209c71c2d86dcea4879b370e8be5491c0d35f
parent86c4b9a1e7da1b91f904d99c823af6ab5846a23e (diff)
downloademacs-51158d6985a2b6f909aabddee887813b96c12d7c.tar.gz
emacs-51158d6985a2b6f909aabddee887813b96c12d7c.zip
(gdb-var-create-handler): Move speedbar
call to... (gud-watch): ...here so speedbar is raised for already watched expressions. (gdb-speedbar-refresh): Delete function. (gdb-speedbar-update, gdb-speedbar-timer-fn): New functions. Use speedbar-timer-fn instead of speedbar-refresh (reverting earlier change). (gdb-var-evaluate-expression-handler) (gdb-var-list-children-handler-1, gdb-var-update-handler-1): Use it.
-rw-r--r--lisp/progmodes/gdb-ui.el44
1 files changed, 19 insertions, 25 deletions
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 19f6306b88a..a20f11e0aa2 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -694,6 +694,7 @@ With arg, enter name of variable to be watched in the minibuffer."
694 (if (and transient-mark-mode mark-active) 694 (if (and transient-mark-mode mark-active)
695 (buffer-substring (region-beginning) (region-end)) 695 (buffer-substring (region-beginning) (region-end))
696 (tooltip-identifier-from-point (point)))))) 696 (tooltip-identifier-from-point (point))))))
697 (speedbar 1)
697 (catch 'already-watched 698 (catch 'already-watched
698 (dolist (var gdb-var-list) 699 (dolist (var gdb-var-list)
699 (unless (string-match "\\." (car var)) 700 (unless (string-match "\\." (car var))
@@ -725,7 +726,6 @@ With arg, enter name of variable to be watched in the minibuffer."
725 (match-string 3) 726 (match-string 3)
726 nil nil gdb-frame-address))) 727 nil nil gdb-frame-address)))
727 (push var gdb-var-list) 728 (push var gdb-var-list)
728 (speedbar 1)
729 (unless (string-equal 729 (unless (string-equal
730 speedbar-initial-expansion-list-name "GUD") 730 speedbar-initial-expansion-list-name "GUD")
731 (speedbar-change-initial-expansion-list "GUD")) 731 (speedbar-change-initial-expansion-list "GUD"))
@@ -741,13 +741,26 @@ With arg, enter name of variable to be watched in the minibuffer."
741 (message-box "Watching expressions requires gdb 6.0 onwards") 741 (message-box "Watching expressions requires gdb 6.0 onwards")
742 (message-box "No symbol \"%s\" in current context." expr)))) 742 (message-box "No symbol \"%s\" in current context." expr))))
743 743
744(defun gdb-speedbar-update ()
745 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
746 ;; Dummy command to update speedbar even when idle.
747 (gdb-enqueue-input (list "server pwd\n" 'gdb-speedbar-timer-fn))
748 ;; Keep gdb-pending-triggers non-nil till end.
749 (push 'gdb-speedbar-timer gdb-pending-triggers)))
750
751(defun gdb-speedbar-timer-fn ()
752 (setq gdb-pending-triggers
753 (delq 'gdb-speedbar-timer gdb-pending-triggers))
754 (speedbar-timer-fn))
755
744(defun gdb-var-evaluate-expression-handler (varnum changed) 756(defun gdb-var-evaluate-expression-handler (varnum changed)
745 (goto-char (point-min)) 757 (goto-char (point-min))
746 (re-search-forward ".*value=\\(\".*\"\\)" nil t) 758 (re-search-forward ".*value=\\(\".*\"\\)" nil t)
747 (let ((var (assoc varnum gdb-var-list))) 759 (let ((var (assoc varnum gdb-var-list)))
748 (when var 760 (when var
749 (if changed (setcar (nthcdr 5 var) 'changed)) 761 (if changed (setcar (nthcdr 5 var) 'changed))
750 (setcar (nthcdr 4 var) (read (match-string 1)))))) 762 (setcar (nthcdr 4 var) (read (match-string 1)))))
763 (gdb-speedbar-update))
751 764
752(defun gdb-var-list-children (varnum) 765(defun gdb-var-list-children (varnum)
753 (gdb-enqueue-input 766 (gdb-enqueue-input
@@ -811,21 +824,7 @@ type_changed=\".*?\".*?}")
811 varnum "\"\n") 824 varnum "\"\n")
812 `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))))) 825 `(lambda () (gdb-var-evaluate-expression-handler ,varnum t)))))))
813 (setq gdb-pending-triggers 826 (setq gdb-pending-triggers
814 (delq 'gdb-var-update gdb-pending-triggers)) 827 (delq 'gdb-var-update gdb-pending-triggers)))
815 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
816 ;; Dummy command to update speedbar at right time.
817 (gdb-enqueue-input (list "server pwd\n" 'gdb-speedbar-refresh))
818 ;; Keep gdb-pending-triggers non-nil till end.
819 (push 'gdb-speedbar-refresh gdb-pending-triggers)))
820
821(defun gdb-speedbar-refresh ()
822 (setq gdb-pending-triggers
823 (delq 'gdb-speedbar-refresh gdb-pending-triggers))
824 (with-current-buffer gud-comint-buffer
825 (let ((speedbar-verbosity-level 0)
826 (speedbar-shown-directories nil))
827 (save-excursion
828 (speedbar-refresh)))))
829 828
830(defun gdb-var-delete () 829(defun gdb-var-delete ()
831 "Delete watch expression at point from the speedbar." 830 "Delete watch expression at point from the speedbar."
@@ -2804,8 +2803,6 @@ Kills the gdb buffers, and resets variables and the source buffers."
2804 (setq overlay-arrow-variable-list 2803 (setq overlay-arrow-variable-list
2805 (delq 'gdb-overlay-arrow-position overlay-arrow-variable-list)) 2804 (delq 'gdb-overlay-arrow-position overlay-arrow-variable-list))
2806 (setq fringe-indicator-alist '((overlay-arrow . right-triangle))) 2805 (setq fringe-indicator-alist '((overlay-arrow . right-triangle)))
2807 (if (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
2808 (speedbar-refresh))
2809 (setq gud-running nil) 2806 (setq gud-running nil)
2810 (setq gdb-active-process nil) 2807 (setq gdb-active-process nil)
2811 (setq gdb-var-list nil) 2808 (setq gdb-var-list nil)
@@ -3233,7 +3230,8 @@ numchild=\"\\(.+?\\)\",.*?value=\\(\".*?\"\\),.*?type=\"\\(.+?\\)\".*?}")
3233 (throw 'child-already-watched nil)) 3230 (throw 'child-already-watched nil))
3234 (push varchild var-list)))) 3231 (push varchild var-list))))
3235 (push var var-list))) 3232 (push var var-list)))
3236 (setq gdb-var-list (nreverse var-list))))) 3233 (setq gdb-var-list (nreverse var-list))))
3234 (gdb-speedbar-update))
3237 3235
3238; Uses "-var-update --all-values". Needs GDB 6.4 onwards. 3236; Uses "-var-update --all-values". Needs GDB 6.4 onwards.
3239(defun gdb-var-update-1 () 3237(defun gdb-var-update-1 ()
@@ -3266,11 +3264,7 @@ in_scope=\"\\(.*?\\)\".*?}")
3266 (read (match-string 2))))))) 3264 (read (match-string 2)))))))
3267 (setq gdb-pending-triggers 3265 (setq gdb-pending-triggers
3268 (delq 'gdb-var-update gdb-pending-triggers)) 3266 (delq 'gdb-var-update gdb-pending-triggers))
3269 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)) 3267 (gdb-speedbar-update))
3270 ;; dummy command to update speedbar at right time
3271 (gdb-enqueue-input (list "server pwd\n" 'gdb-speedbar-refresh))
3272 ;; keep gdb-pending-triggers non-nil till end
3273 (push 'gdb-speedbar-refresh gdb-pending-triggers)))
3274 3268
3275;; Registers buffer. 3269;; Registers buffer.
3276;; 3270;;