comparison lisp/progmodes/gdb-ui.el @ 66845:607fc7bd4896

(gdb-var-create-handler, gdb-var-list-children-handler): Match on "const char *" too. (gdb-var-evaluate-expression-handler): Match on empty string. (gdb-var-update-handler): Only call gdb-var-evaluate-expression-handler when required.
author Nick Roberts <nickrob@snap.net.nz>
date Sun, 13 Nov 2005 09:02:23 +0000
parents 51ebdb18e3d9
children 10f616ac16f1
comparison
equal deleted inserted replaced
66844:3eeaeabe0bb8 66845:607fc7bd4896
491 (unless (string-equal 491 (unless (string-equal
492 speedbar-initial-expansion-list-name "GUD") 492 speedbar-initial-expansion-list-name "GUD")
493 (speedbar-change-initial-expansion-list "GUD")) 493 (speedbar-change-initial-expansion-list "GUD"))
494 (if (or (equal (nth 2 var) "0") 494 (if (or (equal (nth 2 var) "0")
495 (and (equal (nth 2 var) "1") 495 (and (equal (nth 2 var) "1")
496 (equal (nth 3 var) "char *"))) 496 (string-match "char \\*" (nth 3 var))))
497 (gdb-enqueue-input 497 (gdb-enqueue-input
498 (list 498 (list
499 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 499 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
500 'gdba) 500 'gdba)
501 (concat "server interpreter mi \"-var-evaluate-expression " 501 (concat "server interpreter mi \"-var-evaluate-expression "
509 (message "No symbol \"%s\" in current context." expr))))) 509 (message "No symbol \"%s\" in current context." expr)))))
510 510
511 (defun gdb-var-evaluate-expression-handler (varnum changed) 511 (defun gdb-var-evaluate-expression-handler (varnum changed)
512 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) 512 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
513 (goto-char (point-min)) 513 (goto-char (point-min))
514 (re-search-forward ".*value=\\(\".+\"\\)" nil t) 514 (re-search-forward ".*value=\\(\".*\"\\)" nil t)
515 (catch 'var-found 515 (catch 'var-found
516 (let ((num 0)) 516 (let ((num 0))
517 (dolist (var gdb-var-list) 517 (dolist (var gdb-var-list)
518 (if (string-equal varnum (cadr var)) 518 (if (string-equal varnum (cadr var))
519 (progn 519 (progn
552 (if (string-equal (cadr var1) (cadr varchild)) 552 (if (string-equal (cadr var1) (cadr varchild))
553 (throw 'child-already-watched nil))) 553 (throw 'child-already-watched nil)))
554 (push varchild var-list) 554 (push varchild var-list)
555 (if (or (equal (nth 2 varchild) "0") 555 (if (or (equal (nth 2 varchild) "0")
556 (and (equal (nth 2 varchild) "1") 556 (and (equal (nth 2 varchild) "1")
557 (equal (nth 3 varchild) "char *"))) 557 (string-match "char \\*" (nth 3 varchild))))
558 (gdb-enqueue-input 558 (gdb-enqueue-input
559 (list 559 (list
560 (concat 560 (concat
561 "server interpreter mi \"-var-evaluate-expression " 561 "server interpreter mi \"-var-evaluate-expression "
562 (nth 1 varchild) "\"\n") 562 (nth 1 varchild) "\"\n")
576 576
577 (defun gdb-var-update-handler () 577 (defun gdb-var-update-handler ()
578 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer) 578 (with-current-buffer (gdb-get-create-buffer 'gdb-partial-output-buffer)
579 (goto-char (point-min)) 579 (goto-char (point-min))
580 (while (re-search-forward gdb-var-update-regexp nil t) 580 (while (re-search-forward gdb-var-update-regexp nil t)
581 (catch 'var-found-1
581 (let ((varnum (match-string 1))) 582 (let ((varnum (match-string 1)))
582 (gdb-enqueue-input 583 (dolist (var gdb-var-list)
583 (list 584 (when (and (string-equal varnum (cadr var))
584 (concat "server interpreter mi \"-var-evaluate-expression " 585 (or (equal (nth 2 var) "0")
585 varnum "\"\n") 586 (and (equal (nth 2 var) "1")
586 `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))))) 587 (string-match "char \\*" (nth 3 var)))))
588 (gdb-enqueue-input
589 (list
590 (concat "server interpreter mi \"-var-evaluate-expression "
591 varnum "\"\n")
592 `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))
593 (throw 'var-found-1 nil)))))))
587 (setq gdb-pending-triggers 594 (setq gdb-pending-triggers
588 (delq 'gdb-var-update gdb-pending-triggers)) 595 (delq 'gdb-var-update gdb-pending-triggers))
589 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame)) 596 (when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
590 ;; Dummy command to update speedbar at right time. 597 ;; Dummy command to update speedbar at right time.
591 (gdb-enqueue-input (list "server pwd\n" 'gdb-speedbar-timer-fn)) 598 (gdb-enqueue-input (list "server pwd\n" 'gdb-speedbar-timer-fn))