aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Roberts2003-09-30 17:58:19 +0000
committerNick Roberts2003-09-30 17:58:19 +0000
commit187c0c4022db93a0bf22c46ed25ce595ea744a6d (patch)
tree4b2993c08365891a89a42cb0fa52fbf311d12b34
parenta641269a1bd98d36b7cd183df9e56d078a05861e (diff)
downloademacs-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.el125
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.
319If the GUD BUFFER is not running a supported debugger, then turn 319If the GUD BUFFER is not running a supported debugger, then turn
320off the specialized speedbar mode." 320off 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;; ======================================================================