diff options
| -rw-r--r-- | lisp/gdb-ui.el | 302 |
1 files changed, 136 insertions, 166 deletions
diff --git a/lisp/gdb-ui.el b/lisp/gdb-ui.el index 8ed8fc68b7d..6cbbec1d19d 100644 --- a/lisp/gdb-ui.el +++ b/lisp/gdb-ui.el | |||
| @@ -472,10 +472,13 @@ The key should be one of the cars in `gdb-instance-buffer-rules-assoc'." | |||
| 472 | (gdb-instance-target-string) | 472 | (gdb-instance-target-string) |
| 473 | "*")) | 473 | "*")) |
| 474 | 474 | ||
| 475 | (define-key comint-mode-map "\C-c\C-c" 'gdb-inferior-io-interrupt) | 475 | (defvar gdb-inferior-io-mode-map |
| 476 | (define-key comint-mode-map "\C-c\C-z" 'gdb-inferior-io-stop) | 476 | (let ((map (make-sparse-keymap))) |
| 477 | (define-key comint-mode-map "\C-c\C-\\" 'gdb-inferior-io-quit) | 477 | (define-key map "\C-c\C-c" 'gdb-inferior-io-interrupt) |
| 478 | (define-key comint-mode-map "\C-c\C-d" 'gdb-inferior-io-eof) | 478 | (define-key map "\C-c\C-z" 'gdb-inferior-io-stop) |
| 479 | (define-key map "\C-c\C-\\" 'gdb-inferior-io-quit) | ||
| 480 | (define-key map "\C-c\C-d" 'gdb-inferior-io-eof) | ||
| 481 | map)) | ||
| 479 | 482 | ||
| 480 | (define-derived-mode gdb-inferior-io-mode comint-mode "Debuggee I/O" | 483 | (define-derived-mode gdb-inferior-io-mode comint-mode "Debuggee I/O" |
| 481 | "Major mode for gdb inferior-io." | 484 | "Major mode for gdb inferior-io." |
| @@ -825,23 +828,18 @@ output from the current command if that happens to be appropriate." | |||
| 825 | (set-buffer (get-buffer-create gdb-expression-buffer-name))) | 828 | (set-buffer (get-buffer-create gdb-expression-buffer-name))) |
| 826 | (gdb-expressions-mode) | 829 | (gdb-expressions-mode) |
| 827 | (setq gdb-dive-display-number number))) | 830 | (setq gdb-dive-display-number number))) |
| 828 | ;else | ||
| 829 | (set-buffer (get-buffer-create gdb-expression-buffer-name)) | 831 | (set-buffer (get-buffer-create gdb-expression-buffer-name)) |
| 830 | (if (and (display-graphic-p) (not gdb-dive)) | 832 | (if (and (display-graphic-p) (not gdb-dive)) |
| 831 | (catch 'frame-exists | 833 | (catch 'frame-exists |
| 832 | (let ((frames (frame-list))) | 834 | (dolist (frame (frame-list)) |
| 833 | (while frames | 835 | (if (string-equal (frame-parameter frame 'name) |
| 834 | (if (string-equal (frame-parameter (car frames) 'name) | 836 | gdb-expression-buffer-name) |
| 835 | gdb-expression-buffer-name) | 837 | (throw 'frame-exists nil))) |
| 836 | (throw 'frame-exists nil)) | 838 | (gdb-expressions-mode) |
| 837 | (setq frames (cdr frames))) | 839 | (make-frame '((height . 20) (width . 40) |
| 838 | (if (not frames) | 840 | (tool-bar-lines . nil) |
| 839 | (progn | 841 | (menu-bar-lines . nil) |
| 840 | (gdb-expressions-mode) | 842 | (minibuffer . nil))))))) |
| 841 | (make-frame '((height . 20) (width . 40) | ||
| 842 | (tool-bar-lines . nil) | ||
| 843 | (menu-bar-lines . nil) | ||
| 844 | (minibuffer . nil)))))))))) | ||
| 845 | (set-buffer (gdb-get-instance-buffer 'gdb-partial-output-buffer)) | 843 | (set-buffer (gdb-get-instance-buffer 'gdb-partial-output-buffer)) |
| 846 | (setq gdb-dive nil)) | 844 | (setq gdb-dive nil)) |
| 847 | 845 | ||
| @@ -851,6 +849,10 @@ output from the current command if that happens to be appropriate." | |||
| 851 | (defvar gdb-point) | 849 | (defvar gdb-point) |
| 852 | (defvar gdb-annotation-arg) | 850 | (defvar gdb-annotation-arg) |
| 853 | 851 | ||
| 852 | (defun gdb-delete-line () | ||
| 853 | "Delete the current line." | ||
| 854 | (delete-region (line-beginning-position) (line-beginning-position 2))) | ||
| 855 | |||
| 854 | (defun gdb-display-end (ignored) | 856 | (defun gdb-display-end (ignored) |
| 855 | (set-buffer (gdb-get-instance-buffer 'gdb-partial-output-buffer)) | 857 | (set-buffer (gdb-get-instance-buffer 'gdb-partial-output-buffer)) |
| 856 | (goto-char (point-min)) | 858 | (goto-char (point-min)) |
| @@ -901,7 +903,6 @@ output from the current command if that happens to be appropriate." | |||
| 901 | (if (looking-at "array-section-begin") | 903 | (if (looking-at "array-section-begin") |
| 902 | (progn | 904 | (progn |
| 903 | (gdb-delete-line) | 905 | (gdb-delete-line) |
| 904 | (beginning-of-line) | ||
| 905 | (setq gdb-point (point)) | 906 | (setq gdb-point (point)) |
| 906 | (gdb-array-format))) | 907 | (gdb-array-format))) |
| 907 | (if (looking-at "field-begin \\(.\\)") | 908 | (if (looking-at "field-begin \\(.\\)") |
| @@ -996,11 +997,11 @@ output from the current command if that happens to be appropriate." | |||
| 996 | (gdb-delete-line) | 997 | (gdb-delete-line) |
| 997 | (setq gdb-nesting-level (- gdb-nesting-level 1))) | 998 | (setq gdb-nesting-level (- gdb-nesting-level 1))) |
| 998 | 999 | ||
| 999 | (defvar gdb-dive-map nil) | 1000 | (defvar gdb-dive-map |
| 1000 | 1001 | (let ((map (make-sparse-keymap))) | |
| 1001 | (setq gdb-dive-map (make-keymap)) | 1002 | (define-key map [mouse-2] 'gdb-dive) |
| 1002 | (define-key gdb-dive-map [mouse-2] 'gdb-dive) | 1003 | (define-key map [S-mouse-2] 'gdb-dive-new-frame) |
| 1003 | (define-key gdb-dive-map [S-mouse-2] 'gdb-dive-new-frame) | 1004 | map)) |
| 1004 | 1005 | ||
| 1005 | (defun gdb-dive (event) | 1006 | (defun gdb-dive (event) |
| 1006 | "Dive into structure." | 1007 | "Dive into structure." |
| @@ -1092,9 +1093,10 @@ output from the current command if that happens to be appropriate." | |||
| 1092 | (defvar gdb-array-start) | 1093 | (defvar gdb-array-start) |
| 1093 | (defvar gdb-array-stop) | 1094 | (defvar gdb-array-stop) |
| 1094 | 1095 | ||
| 1095 | (defvar gdb-array-slice-map nil) | 1096 | (defvar gdb-array-slice-map |
| 1096 | (setq gdb-array-slice-map (make-keymap)) | 1097 | (let ((map (make-sparse-keymap))) |
| 1097 | (define-key gdb-array-slice-map [mouse-2] 'gdb-array-slice) | 1098 | (define-key map [mouse-2] 'gdb-array-slice) |
| 1099 | map)) | ||
| 1098 | 1100 | ||
| 1099 | (defun gdb-array-slice (event) | 1101 | (defun gdb-array-slice (event) |
| 1100 | "Select an array slice to display." | 1102 | "Select an array slice to display." |
| @@ -1125,8 +1127,8 @@ output from the current command if that happens to be appropriate." | |||
| 1125 | (index 0) (num 0) (array-start "") | 1127 | (index 0) (num 0) (array-start "") |
| 1126 | (array-stop "") (array-slice "") (array-range nil) | 1128 | (array-stop "") (array-slice "") (array-range nil) |
| 1127 | (flag t) (indices-string "")) | 1129 | (flag t) (indices-string "")) |
| 1128 | (while gdb-value-list | 1130 | (dolist (gdb-value gdb-value-list) |
| 1129 | (string-match "{*\\([^}]*\\)\\(}*\\)" (car gdb-value-list)) | 1131 | (string-match "{*\\([^}]*\\)\\(}*\\)" gdb-value) |
| 1130 | (setq num 0) | 1132 | (setq num 0) |
| 1131 | (while (< num depth) | 1133 | (while (< num depth) |
| 1132 | (setq indices-string | 1134 | (setq indices-string |
| @@ -1139,7 +1141,7 @@ output from the current command if that happens to be appropriate." | |||
| 1139 | (aset gdb-array-size num (aref indices num))) | 1141 | (aset gdb-array-size num (aref indices num))) |
| 1140 | (setq num (+ num 1))) | 1142 | (setq num (+ num 1))) |
| 1141 | (if flag | 1143 | (if flag |
| 1142 | (let ((gdb-display-value (match-string 1 (car gdb-value-list)))) | 1144 | (let ((gdb-display-value (match-string 1 gdb-value))) |
| 1143 | (setq gdb-display-string (concat gdb-display-string " " | 1145 | (setq gdb-display-string (concat gdb-display-string " " |
| 1144 | gdb-display-value)) | 1146 | gdb-display-value)) |
| 1145 | (insert | 1147 | (insert |
| @@ -1150,14 +1152,12 @@ output from the current command if that happens to be appropriate." | |||
| 1150 | (setq index (- (- depth 1) | 1152 | (setq index (- (- depth 1) |
| 1151 | (- (match-end 2) (match-beginning 2)))) | 1153 | (- (match-end 2) (match-beginning 2)))) |
| 1152 | ;;don't set for very last brackets | 1154 | ;;don't set for very last brackets |
| 1153 | (if (>= index 0) | 1155 | (when (>= index 0) |
| 1154 | (progn | 1156 | (aset indices index (+ 1 (aref indices index))) |
| 1155 | (aset indices index (+ 1 (aref indices index))) | 1157 | (setq num (+ 1 index)) |
| 1156 | (setq num (+ 1 index)) | 1158 | (while (< num depth) |
| 1157 | (while (< num depth) | 1159 | (aset indices num 0) |
| 1158 | (aset indices num 0) | 1160 | (setq num (+ num 1))))) |
| 1159 | (setq num (+ num 1))))) | ||
| 1160 | (setq gdb-value-list (cdr gdb-value-list))) | ||
| 1161 | (setq num 0) | 1161 | (setq num 0) |
| 1162 | (while (< num depth) | 1162 | (while (< num depth) |
| 1163 | (if (= (aref gdb-array-start num) -1) | 1163 | (if (= (aref gdb-array-start num) -1) |
| @@ -1397,10 +1397,8 @@ buffer." | |||
| 1397 | gdb-info-breakpoints-custom) | 1397 | gdb-info-breakpoints-custom) |
| 1398 | 1398 | ||
| 1399 | (defvar gdb-cdir nil "Compilation directory.") | 1399 | (defvar gdb-cdir nil "Compilation directory.") |
| 1400 | (defvar breakpoint-enabled-icon | 1400 | (defvar breakpoint-enabled-icon) |
| 1401 | "Icon for enabled breakpoint in display margin") | 1401 | (defvar breakpoint-disabled-icon) |
| 1402 | (defvar breakpoint-disabled-icon | ||
| 1403 | "Icon for disabled breakpoint in display margin") | ||
| 1404 | 1402 | ||
| 1405 | ;-put breakpoint icons in relevant margins (even those set in the GUD buffer) | 1403 | ;-put breakpoint icons in relevant margins (even those set in the GUD buffer) |
| 1406 | (defun gdb-info-breakpoints-custom () | 1404 | (defun gdb-info-breakpoints-custom () |
| @@ -1486,22 +1484,19 @@ buffer." | |||
| 1486 | (switch-to-buffer-other-frame | 1484 | (switch-to-buffer-other-frame |
| 1487 | (gdb-get-create-instance-buffer 'gdb-breakpoints-buffer))) | 1485 | (gdb-get-create-instance-buffer 'gdb-breakpoints-buffer))) |
| 1488 | 1486 | ||
| 1489 | (defvar gdb-breakpoints-mode-map nil) | 1487 | (defvar gdb-breakpoints-mode-map |
| 1490 | (setq gdb-breakpoints-mode-map (make-keymap)) | 1488 | (let ((map (make-sparse-keymap)) |
| 1491 | (suppress-keymap gdb-breakpoints-mode-map) | 1489 | (menu (make-sparse-keymap "Breakpoints"))) |
| 1490 | (define-key menu [toggle] '("Toggle" . gdb-toggle-bp-this-line)) | ||
| 1491 | (define-key menu [delete] '("Delete" . gdb-delete-bp-this-line)) | ||
| 1492 | (define-key menu [goto] '("Goto" . gdb-goto-bp-this-line)) | ||
| 1492 | 1493 | ||
| 1493 | (define-key gdb-breakpoints-mode-map [menu-bar breakpoints] | 1494 | (suppress-keymap map) |
| 1494 | (cons "Breakpoints" (make-sparse-keymap "Breakpoints"))) | 1495 | (define-key map [menu-bar breakpoints] (cons "Breakpoints" menu)) |
| 1495 | (define-key gdb-breakpoints-mode-map [menu-bar breakpoints toggle] | 1496 | (define-key map " " 'gdb-toggle-bp-this-line) |
| 1496 | '("Toggle" . gdb-toggle-bp-this-line)) | 1497 | (define-key map "d" 'gdb-delete-bp-this-line) |
| 1497 | (define-key gdb-breakpoints-mode-map [menu-bar breakpoints delete] | 1498 | (define-key map "g" 'gdb-goto-bp-this-line) |
| 1498 | '("Delete" . gdb-delete-bp-this-line)) | 1499 | map)) |
| 1499 | (define-key gdb-breakpoints-mode-map [menu-bar breakpoints goto] | ||
| 1500 | '("Goto" . gdb-goto-bp-this-line)) | ||
| 1501 | |||
| 1502 | (define-key gdb-breakpoints-mode-map " " 'gdb-toggle-bp-this-line) | ||
| 1503 | (define-key gdb-breakpoints-mode-map "d" 'gdb-delete-bp-this-line) | ||
| 1504 | (define-key gdb-breakpoints-mode-map "g" 'gdb-goto-bp-this-line) | ||
| 1505 | 1500 | ||
| 1506 | (defun gdb-breakpoints-mode () | 1501 | (defun gdb-breakpoints-mode () |
| 1507 | "Major mode for gdb breakpoints. | 1502 | "Major mode for gdb breakpoints. |
| @@ -1610,11 +1605,11 @@ buffer." | |||
| 1610 | (switch-to-buffer-other-frame | 1605 | (switch-to-buffer-other-frame |
| 1611 | (gdb-get-create-instance-buffer 'gdb-stack-buffer))) | 1606 | (gdb-get-create-instance-buffer 'gdb-stack-buffer))) |
| 1612 | 1607 | ||
| 1613 | (defvar gdb-frames-mode-map nil) | 1608 | (defvar gdb-frames-mode-map |
| 1614 | (setq gdb-frames-mode-map (make-keymap)) | 1609 | (let ((map (make-sparse-keymap))) |
| 1615 | (suppress-keymap gdb-frames-mode-map) | 1610 | (suppress-keymap map) |
| 1616 | (define-key gdb-frames-mode-map [mouse-2] | 1611 | (define-key map [mouse-2]'gdb-frames-select-by-mouse) |
| 1617 | 'gdb-frames-select-by-mouse) | 1612 | map)) |
| 1618 | 1613 | ||
| 1619 | (defun gdb-frames-mode () | 1614 | (defun gdb-frames-mode () |
| 1620 | "Major mode for gdb frames. | 1615 | "Major mode for gdb frames. |
| @@ -1668,9 +1663,10 @@ buffer." | |||
| 1668 | 'gdb-registers-buffer-name | 1663 | 'gdb-registers-buffer-name |
| 1669 | 'gdb-registers-mode) | 1664 | 'gdb-registers-mode) |
| 1670 | 1665 | ||
| 1671 | (defvar gdb-registers-mode-map nil) | 1666 | (defvar gdb-registers-mode-map |
| 1672 | (setq gdb-registers-mode-map (make-keymap)) | 1667 | (let ((map (make-sparse-keymap))) |
| 1673 | (suppress-keymap gdb-registers-mode-map) | 1668 | (suppress-keymap map) |
| 1669 | map)) | ||
| 1674 | 1670 | ||
| 1675 | (defun gdb-registers-mode () | 1671 | (defun gdb-registers-mode () |
| 1676 | "Major mode for gdb registers. | 1672 | "Major mode for gdb registers. |
| @@ -1741,9 +1737,10 @@ buffer." | |||
| 1741 | 'gdb-locals-buffer-name | 1737 | 'gdb-locals-buffer-name |
| 1742 | 'gdb-locals-mode) | 1738 | 'gdb-locals-mode) |
| 1743 | 1739 | ||
| 1744 | (defvar gdb-locals-mode-map nil) | 1740 | (defvar gdb-locals-mode-map |
| 1745 | (setq gdb-locals-mode-map (make-keymap)) | 1741 | (let ((map (make-sparse-keymap))) |
| 1746 | (suppress-keymap gdb-locals-mode-map) | 1742 | (suppress-keymap map) |
| 1743 | map)) | ||
| 1747 | 1744 | ||
| 1748 | (defun gdb-locals-mode () | 1745 | (defun gdb-locals-mode () |
| 1749 | "Major mode for gdb locals. | 1746 | "Major mode for gdb locals. |
| @@ -1791,19 +1788,17 @@ buffer." | |||
| 1791 | ; recompiled program. | 1788 | ; recompiled program. |
| 1792 | ) | 1789 | ) |
| 1793 | 1790 | ||
| 1794 | (defvar gdb-display-mode-map nil) | 1791 | (defvar gdb-display-mode-map |
| 1795 | (setq gdb-display-mode-map (make-keymap)) | 1792 | (let ((map (make-sparse-keymap)) |
| 1796 | (suppress-keymap gdb-display-mode-map) | 1793 | (menu (make-sparse-keymap "Display"))) |
| 1797 | 1794 | (define-key menu [toggle] '("Toggle" . gdb-toggle-disp-this-line)) | |
| 1798 | (define-key gdb-display-mode-map [menu-bar display] | 1795 | (define-key menu [delete] '("Delete" . gdb-delete-disp-this-line)) |
| 1799 | (cons "Display" (make-sparse-keymap "Display"))) | ||
| 1800 | (define-key gdb-display-mode-map [menu-bar display toggle] | ||
| 1801 | '("Toggle" . gdb-toggle-disp-this-line)) | ||
| 1802 | (define-key gdb-display-mode-map [menu-bar display delete] | ||
| 1803 | '("Delete" . gdb-delete-disp-this-line)) | ||
| 1804 | 1796 | ||
| 1805 | (define-key gdb-display-mode-map " " 'gdb-toggle-disp-this-line) | 1797 | (suppress-keymap map) |
| 1806 | (define-key gdb-display-mode-map "d" 'gdb-delete-disp-this-line) | 1798 | (define-key map [menu-bar display] (cons "Display" menu)) |
| 1799 | (define-key map " " 'gdb-toggle-disp-this-line) | ||
| 1800 | (define-key map "d" 'gdb-delete-disp-this-line) | ||
| 1801 | map)) | ||
| 1807 | 1802 | ||
| 1808 | (defun gdb-display-mode () | 1803 | (defun gdb-display-mode () |
| 1809 | "Major mode for gdb display. | 1804 | "Major mode for gdb display. |
| @@ -1876,9 +1871,13 @@ buffer." | |||
| 1876 | (throw 'frame-found nil))) | 1871 | (throw 'frame-found nil))) |
| 1877 | (setq frames (cdr frames)))))))))) | 1872 | (setq frames (cdr frames)))))))))) |
| 1878 | 1873 | ||
| 1879 | (defvar gdb-expressions-mode-map nil) | 1874 | (defvar gdb-expressions-mode-map |
| 1880 | (setq gdb-expressions-mode-map (make-keymap)) | 1875 | (let ((map (make-sparse-keymap))) |
| 1881 | (suppress-keymap gdb-expressions-mode-map) | 1876 | (suppress-keymap map) |
| 1877 | (define-key map "v" 'gdb-array-visualise) | ||
| 1878 | (define-key map "q" 'gdb-delete-display) | ||
| 1879 | (define-key map [mouse-3] 'gdb-expressions-popup-menu) | ||
| 1880 | map)) | ||
| 1882 | 1881 | ||
| 1883 | (defvar gdb-expressions-mode-menu | 1882 | (defvar gdb-expressions-mode-menu |
| 1884 | '("GDB Expressions Commands" | 1883 | '("GDB Expressions Commands" |
| @@ -1887,10 +1886,6 @@ buffer." | |||
| 1887 | ["Delete" gdb-delete-display t]) | 1886 | ["Delete" gdb-delete-display t]) |
| 1888 | "Menu for `gdb-expressions-mode'.") | 1887 | "Menu for `gdb-expressions-mode'.") |
| 1889 | 1888 | ||
| 1890 | (define-key gdb-expressions-mode-map "v" 'gdb-array-visualise) | ||
| 1891 | (define-key gdb-expressions-mode-map "q" 'gdb-delete-display) | ||
| 1892 | (define-key gdb-expressions-mode-map [mouse-3] 'gdb-expressions-popup-menu) | ||
| 1893 | |||
| 1894 | (defun gdb-expressions-popup-menu (event) | 1889 | (defun gdb-expressions-popup-menu (event) |
| 1895 | "Explicit Popup menu as this buffer doesn't have a menubar." | 1890 | "Explicit Popup menu as this buffer doesn't have a menubar." |
| 1896 | (interactive "@e") | 1891 | (interactive "@e") |
| @@ -1971,58 +1966,37 @@ buffer." | |||
| 1971 | (gdb-display-buffer | 1966 | (gdb-display-buffer |
| 1972 | (gdb-get-create-instance-buffer 'gdba))) | 1967 | (gdb-get-create-instance-buffer 'gdba))) |
| 1973 | 1968 | ||
| 1974 | (defun gdb-make-windows-menu (map) | 1969 | ;; FIXME: changing GUD's behavior: bad bad bad!!! |
| 1975 | ;; FIXME: This adds to the DBX, PerlDB, ... menu as well :-( | ||
| 1976 | ;; Probably we should create gdb-many-windows-map and put those menus | ||
| 1977 | ;; on that map. | ||
| 1978 | (define-key map [menu-bar displays] | ||
| 1979 | (cons "GDB-Windows" (make-sparse-keymap "GDB-Windows"))) | ||
| 1980 | (define-key map [menu-bar displays gdb] | ||
| 1981 | '("Gdb" . gdb-display-gdb-buffer)) | ||
| 1982 | (define-key map [menu-bar displays locals] | ||
| 1983 | '("Locals" . gdb-display-locals-buffer)) | ||
| 1984 | (define-key map [menu-bar displays registers] | ||
| 1985 | '("Registers" . gdb-display-registers-buffer)) | ||
| 1986 | (define-key map [menu-bar displays frames] | ||
| 1987 | '("Stack" . gdb-display-stack-buffer)) | ||
| 1988 | (define-key map [menu-bar displays breakpoints] | ||
| 1989 | '("Breakpoints" . gdb-display-breakpoints-buffer)) | ||
| 1990 | (define-key map [menu-bar displays display] | ||
| 1991 | '("Display" . gdb-display-display-buffer)) | ||
| 1992 | (define-key map [menu-bar displays assembler] | ||
| 1993 | '("Assembler" . gdb-display-assembler-buffer))) | ||
| 1994 | |||
| 1995 | (define-key gud-minor-mode-map "\C-c\M-\C-r" 'gdb-display-registers-buffer) | 1970 | (define-key gud-minor-mode-map "\C-c\M-\C-r" 'gdb-display-registers-buffer) |
| 1996 | (define-key gud-minor-mode-map "\C-c\M-\C-f" 'gdb-display-stack-buffer) | 1971 | (define-key gud-minor-mode-map "\C-c\M-\C-f" 'gdb-display-stack-buffer) |
| 1997 | (define-key gud-minor-mode-map "\C-c\M-\C-b" 'gdb-display-breakpoints-buffer) | 1972 | (define-key gud-minor-mode-map "\C-c\M-\C-b" 'gdb-display-breakpoints-buffer) |
| 1998 | 1973 | ||
| 1999 | (gdb-make-windows-menu gud-minor-mode-map) | 1974 | (let ((menu (make-sparse-keymap "GDB-Windows"))) |
| 1975 | (define-key gud-minor-mode-map [menu-bar debug displays] | ||
| 1976 | `(menu-item "GDB-Windows" ,menu :visible (memq gud-minor-mode '(gdba)))) | ||
| 1977 | (define-key menu [gdb] '("Gdb" . gdb-display-gdb-buffer)) | ||
| 1978 | (define-key menu [locals] '("Locals" . gdb-display-locals-buffer)) | ||
| 1979 | (define-key menu [registers] '("Registers" . gdb-display-registers-buffer)) | ||
| 1980 | (define-key menu [frames] '("Stack" . gdb-display-stack-buffer)) | ||
| 1981 | (define-key menu [breakpoints] '("Breakpoints" . gdb-display-breakpoints-buffer)) | ||
| 1982 | (define-key menu [display] '("Display" . gdb-display-display-buffer)) | ||
| 1983 | (define-key menu [assembler] '("Assembler" . gdb-display-assembler-buffer))) | ||
| 2000 | 1984 | ||
| 2001 | (defun gdb-frame-gdb-buffer () | 1985 | (defun gdb-frame-gdb-buffer () |
| 2002 | (interactive) | 1986 | (interactive) |
| 2003 | (switch-to-buffer-other-frame | 1987 | (switch-to-buffer-other-frame |
| 2004 | (gdb-get-create-instance-buffer 'gdba))) | 1988 | (gdb-get-create-instance-buffer 'gdba))) |
| 2005 | 1989 | ||
| 2006 | (defun gdb-make-frames-menu (map) | 1990 | (let ((menu (make-sparse-keymap "GDB-Frames"))) |
| 2007 | (define-key map [menu-bar frames] | 1991 | (define-key gud-minor-mode-map [menu-bar debug frames] |
| 2008 | (cons "GDB-Frames" (make-sparse-keymap "GDB-Frames"))) | 1992 | `(menu-item "GDB-Frames" ,menu :visible (memq gud-minor-mode '(gdba)))) |
| 2009 | (define-key map [menu-bar frames gdb] | 1993 | (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer)) |
| 2010 | '("Gdb" . gdb-frame-gdb-buffer)) | 1994 | (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer)) |
| 2011 | (define-key map [menu-bar frames locals] | 1995 | (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer)) |
| 2012 | '("Locals" . gdb-frame-locals-buffer)) | 1996 | (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer)) |
| 2013 | (define-key map [menu-bar frames registers] | 1997 | (define-key menu [breakpoints] '("Breakpoints" . gdb-frame-breakpoints-buffer)) |
| 2014 | '("Registers" . gdb-frame-registers-buffer)) | 1998 | (define-key menu [display] '("Display" . gdb-frame-display-buffer)) |
| 2015 | (define-key map [menu-bar frames frames] | 1999 | (define-key menu [assembler] '("Assembler" . gdb-frame-assembler-buffer))) |
| 2016 | '("Stack" . gdb-frame-stack-buffer)) | ||
| 2017 | (define-key map [menu-bar frames breakpoints] | ||
| 2018 | '("Breakpoints" . gdb-frame-breakpoints-buffer)) | ||
| 2019 | (define-key map [menu-bar frames display] | ||
| 2020 | '("Display" . gdb-frame-display-buffer)) | ||
| 2021 | (define-key map [menu-bar frames assembler] | ||
| 2022 | '("Assembler" . gdb-frame-assembler-buffer))) | ||
| 2023 | |||
| 2024 | (if (display-graphic-p) | ||
| 2025 | (gdb-make-frames-menu gud-minor-mode-map)) | ||
| 2026 | 2000 | ||
| 2027 | (defvar gdb-main-file nil "Source file from which program execution begins.") | 2001 | (defvar gdb-main-file nil "Source file from which program execution begins.") |
| 2028 | 2002 | ||
| @@ -2103,11 +2077,13 @@ static char *magick[] = { | |||
| 2103 | };" | 2077 | };" |
| 2104 | "XPM file used for breakpoint icon.") | 2078 | "XPM file used for breakpoint icon.") |
| 2105 | 2079 | ||
| 2106 | (setq breakpoint-enabled-icon (find-image | 2080 | (defvar breakpoint-enabled-icon |
| 2107 | `((:type xpm :data ,breakpoint-xpm-data)))) | 2081 | (find-image `((:type xpm :data ,breakpoint-xpm-data))) |
| 2108 | (setq breakpoint-disabled-icon (find-image | 2082 | "Icon for enabled breakpoint in display margin") |
| 2109 | `((:type xpm :data ,breakpoint-xpm-data | 2083 | (defvar breakpoint-disabled-icon |
| 2110 | :conversion laplace)))) | 2084 | (find-image `((:type xpm :data ,breakpoint-xpm-data |
| 2085 | :conversion laplace))) | ||
| 2086 | "Icon for disabled breakpoint in display margin") | ||
| 2111 | 2087 | ||
| 2112 | (defun gdb-quit () | 2088 | (defun gdb-quit () |
| 2113 | "Kill the GUD and ancillary (including source) buffers. | 2089 | "Kill the GUD and ancillary (including source) buffers. |
| @@ -2237,28 +2213,28 @@ BUFFER nil or omitted means use the current buffer." | |||
| 2237 | (defun gdb-array-visualise () | 2213 | (defun gdb-array-visualise () |
| 2238 | "Visualise arrays and slices using graph program from plotutils." | 2214 | "Visualise arrays and slices using graph program from plotutils." |
| 2239 | (interactive) | 2215 | (interactive) |
| 2240 | (if (and (display-graphic-p) gdb-display-string) | 2216 | (when (and (display-graphic-p) gdb-display-string) |
| 2241 | (let ((n 0) m) | 2217 | (let ((n 0) m) |
| 2242 | (catch 'multi-dimensional | 2218 | (catch 'multi-dimensional |
| 2243 | (while (eq (aref gdb-array-start n) (aref gdb-array-stop n)) | 2219 | (while (eq (aref gdb-array-start n) (aref gdb-array-stop n)) |
| 2244 | (setq n (+ n 1))) | 2220 | (setq n (+ n 1))) |
| 2245 | (setq m (+ n 1)) | 2221 | (setq m (+ n 1)) |
| 2246 | (while (< m (length gdb-array-start)) | 2222 | (while (< m (length gdb-array-start)) |
| 2247 | (if (not (eq (aref gdb-array-start m) (aref gdb-array-stop m))) | 2223 | (if (not (eq (aref gdb-array-start m) (aref gdb-array-stop m))) |
| 2248 | (progn | 2224 | (progn |
| 2249 | (x-popup-dialog | 2225 | (x-popup-dialog |
| 2250 | t `(,(concat "Only one dimensional data can be visualised.\n" | 2226 | t `(,(concat "Only one dimensional data can be visualised.\n" |
| 2251 | "Use an array slice to reduce the number of\n" | 2227 | "Use an array slice to reduce the number of\n" |
| 2252 | "dimensions") ("OK" t))) | 2228 | "dimensions") ("OK" t))) |
| 2253 | (throw 'multi-dimensional nil)) | 2229 | (throw 'multi-dimensional nil)) |
| 2254 | (setq m (+ m 1)))) | 2230 | (setq m (+ m 1)))) |
| 2255 | (shell-command (concat "echo" gdb-display-string " | graph -a 1 " | 2231 | (shell-command (concat "echo" gdb-display-string " | graph -a 1 " |
| 2256 | (int-to-string (aref gdb-array-start n)) | 2232 | (int-to-string (aref gdb-array-start n)) |
| 2257 | " -x " | 2233 | " -x " |
| 2258 | (int-to-string (aref gdb-array-start n)) | 2234 | (int-to-string (aref gdb-array-start n)) |
| 2259 | " " | 2235 | " " |
| 2260 | (int-to-string (aref gdb-array-stop n)) | 2236 | (int-to-string (aref gdb-array-stop n)) |
| 2261 | " 1 -T X")))))) | 2237 | " 1 -T X")))))) |
| 2262 | 2238 | ||
| 2263 | (defun gdb-delete-display () | 2239 | (defun gdb-delete-display () |
| 2264 | "Delete displayed expression and its frame." | 2240 | "Delete displayed expression and its frame." |
| @@ -2338,9 +2314,10 @@ BUFFER nil or omitted means use the current buffer." | |||
| 2338 | 'gdb-assembler-buffer-name | 2314 | 'gdb-assembler-buffer-name |
| 2339 | 'gdb-assembler-mode) | 2315 | 'gdb-assembler-mode) |
| 2340 | 2316 | ||
| 2341 | (defvar gdb-assembler-mode-map nil) | 2317 | (defvar gdb-assembler-mode-map |
| 2342 | (setq gdb-assembler-mode-map (make-keymap)) | 2318 | (let ((map (make-sparse-keymap))) |
| 2343 | (suppress-keymap gdb-assembler-mode-map) | 2319 | (suppress-keymap map) |
| 2320 | map)) | ||
| 2344 | 2321 | ||
| 2345 | (defun gdb-assembler-mode () | 2322 | (defun gdb-assembler-mode () |
| 2346 | "Major mode for viewing code assembler. | 2323 | "Major mode for viewing code assembler. |
| @@ -2408,13 +2385,6 @@ BUFFER nil or omitted means use the current buffer." | |||
| 2408 | (gdb-instance-pending-triggers))) | 2385 | (gdb-instance-pending-triggers))) |
| 2409 | (setq gdb-prev-main-or-pc gdb-main-or-pc)))) | 2386 | (setq gdb-prev-main-or-pc gdb-main-or-pc)))) |
| 2410 | 2387 | ||
| 2411 | (defun gdb-delete-line () | ||
| 2412 | "Delete the current line." | ||
| 2413 | (interactive) | ||
| 2414 | (let ((start (progn (beginning-of-line) (point))) | ||
| 2415 | (end (progn (end-of-line) (+ (point) 1)))) | ||
| 2416 | (delete-region start end))) | ||
| 2417 | |||
| 2418 | (provide 'gdb-ui) | 2388 | (provide 'gdb-ui) |
| 2419 | 2389 | ||
| 2420 | ;;; gdb-ui.el ends here | 2390 | ;;; gdb-ui.el ends here |