diff options
| author | Nick Roberts | 2006-05-07 12:08:23 +0000 |
|---|---|---|
| committer | Nick Roberts | 2006-05-07 12:08:23 +0000 |
| commit | 51158d6985a2b6f909aabddee887813b96c12d7c (patch) | |
| tree | d5c209c71c2d86dcea4879b370e8be5491c0d35f | |
| parent | 86c4b9a1e7da1b91f904d99c823af6ab5846a23e (diff) | |
| download | emacs-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.el | 44 |
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 | ;; |