diff options
| author | Nick Roberts | 2003-09-30 17:58:19 +0000 |
|---|---|---|
| committer | Nick Roberts | 2003-09-30 17:58:19 +0000 |
| commit | 187c0c4022db93a0bf22c46ed25ce595ea744a6d (patch) | |
| tree | 4b2993c08365891a89a42cb0fa52fbf311d12b34 | |
| parent | a641269a1bd98d36b7cd183df9e56d078a05861e (diff) | |
| download | emacs-187c0c4022db93a0bf22c46ed25ce595ea744a6d.tar.gz emacs-187c0c4022db93a0bf22c46ed25ce595ea744a6d.zip | |
(gud-menu-map, gud-tool-bar-map): Replace
gud-display with gud-watch.
(gud-speedbar-buttons): Add stuff for watching expressions
in the speedbar when using M-x gdba. Use dolist on old part
of this function.
| -rw-r--r-- | lisp/progmodes/gud.el | 125 |
1 files changed, 78 insertions, 47 deletions
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index ad43117e694..2fd61b632df 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el | |||
| @@ -115,7 +115,7 @@ Used to grey out relevant toolbar icons.") | |||
| 115 | '(gdba gdb dbx xdb jdb pdb bashdb)))) | 115 | '(gdba gdb dbx xdb jdb pdb bashdb)))) |
| 116 | ([print] menu-item "Print Expression" gud-print | 116 | ([print] menu-item "Print Expression" gud-print |
| 117 | :enable (not gud-running)) | 117 | :enable (not gud-running)) |
| 118 | ([display] menu-item "Display Expression" gud-display | 118 | ([watch] menu-item "Watch Expression" gud-watch |
| 119 | :enable (and (not gud-running) | 119 | :enable (and (not gud-running) |
| 120 | (eq gud-minor-mode 'gdba))) | 120 | (eq gud-minor-mode 'gdba))) |
| 121 | ([finish] menu-item "Finish Function" gud-finish | 121 | ([finish] menu-item "Finish Function" gud-finish |
| @@ -158,7 +158,7 @@ Used to grey out relevant toolbar icons.") | |||
| 158 | (dolist (x '((gud-break . "gud-break") | 158 | (dolist (x '((gud-break . "gud-break") |
| 159 | (gud-remove . "gud-remove") | 159 | (gud-remove . "gud-remove") |
| 160 | (gud-print . "gud-print") | 160 | (gud-print . "gud-print") |
| 161 | (gud-display . "gud-display") | 161 | (gud-watch . "gud-watch") |
| 162 | (gud-run . "gud-run") | 162 | (gud-run . "gud-run") |
| 163 | (gud-until . "gud-until") | 163 | (gud-until . "gud-until") |
| 164 | (gud-cont . "gud-cont") | 164 | (gud-cont . "gud-cont") |
| @@ -318,52 +318,83 @@ t means that there is no stack, and we are in display-file mode.") | |||
| 318 | "Create a speedbar display based on the current state of GUD. | 318 | "Create a speedbar display based on the current state of GUD. |
| 319 | If the GUD BUFFER is not running a supported debugger, then turn | 319 | If the GUD BUFFER is not running a supported debugger, then turn |
| 320 | off the specialized speedbar mode." | 320 | off the specialized speedbar mode." |
| 321 | (if (and (save-excursion (goto-char (point-min)) | 321 | (let ((minor-mode (with-current-buffer buffer gud-minor-mode))) |
| 322 | (looking-at "Current Stack")) | 322 | (cond |
| 323 | (equal gud-last-last-frame gud-last-speedbar-stackframe)) | 323 | ((eq minor-mode 'gdba) |
| 324 | nil | 324 | (gdb-var-update) |
| 325 | (setq gud-last-speedbar-buffer buffer) | 325 | (when (or gdb-var-changed |
| 326 | (let* ((minor-mode (with-current-buffer buffer gud-minor-mode)) | 326 | (not (save-excursion |
| 327 | (frames | 327 | (goto-char (point-min)) |
| 328 | (cond ((memq minor-mode '(gdba gdb)) | 328 | (let ((case-fold-search t)) |
| 329 | (gud-gdb-get-stackframe buffer)) | 329 | (looking-at "Watch Expressions:"))))) |
| 330 | ;; Add more debuggers here! | 330 | (erase-buffer) |
| 331 | (t | 331 | (insert "Watch Expressions:\n") |
| 332 | (speedbar-remove-localized-speedbar-support buffer) | 332 | (let ((var-list gdb-var-list)) |
| 333 | nil)))) | 333 | (while var-list |
| 334 | (erase-buffer) | 334 | (let* ((depth 0) (start 0) (char ?+) |
| 335 | (if (not frames) | 335 | (var (car var-list)) (varnum (nth 1 var))) |
| 336 | (insert "No Stack frames\n") | 336 | (while (string-match "\\." varnum start) |
| 337 | (insert "Current Stack:\n")) | 337 | (setq depth (1+ depth) |
| 338 | (while frames | 338 | start (1+ (match-beginning 0)))) |
| 339 | (insert (nth 1 (car frames)) ":\n") | 339 | (if (equal (nth 2 var) "0") |
| 340 | (if (= (length (car frames)) 2) | 340 | (speedbar-make-tag-line 'bracket ?? nil nil |
| 341 | (progn | 341 | (concat (car var) " " (nth 4 var)) |
| 342 | ; (speedbar-insert-button "[?]" | 342 | 'gdb-var-delete |
| 343 | nil 'speedbar-directory-face depth) | ||
| 344 | (if (and (cadr var-list) | ||
| 345 | (string-match varnum (cadr (cadr var-list)))) | ||
| 346 | (setq char ?-)) | ||
| 347 | (speedbar-make-tag-line 'bracket char | ||
| 348 | 'gdb-speedbar-expand-node varnum | ||
| 349 | (concat (car var) " " (nth 3 var)) | ||
| 350 | 'gdb-var-delete | ||
| 351 | nil 'speedbar-directory-face depth))) | ||
| 352 | (setq var-list (cdr var-list)))) | ||
| 353 | (setq gdb-var-changed nil))) | ||
| 354 | (t (if (and (save-excursion | ||
| 355 | (goto-char (point-min)) | ||
| 356 | (looking-at "Current Stack")) | ||
| 357 | (equal gud-last-last-frame gud-last-speedbar-stackframe)) | ||
| 358 | nil | ||
| 359 | (setq gud-last-speedbar-buffer buffer) | ||
| 360 | (let ((gud-frame-list | ||
| 361 | (cond ((eq minor-mode 'gdb) | ||
| 362 | (gud-gdb-get-stackframe buffer)) | ||
| 363 | ;; Add more debuggers here! | ||
| 364 | (t (speedbar-remove-localized-speedbar-support buffer) | ||
| 365 | nil)))) | ||
| 366 | (erase-buffer) | ||
| 367 | (if (not gud-frame-list) | ||
| 368 | (insert "No Stack frames\n") | ||
| 369 | (insert "Current Stack:\n")) | ||
| 370 | (dolist (frame gud-frame-list) | ||
| 371 | (insert (nth 1 frame) ":\n") | ||
| 372 | (if (= (length frame) 2) | ||
| 373 | (progn | ||
| 374 | ; (speedbar-insert-button "[?]" | ||
| 375 | ; 'speedbar-button-face | ||
| 376 | ; nil nil nil t) | ||
| 377 | (speedbar-insert-button (car frame) | ||
| 378 | 'speedbar-directory-face | ||
| 379 | nil nil nil t)) | ||
| 380 | ; (speedbar-insert-button "[+]" | ||
| 343 | ; 'speedbar-button-face | 381 | ; 'speedbar-button-face |
| 344 | ; nil nil nil t) | 382 | ; 'speedbar-highlight-face |
| 345 | (speedbar-insert-button (car (car frames)) | 383 | ; 'gud-gdb-get-scope-data |
| 346 | 'speedbar-directory-face | 384 | ; frame t) |
| 347 | nil nil nil t)) | 385 | (speedbar-insert-button (car frame) |
| 348 | ; (speedbar-insert-button "[+]" | 386 | 'speedbar-file-face |
| 349 | ; 'speedbar-button-face | 387 | 'speedbar-highlight-face |
| 350 | ; 'speedbar-highlight-face | 388 | (cond ((memq minor-mode '(gdba gdb)) |
| 351 | ; 'gud-gdb-get-scope-data | 389 | 'gud-gdb-goto-stackframe) |
| 352 | ; (car frames) t) | 390 | (t (error "Should never be here"))) |
| 353 | (speedbar-insert-button (car (car frames)) | 391 | frame t))) |
| 354 | 'speedbar-file-face | 392 | ; (let ((selected-frame |
| 355 | 'speedbar-highlight-face | 393 | ; (cond ((eq ff 'gud-gdb-find-file) |
| 356 | (cond ((memq minor-mode '(gdba gdb)) | 394 | ; (gud-gdb-selected-frame-info buffer)) |
| 357 | 'gud-gdb-goto-stackframe) | 395 | ; (t (error "Should never be here")))))) |
| 358 | (t (error "Should never be here"))) | 396 | ) |
| 359 | (car frames) t)) | 397 | (setq gud-last-speedbar-stackframe gud-last-last-frame)))))) |
| 360 | (setq frames (cdr frames))) | ||
| 361 | ; (let ((selected-frame | ||
| 362 | ; (cond ((eq ff 'gud-gdb-find-file) | ||
| 363 | ; (gud-gdb-selected-frame-info buffer)) | ||
| 364 | ; (t (error "Should never be here")))))) | ||
| 365 | ) | ||
| 366 | (setq gud-last-speedbar-stackframe gud-last-last-frame))) | ||
| 367 | 398 | ||
| 368 | 399 | ||
| 369 | ;; ====================================================================== | 400 | ;; ====================================================================== |