Mercurial > emacs
comparison lisp/progmodes/gdb-ui.el @ 90203:187d6a1f84f7
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-71
Merge from emacs--cvs-trunk--0
Patches applied:
* emacs--cvs-trunk--0 (patch 485-492)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 92-94)
- Merge from emacs--cvs-trunk--0
- Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Fri, 22 Jul 2005 08:27:27 +0000 |
parents | fbb2bea03df9 ef82d5d73c0d |
children | 890cc78a5a24 |
comparison
equal
deleted
inserted
replaced
90202:7597b4a23c3b | 90203:187d6a1f84f7 |
---|---|
501 ,(nth 1 varchild) nil)))))))) | 501 ,(nth 1 varchild) nil)))))))) |
502 (push var var-list))) | 502 (push var var-list))) |
503 (setq gdb-var-list (nreverse var-list)))))) | 503 (setq gdb-var-list (nreverse var-list)))))) |
504 | 504 |
505 (defun gdb-var-update () | 505 (defun gdb-var-update () |
506 (if (not (member 'gdb-var-update gdb-pending-triggers)) | 506 (when (not (member 'gdb-var-update gdb-pending-triggers)) |
507 (progn | 507 (gdb-enqueue-input |
508 (gdb-enqueue-input | 508 (list "server interpreter mi \"-var-update *\"\n" |
509 (list | 509 'gdb-var-update-handler)) |
510 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) | 510 (push 'gdb-var-update gdb-pending-triggers))) |
511 "server interpreter mi \"-var-update *\"\n" | |
512 "-var-update *\n") | |
513 'gdb-var-update-handler)) | |
514 (push 'gdb-var-update gdb-pending-triggers)))) | |
515 | 511 |
516 (defconst gdb-var-update-regexp "name=\"\\(.*?\\)\"") | 512 (defconst gdb-var-update-regexp "name=\"\\(.*?\\)\"") |
517 | 513 |
518 (defun gdb-var-update-handler () | 514 (defun gdb-var-update-handler () |
519 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) | 515 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) |
520 (goto-char (point-min)) | 516 (goto-char (point-min)) |
521 (while (re-search-forward gdb-var-update-regexp nil t) | 517 (while (re-search-forward gdb-var-update-regexp nil t) |
522 (let ((varnum (match-string 1))) | 518 (let ((varnum (match-string 1))) |
523 (gdb-enqueue-input | 519 (gdb-enqueue-input |
524 (list | 520 (list |
525 (if (with-current-buffer gud-comint-buffer | 521 (concat "server interpreter mi \"-var-evaluate-expression " |
526 (eq gud-minor-mode 'gdba)) | 522 varnum "\"\n") |
527 (concat "server interpreter mi \"-var-evaluate-expression " | 523 `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))))) |
528 varnum "\"\n") | |
529 (concat "-var-evaluate-expression " varnum "\n")) | |
530 `(lambda () (gdb-var-evaluate-expression-handler | |
531 ,varnum t))))))) | |
532 (setq gdb-pending-triggers | 524 (setq gdb-pending-triggers |
533 (delq 'gdb-var-update gdb-pending-triggers)) | 525 (delq 'gdb-var-update gdb-pending-triggers)) |
534 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)) | 526 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)) |
535 ;; dummy command to update speedbar at right time | 527 ;; dummy command to update speedbar at right time |
536 (gdb-enqueue-input (list "server pwd\n" 'gdb-speedbar-timer-fn)) | 528 (gdb-enqueue-input (list "server pwd\n" 'gdb-speedbar-timer-fn)) |
542 (delq 'gdb-speedbar-timer gdb-pending-triggers)) | 534 (delq 'gdb-speedbar-timer gdb-pending-triggers)) |
543 (with-current-buffer gud-comint-buffer | 535 (with-current-buffer gud-comint-buffer |
544 (speedbar-timer-fn))) | 536 (speedbar-timer-fn))) |
545 | 537 |
546 (defun gdb-var-delete () | 538 (defun gdb-var-delete () |
547 "Delete watched expression from the speedbar." | 539 "Delete watch expression at point from the speedbar." |
548 (interactive) | 540 (interactive) |
549 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) | 541 (if (with-current-buffer |
542 gud-comint-buffer (memq gud-minor-mode '(gdbmi gdba))) | |
550 (let ((text (speedbar-line-text))) | 543 (let ((text (speedbar-line-text))) |
551 (string-match "\\(\\S-+\\)" text) | 544 (string-match "\\(\\S-+\\)" text) |
552 (let* ((expr (match-string 1 text)) | 545 (let* ((expr (match-string 1 text)) |
553 (var (assoc expr gdb-var-list)) | 546 (var (assoc expr gdb-var-list)) |
554 (varnum (cadr var))) | 547 (varnum (cadr var))) |
593 TOKEN is data related to this node. | 586 TOKEN is data related to this node. |
594 INDENT is the current indentation depth." | 587 INDENT is the current indentation depth." |
595 (cond ((string-match "+" text) ;expand this node | 588 (cond ((string-match "+" text) ;expand this node |
596 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) | 589 (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)) |
597 (gdb-var-list-children token) | 590 (gdb-var-list-children token) |
598 (gdbmi-var-list-children token))) | 591 (progn |
592 (gdbmi-var-update) | |
593 (gdbmi-var-list-children token)))) | |
599 ((string-match "-" text) ;contract this node | 594 ((string-match "-" text) ;contract this node |
600 (dolist (var gdb-var-list) | 595 (dolist (var gdb-var-list) |
601 (if (string-match (concat token "\\.") (nth 1 var)) | 596 (if (string-match (concat token "\\.") (nth 1 var)) |
602 (setq gdb-var-list (delq var gdb-var-list)))) | 597 (setq gdb-var-list (delq var gdb-var-list)))) |
603 (setq gdb-var-changed t)))) | 598 (setq gdb-var-changed t)))) |