Mercurial > emacs
comparison lisp/gdb-ui.el @ 48659:4d69c0f01cc0
(gdb-inferior-io-mode-map): Remove (unused).
(gdb-inferior-io-mode): Use define-minor-mode.
(gdb-source-info): Don't burp if there's no source file.
(gdb-inferior-io-interrupt, gdb-inferior-io-quit)
(gdb-inferior-io-stop, gdb-inferior-io-eof)
(gdb-display-breakpoints-buffer, gdb-frame-breakpoints-buffer)
(gdb-display-stack-buffer, gdb-frame-stack-buffer)
(gdb-display-registers-buffer, gdb-frame-registers-buffer)
(gdb-display-locals-buffer, gdb-frame-locals-buffer)
(gdb-display-display-buffer, gdb-frame-display-buffer)
(gdb-display-gdb-buffer, gdb-frame-gdb-buffer)
(gdb-display-assembler-buffer, gdb-frame-assembler-buffer):
Remove the spurious left over arg from the "big reorg".
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 04 Dec 2002 17:19:32 +0000 |
parents | da382393fb77 |
children | b092bff770ec |
comparison
equal
deleted
inserted
replaced
48658:9994fce2e427 | 48659:4d69c0f01cc0 |
---|---|
470 (defun gdb-inferior-io-name () | 470 (defun gdb-inferior-io-name () |
471 (concat "*input/output of " | 471 (concat "*input/output of " |
472 (gdb-instance-target-string) | 472 (gdb-instance-target-string) |
473 "*")) | 473 "*")) |
474 | 474 |
475 (defvar gdb-inferior-io-mode-map (copy-keymap comint-mode-map)) | |
476 (define-key comint-mode-map "\C-c\C-c" 'gdb-inferior-io-interrupt) | 475 (define-key comint-mode-map "\C-c\C-c" 'gdb-inferior-io-interrupt) |
477 (define-key comint-mode-map "\C-c\C-z" 'gdb-inferior-io-stop) | 476 (define-key comint-mode-map "\C-c\C-z" 'gdb-inferior-io-stop) |
478 (define-key comint-mode-map "\C-c\C-\\" 'gdb-inferior-io-quit) | 477 (define-key comint-mode-map "\C-c\C-\\" 'gdb-inferior-io-quit) |
479 (define-key comint-mode-map "\C-c\C-d" 'gdb-inferior-io-eof) | 478 (define-key comint-mode-map "\C-c\C-d" 'gdb-inferior-io-eof) |
480 | 479 |
481 (defun gdb-inferior-io-mode () | 480 (define-derived-mode gdb-inferior-io-mode comint-mode "Debuggee I/O" |
482 "Major mode for gdb inferior-io. | 481 "Major mode for gdb inferior-io." |
483 | 482 :syntax-table nil :abbrev-table nil |
484 \\{comint-mode-map}" | |
485 ;; We want to use comint because it has various nifty and familiar | 483 ;; We want to use comint because it has various nifty and familiar |
486 ;; features. We don't need a process, but comint wants one, so create | 484 ;; features. We don't need a process, but comint wants one, so create |
487 ;; a dummy one. | 485 ;; a dummy one. |
488 (make-comint (substring (buffer-name) 1 (- (length (buffer-name)) 1)) | 486 (make-comint-in-buffer |
489 "/bin/cat") | 487 (substring (buffer-name) 1 (- (length (buffer-name)) 1)) |
490 (setq major-mode 'gdb-inferior-io-mode) | 488 (current-buffer) "/bin/cat") |
491 (setq mode-name "Debuggee I/O") | |
492 (set (make-local-variable 'gud-minor-mode) 'gdba) | 489 (set (make-local-variable 'gud-minor-mode) 'gdba) |
493 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) | 490 (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) |
494 (setq comint-input-sender 'gdb-inferior-io-sender)) | 491 (setq comint-input-sender 'gdb-inferior-io-sender)) |
495 | 492 |
496 (defun gdb-inferior-io-sender (proc string) | 493 (defun gdb-inferior-io-sender (proc string) |
500 (process-send-string gdb-proc string) | 497 (process-send-string gdb-proc string) |
501 (process-send-string gdb-proc "\n"))) | 498 (process-send-string gdb-proc "\n"))) |
502 | 499 |
503 (defun gdb-inferior-io-interrupt () | 500 (defun gdb-inferior-io-interrupt () |
504 "Interrupt the program being debugged." | 501 "Interrupt the program being debugged." |
505 (interactive (list gdb-proc)) | 502 (interactive) |
506 (interrupt-process | 503 (interrupt-process |
507 (get-buffer-process (gdb-get-instance-buffer 'gdba)) comint-ptyp)) | 504 (get-buffer-process (gdb-get-instance-buffer 'gdba)) comint-ptyp)) |
508 | 505 |
509 (defun gdb-inferior-io-quit () | 506 (defun gdb-inferior-io-quit () |
510 "Send quit signal to the program being debugged." | 507 "Send quit signal to the program being debugged." |
511 (interactive (list gdb-proc)) | 508 (interactive) |
512 (quit-process | 509 (quit-process |
513 (get-buffer-process (gdb-get-instance-buffer 'gdba)) comint-ptyp)) | 510 (get-buffer-process (gdb-get-instance-buffer 'gdba)) comint-ptyp)) |
514 | 511 |
515 (defun gdb-inferior-io-stop () | 512 (defun gdb-inferior-io-stop () |
516 "Stop the program being debugged." | 513 "Stop the program being debugged." |
517 (interactive (list gdb-proc)) | 514 (interactive) |
518 (stop-process | 515 (stop-process |
519 (get-buffer-process (gdb-get-instance-buffer 'gdba)) comint-ptyp)) | 516 (get-buffer-process (gdb-get-instance-buffer 'gdba)) comint-ptyp)) |
520 | 517 |
521 (defun gdb-inferior-io-eof () | 518 (defun gdb-inferior-io-eof () |
522 "Send end-of-file to the program being debugged." | 519 "Send end-of-file to the program being debugged." |
523 (interactive (list gdb-proc)) | 520 (interactive) |
524 (process-send-eof | 521 (process-send-eof |
525 (get-buffer-process (gdb-get-instance-buffer 'gdba)))) | 522 (get-buffer-process (gdb-get-instance-buffer 'gdba)))) |
526 | 523 |
527 | 524 |
528 ;; | 525 ;; |
1147 gdb-display-value)) | 1144 gdb-display-value)) |
1148 (insert | 1145 (insert |
1149 (concat indices-string "\t" gdb-display-value "\n")))) | 1146 (concat indices-string "\t" gdb-display-value "\n")))) |
1150 (setq indices-string "") | 1147 (setq indices-string "") |
1151 (setq flag t) | 1148 (setq flag t) |
1152 ; 0<= index < depth, start at right : (- depth 1) | 1149 ;; 0<= index < depth, start at right : (- depth 1) |
1153 (setq index (- (- depth 1) | 1150 (setq index (- (- depth 1) |
1154 (- (match-end 2) (match-beginning 2)))) | 1151 (- (match-end 2) (match-beginning 2)))) |
1155 ;don't set for very last brackets | 1152 ;;don't set for very last brackets |
1156 (if (>= index 0) | 1153 (if (>= index 0) |
1157 (progn | 1154 (progn |
1158 (aset indices index (+ 1 (aref indices index))) | 1155 (aset indices index (+ 1 (aref indices index))) |
1159 (setq num (+ 1 index)) | 1156 (setq num (+ 1 index)) |
1160 (while (< num depth) | 1157 (while (< num depth) |
1407 | 1404 |
1408 ;-put breakpoint icons in relevant margins (even those set in the GUD buffer) | 1405 ;-put breakpoint icons in relevant margins (even those set in the GUD buffer) |
1409 (defun gdb-info-breakpoints-custom () | 1406 (defun gdb-info-breakpoints-custom () |
1410 (let ((flag)(address)) | 1407 (let ((flag)(address)) |
1411 | 1408 |
1412 ; remove all breakpoint-icons in source buffers but not assembler buffer | 1409 ;; remove all breakpoint-icons in source buffers but not assembler buffer |
1413 (let ((buffers (buffer-list))) | 1410 (let ((buffers (buffer-list))) |
1414 (save-excursion | 1411 (save-excursion |
1415 (while buffers | 1412 (while buffers |
1416 (set-buffer (car buffers)) | 1413 (set-buffer (car buffers)) |
1417 (if (and (eq gud-minor-mode 'gdba) | 1414 (if (and (eq gud-minor-mode 'gdba) |
1478 (save-excursion | 1475 (save-excursion |
1479 (set-buffer (process-buffer gdb-proc)) | 1476 (set-buffer (process-buffer gdb-proc)) |
1480 (concat "*breakpoints of " (gdb-instance-target-string) "*"))) | 1477 (concat "*breakpoints of " (gdb-instance-target-string) "*"))) |
1481 | 1478 |
1482 (defun gdb-display-breakpoints-buffer () | 1479 (defun gdb-display-breakpoints-buffer () |
1483 (interactive (list gdb-proc)) | 1480 (interactive) |
1484 (gdb-display-buffer | 1481 (gdb-display-buffer |
1485 (gdb-get-create-instance-buffer 'gdb-breakpoints-buffer))) | 1482 (gdb-get-create-instance-buffer 'gdb-breakpoints-buffer))) |
1486 | 1483 |
1487 (defun gdb-frame-breakpoints-buffer () | 1484 (defun gdb-frame-breakpoints-buffer () |
1488 (interactive (list gdb-proc)) | 1485 (interactive) |
1489 (switch-to-buffer-other-frame | 1486 (switch-to-buffer-other-frame |
1490 (gdb-get-create-instance-buffer 'gdb-breakpoints-buffer))) | 1487 (gdb-get-create-instance-buffer 'gdb-breakpoints-buffer))) |
1491 | 1488 |
1492 (defvar gdb-breakpoints-mode-map nil) | 1489 (defvar gdb-breakpoints-mode-map nil) |
1493 (setq gdb-breakpoints-mode-map (make-keymap)) | 1490 (setq gdb-breakpoints-mode-map (make-keymap)) |
1602 (set-buffer (process-buffer gdb-proc)) | 1599 (set-buffer (process-buffer gdb-proc)) |
1603 (concat "*stack frames of " | 1600 (concat "*stack frames of " |
1604 (gdb-instance-target-string) "*"))) | 1601 (gdb-instance-target-string) "*"))) |
1605 | 1602 |
1606 (defun gdb-display-stack-buffer () | 1603 (defun gdb-display-stack-buffer () |
1607 (interactive (list gdb-proc)) | 1604 (interactive) |
1608 (gdb-display-buffer | 1605 (gdb-display-buffer |
1609 (gdb-get-create-instance-buffer 'gdb-stack-buffer))) | 1606 (gdb-get-create-instance-buffer 'gdb-stack-buffer))) |
1610 | 1607 |
1611 (defun gdb-frame-stack-buffer () | 1608 (defun gdb-frame-stack-buffer () |
1612 (interactive (list gdb-proc)) | 1609 (interactive) |
1613 (switch-to-buffer-other-frame | 1610 (switch-to-buffer-other-frame |
1614 (gdb-get-create-instance-buffer 'gdb-stack-buffer))) | 1611 (gdb-get-create-instance-buffer 'gdb-stack-buffer))) |
1615 | 1612 |
1616 (defvar gdb-frames-mode-map nil) | 1613 (defvar gdb-frames-mode-map nil) |
1617 (setq gdb-frames-mode-map (make-keymap)) | 1614 (setq gdb-frames-mode-map (make-keymap)) |
1691 (save-excursion | 1688 (save-excursion |
1692 (set-buffer (process-buffer gdb-proc)) | 1689 (set-buffer (process-buffer gdb-proc)) |
1693 (concat "*registers of " (gdb-instance-target-string) "*"))) | 1690 (concat "*registers of " (gdb-instance-target-string) "*"))) |
1694 | 1691 |
1695 (defun gdb-display-registers-buffer () | 1692 (defun gdb-display-registers-buffer () |
1696 (interactive (list gdb-proc)) | 1693 (interactive) |
1697 (gdb-display-buffer | 1694 (gdb-display-buffer |
1698 (gdb-get-create-instance-buffer 'gdb-registers-buffer))) | 1695 (gdb-get-create-instance-buffer 'gdb-registers-buffer))) |
1699 | 1696 |
1700 (defun gdb-frame-registers-buffer () | 1697 (defun gdb-frame-registers-buffer () |
1701 (interactive (list gdb-proc)) | 1698 (interactive) |
1702 (switch-to-buffer-other-frame | 1699 (switch-to-buffer-other-frame |
1703 (gdb-get-create-instance-buffer 'gdb-registers-buffer))) | 1700 (gdb-get-create-instance-buffer 'gdb-registers-buffer))) |
1704 | 1701 |
1705 ;; | 1702 ;; |
1706 ;; Locals buffers | 1703 ;; Locals buffers |
1764 (save-excursion | 1761 (save-excursion |
1765 (set-buffer (process-buffer gdb-proc)) | 1762 (set-buffer (process-buffer gdb-proc)) |
1766 (concat "*locals of " (gdb-instance-target-string) "*"))) | 1763 (concat "*locals of " (gdb-instance-target-string) "*"))) |
1767 | 1764 |
1768 (defun gdb-display-locals-buffer () | 1765 (defun gdb-display-locals-buffer () |
1769 (interactive (list gdb-proc)) | 1766 (interactive) |
1770 (gdb-display-buffer | 1767 (gdb-display-buffer |
1771 (gdb-get-create-instance-buffer 'gdb-locals-buffer))) | 1768 (gdb-get-create-instance-buffer 'gdb-locals-buffer))) |
1772 | 1769 |
1773 (defun gdb-frame-locals-buffer () | 1770 (defun gdb-frame-locals-buffer () |
1774 (interactive (list gdb-proc)) | 1771 (interactive) |
1775 (switch-to-buffer-other-frame | 1772 (switch-to-buffer-other-frame |
1776 (gdb-get-create-instance-buffer 'gdb-locals-buffer))) | 1773 (gdb-get-create-instance-buffer 'gdb-locals-buffer))) |
1777 ;; | 1774 ;; |
1778 ;; Display expression buffers (just allow one to start with) | 1775 ;; Display expression buffers (just allow one to start with) |
1779 ;; | 1776 ;; |
1824 (save-excursion | 1821 (save-excursion |
1825 (set-buffer (process-buffer gdb-proc)) | 1822 (set-buffer (process-buffer gdb-proc)) |
1826 (concat "*Displayed expressions of " (gdb-instance-target-string) "*"))) | 1823 (concat "*Displayed expressions of " (gdb-instance-target-string) "*"))) |
1827 | 1824 |
1828 (defun gdb-display-display-buffer () | 1825 (defun gdb-display-display-buffer () |
1829 (interactive (list gdb-proc)) | 1826 (interactive) |
1830 (gdb-display-buffer | 1827 (gdb-display-buffer |
1831 (gdb-get-create-instance-buffer 'gdb-display-buffer))) | 1828 (gdb-get-create-instance-buffer 'gdb-display-buffer))) |
1832 | 1829 |
1833 (defun gdb-frame-display-buffer () | 1830 (defun gdb-frame-display-buffer () |
1834 (interactive (list gdb-proc)) | 1831 (interactive) |
1835 (switch-to-buffer-other-frame | 1832 (switch-to-buffer-other-frame |
1836 (gdb-get-create-instance-buffer 'gdb-display-buffer))) | 1833 (gdb-get-create-instance-buffer 'gdb-display-buffer))) |
1837 | 1834 |
1838 (defun gdb-toggle-disp-this-line () | 1835 (defun gdb-toggle-disp-this-line () |
1839 "Enable/disable the displayed expression on this line." | 1836 "Enable/disable the displayed expression on this line." |
1968 | 1965 |
1969 | 1966 |
1970 ;;; Shared keymap initialization: | 1967 ;;; Shared keymap initialization: |
1971 | 1968 |
1972 (defun gdb-display-gdb-buffer () | 1969 (defun gdb-display-gdb-buffer () |
1973 (interactive (list gdb-proc)) | 1970 (interactive) |
1974 (gdb-display-buffer | 1971 (gdb-display-buffer |
1975 (gdb-get-create-instance-buffer 'gdba))) | 1972 (gdb-get-create-instance-buffer 'gdba))) |
1976 | 1973 |
1977 (defun gdb-make-windows-menu (map) | 1974 (defun gdb-make-windows-menu (map) |
1978 ;; FIXME: This adds to the DBX, PerlDB, ... menu as well :-( | 1975 ;; FIXME: This adds to the DBX, PerlDB, ... menu as well :-( |
2000 (define-key gud-minor-mode-map "\C-c\M-\C-b" 'gdb-display-breakpoints-buffer) | 1997 (define-key gud-minor-mode-map "\C-c\M-\C-b" 'gdb-display-breakpoints-buffer) |
2001 | 1998 |
2002 (gdb-make-windows-menu gud-minor-mode-map) | 1999 (gdb-make-windows-menu gud-minor-mode-map) |
2003 | 2000 |
2004 (defun gdb-frame-gdb-buffer () | 2001 (defun gdb-frame-gdb-buffer () |
2005 (interactive (list gdb-proc)) | 2002 (interactive) |
2006 (switch-to-buffer-other-frame | 2003 (switch-to-buffer-other-frame |
2007 (gdb-get-create-instance-buffer 'gdba))) | 2004 (gdb-get-create-instance-buffer 'gdba))) |
2008 | 2005 |
2009 (defun gdb-make-frames-menu (map) | 2006 (defun gdb-make-frames-menu (map) |
2010 (define-key map [menu-bar frames] | 2007 (define-key map [menu-bar frames] |
2142 | 2139 |
2143 (defun gdb-source-info () | 2140 (defun gdb-source-info () |
2144 "Find the source file where the program starts and displays it with related | 2141 "Find the source file where the program starts and displays it with related |
2145 buffers." | 2142 buffers." |
2146 (goto-char (point-min)) | 2143 (goto-char (point-min)) |
2147 (search-forward "directory is ") | 2144 (when (search-forward "directory is " nil t) |
2148 (looking-at "\\S-*") | 2145 (looking-at "\\S-*") |
2149 (setq gdb-cdir (match-string 0)) | 2146 (setq gdb-cdir (match-string 0)) |
2150 (search-forward "Located in ") | 2147 (search-forward "Located in ") |
2151 (looking-at "\\S-*") | 2148 (looking-at "\\S-*") |
2152 (setq gdb-main-file (match-string 0)) | 2149 (setq gdb-main-file (match-string 0)) |
2153 ;; Make sure we are not in the minibuffer window when we try to delete | 2150 ;; Make sure we are not in the minibuffer window when we try to delete |
2154 ;; all other windows. | 2151 ;; all other windows. |
2155 (if (window-minibuffer-p (selected-window)) | 2152 (if (window-minibuffer-p (selected-window)) |
2156 (other-window 1)) | 2153 (other-window 1)) |
2157 (delete-other-windows) | |
2158 (if gdb-many-windows | |
2159 (gdb-setup-windows) | |
2160 (gdb-display-breakpoints-buffer) | |
2161 (gdb-display-display-buffer) | |
2162 (gdb-display-stack-buffer) | |
2163 (delete-other-windows) | 2154 (delete-other-windows) |
2164 (split-window) | 2155 (if gdb-many-windows |
2165 (other-window 1) | 2156 (gdb-setup-windows) |
2166 (switch-to-buffer (gud-find-file gdb-main-file)) | 2157 (gdb-display-breakpoints-buffer) |
2167 (other-window 1) | 2158 (gdb-display-display-buffer) |
2168 (setq gdb-source-window (get-buffer-window (current-buffer))))) | 2159 (gdb-display-stack-buffer) |
2160 (delete-other-windows) | |
2161 (split-window) | |
2162 (other-window 1) | |
2163 (switch-to-buffer (gud-find-file gdb-main-file)) | |
2164 (other-window 1) | |
2165 (setq gdb-source-window (get-buffer-window (current-buffer)))))) | |
2169 | 2166 |
2170 ;from put-image | 2167 ;from put-image |
2171 (defun put-string (putstring pos &optional string area) | 2168 (defun put-string (putstring pos &optional string area) |
2172 "Put string PUTSTRING in front of POS in the current buffer. | 2169 "Put string PUTSTRING in front of POS in the current buffer. |
2173 PUTSTRING is displayed by putting an overlay into the current buffer with a | 2170 PUTSTRING is displayed by putting an overlay into the current buffer with a |
2363 (save-excursion | 2360 (save-excursion |
2364 (set-buffer (process-buffer gdb-proc)) | 2361 (set-buffer (process-buffer gdb-proc)) |
2365 (concat "*Machine Code " (gdb-instance-target-string) "*"))) | 2362 (concat "*Machine Code " (gdb-instance-target-string) "*"))) |
2366 | 2363 |
2367 (defun gdb-display-assembler-buffer () | 2364 (defun gdb-display-assembler-buffer () |
2368 (interactive (list gdb-proc)) | 2365 (interactive) |
2369 (gdb-display-buffer | 2366 (gdb-display-buffer |
2370 (gdb-get-create-instance-buffer 'gdb-assembler-buffer))) | 2367 (gdb-get-create-instance-buffer 'gdb-assembler-buffer))) |
2371 | 2368 |
2372 (defun gdb-frame-assembler-buffer () | 2369 (defun gdb-frame-assembler-buffer () |
2373 (interactive (list gdb-proc)) | 2370 (interactive) |
2374 (switch-to-buffer-other-frame | 2371 (switch-to-buffer-other-frame |
2375 (gdb-get-create-instance-buffer 'gdb-assembler-buffer))) | 2372 (gdb-get-create-instance-buffer 'gdb-assembler-buffer))) |
2376 | 2373 |
2377 (defun gdb-invalidate-frame-and-assembler (&optional ignored) | 2374 (defun gdb-invalidate-frame-and-assembler (&optional ignored) |
2378 (gdb-invalidate-frames) | 2375 (gdb-invalidate-frames) |