diff options
| author | Nick Roberts | 2005-05-03 06:48:47 +0000 |
|---|---|---|
| committer | Nick Roberts | 2005-05-03 06:48:47 +0000 |
| commit | 5c66660f61ad9caccc7787eac5f8559c22ebf893 (patch) | |
| tree | 8a68e275359ec2d2ff7a8694525af22e46e96911 /lisp | |
| parent | 0d2794e36229828136ae5166563a36effb87dd82 (diff) | |
| download | emacs-5c66660f61ad9caccc7787eac5f8559c22ebf893.tar.gz emacs-5c66660f61ad9caccc7787eac5f8559c22ebf893.zip | |
(gdb-cpp-define-alist-program)
(gdb-define-alist): New variables.
(gdb-create-define-alist): New function.
(gdb-set-gud-minor-mode-1): Handle gdb-define-alist.
(gdb-source, gdb-memory-set-repeat-count): Replace string-to-int
with string-to-number.
(gdb-reset): Kill gdb-define-alist. Move assignments outside loop.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/progmodes/gdb-ui.el | 63 |
1 files changed, 48 insertions, 15 deletions
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el index b378adf0c07..cf3e18c936d 100644 --- a/lisp/progmodes/gdb-ui.el +++ b/lisp/progmodes/gdb-ui.el | |||
| @@ -196,6 +196,33 @@ detailed description of this mode. | |||
| 196 | :group 'gud | 196 | :group 'gud |
| 197 | :version "22.1") | 197 | :version "22.1") |
| 198 | 198 | ||
| 199 | (defcustom gdb-cpp-define-alist-program "gcc -E -dM -" | ||
| 200 | "The program name for generating an alist of #define directives. | ||
| 201 | This list is used to display the #define directive associated | ||
| 202 | with an identifier as a tooltip. It works in a debug session with | ||
| 203 | GDB, when tooltip-gud-tips-p is t." | ||
| 204 | :type 'string | ||
| 205 | :group 'gud | ||
| 206 | :version "22.1") | ||
| 207 | |||
| 208 | (defvar gdb-define-alist nil "Alist of #define directives for GUD tooltips.") | ||
| 209 | |||
| 210 | (defun gdb-create-define-alist () | ||
| 211 | (let* ((file (buffer-file-name)) | ||
| 212 | (output | ||
| 213 | (with-output-to-string | ||
| 214 | (with-current-buffer standard-output | ||
| 215 | (call-process shell-file-name | ||
| 216 | (if (file-exists-p file) file nil) | ||
| 217 | (list t nil) nil "-c" | ||
| 218 | gdb-cpp-define-alist-program)))) | ||
| 219 | (define-list (split-string output "\n" t)) | ||
| 220 | (name)) | ||
| 221 | (setq gdb-define-alist nil) | ||
| 222 | (dolist (define define-list) | ||
| 223 | (setq name (nth 1 (split-string define "[( ]"))) | ||
| 224 | (push (cons name define) gdb-define-alist)))) | ||
| 225 | |||
| 199 | (defun gdb-set-gud-minor-mode (buffer) | 226 | (defun gdb-set-gud-minor-mode (buffer) |
| 200 | "Set gud-minor-mode from find-file if appropriate." | 227 | "Set gud-minor-mode from find-file if appropriate." |
| 201 | (goto-char (point-min)) | 228 | (goto-char (point-min)) |
| @@ -208,13 +235,16 @@ detailed description of this mode. | |||
| 208 | 235 | ||
| 209 | (defun gdb-set-gud-minor-mode-1 (buffer) | 236 | (defun gdb-set-gud-minor-mode-1 (buffer) |
| 210 | (goto-char (point-min)) | 237 | (goto-char (point-min)) |
| 211 | (if (and (search-forward "Located in " nil t) | 238 | (when (and (search-forward "Located in " nil t) |
| 212 | (looking-at "\\S-*") | 239 | (looking-at "\\S-*") |
| 213 | (string-equal (buffer-file-name buffer) | 240 | (string-equal (buffer-file-name buffer) |
| 214 | (match-string 0))) | 241 | (match-string 0))) |
| 215 | (with-current-buffer buffer | 242 | (with-current-buffer buffer |
| 216 | (set (make-local-variable 'gud-minor-mode) 'gdba) | 243 | (set (make-local-variable 'gud-minor-mode) 'gdba) |
| 217 | (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)))) | 244 | (set (make-local-variable 'tool-bar-map) gud-tool-bar-map) |
| 245 | (make-local-variable 'gdb-define-alist) | ||
| 246 | (gdb-create-define-alist) | ||
| 247 | (add-hook 'after-save-hook 'gdb-create-define-alist nil t)))) | ||
| 218 | 248 | ||
| 219 | (defun gdb-set-gud-minor-mode-existing-buffers () | 249 | (defun gdb-set-gud-minor-mode-existing-buffers () |
| 220 | (dolist (buffer (buffer-list)) | 250 | (dolist (buffer (buffer-list)) |
| @@ -805,7 +835,7 @@ This filter may simply queue input for a later time." | |||
| 805 | (setq gud-last-frame | 835 | (setq gud-last-frame |
| 806 | (cons | 836 | (cons |
| 807 | (match-string 1 args) | 837 | (match-string 1 args) |
| 808 | (string-to-int (match-string 2 args)))) | 838 | (string-to-number (match-string 2 args)))) |
| 809 | (setq gdb-current-address (match-string 3 args)) | 839 | (setq gdb-current-address (match-string 3 args)) |
| 810 | ;; cover for auto-display output which comes *before* | 840 | ;; cover for auto-display output which comes *before* |
| 811 | ;; stopped annotation | 841 | ;; stopped annotation |
| @@ -889,7 +919,6 @@ directives." | |||
| 889 | (setq gdb-active-process nil) | 919 | (setq gdb-active-process nil) |
| 890 | (gdb-stopping ignored)) | 920 | (gdb-stopping ignored)) |
| 891 | 921 | ||
| 892 | |||
| 893 | (defun gdb-frame-begin (ignored) | 922 | (defun gdb-frame-begin (ignored) |
| 894 | (let ((sink gdb-output-sink)) | 923 | (let ((sink gdb-output-sink)) |
| 895 | (cond | 924 | (cond |
| @@ -1690,7 +1719,7 @@ static char *magick[] = { | |||
| 1690 | (save-selected-window | 1719 | (save-selected-window |
| 1691 | (select-window (posn-window (event-start event))) | 1720 | (select-window (posn-window (event-start event))) |
| 1692 | (let* ((arg (read-from-minibuffer "Repeat count: ")) | 1721 | (let* ((arg (read-from-minibuffer "Repeat count: ")) |
| 1693 | (count (string-to-int arg))) | 1722 | (count (string-to-number arg))) |
| 1694 | (if (< count 0) | 1723 | (if (< count 0) |
| 1695 | (error "Non-negative numbers only") | 1724 | (error "Non-negative numbers only") |
| 1696 | (customize-set-variable 'gdb-memory-repeat-count count) | 1725 | (customize-set-variable 'gdb-memory-repeat-count count) |
| @@ -1998,7 +2027,8 @@ corresponding to the mode line clicked." | |||
| 1998 | 2027 | ||
| 1999 | (let ((menu (make-sparse-keymap "GDB-Windows"))) | 2028 | (let ((menu (make-sparse-keymap "GDB-Windows"))) |
| 2000 | (define-key gud-menu-map [displays] | 2029 | (define-key gud-menu-map [displays] |
| 2001 | `(menu-item "GDB-Windows" ,menu :visible (eq gud-minor-mode 'gdba))) | 2030 | `(menu-item "GDB-Windows" ,menu |
| 2031 | :visible (memq gud-minor-mode '(gdbmi gdba)))) | ||
| 2002 | (define-key menu [gdb] '("Gdb" . gdb-display-gdb-buffer)) | 2032 | (define-key menu [gdb] '("Gdb" . gdb-display-gdb-buffer)) |
| 2003 | (define-key menu [threads] '("Threads" . gdb-display-threads-buffer)) | 2033 | (define-key menu [threads] '("Threads" . gdb-display-threads-buffer)) |
| 2004 | (define-key menu [memory] '("Memory" . gdb-display-memory-buffer)) | 2034 | (define-key menu [memory] '("Memory" . gdb-display-memory-buffer)) |
| @@ -2014,7 +2044,8 @@ corresponding to the mode line clicked." | |||
| 2014 | 2044 | ||
| 2015 | (let ((menu (make-sparse-keymap "GDB-Frames"))) | 2045 | (let ((menu (make-sparse-keymap "GDB-Frames"))) |
| 2016 | (define-key gud-menu-map [frames] | 2046 | (define-key gud-menu-map [frames] |
| 2017 | `(menu-item "GDB-Frames" ,menu :visible (eq gud-minor-mode 'gdba))) | 2047 | `(menu-item "GDB-Frames" ,menu |
| 2048 | :visible (memq gud-minor-mode '(gdbmi gdba)))) | ||
| 2018 | (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer)) | 2049 | (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer)) |
| 2019 | (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer)) | 2050 | (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer)) |
| 2020 | (define-key menu [memory] '("Memory" . gdb-frame-memory-buffer)) | 2051 | (define-key menu [memory] '("Memory" . gdb-frame-memory-buffer)) |
| @@ -2153,13 +2184,15 @@ Kills the gdb buffers and resets the source buffers." | |||
| 2153 | (gdb-remove-breakpoint-icons (point-min) (point-max) t) | 2184 | (gdb-remove-breakpoint-icons (point-min) (point-max) t) |
| 2154 | (setq gud-minor-mode nil) | 2185 | (setq gud-minor-mode nil) |
| 2155 | (kill-local-variable 'tool-bar-map) | 2186 | (kill-local-variable 'tool-bar-map) |
| 2156 | (setq gud-running nil) | 2187 | (kill-local-variable 'gdb-define-alist)))))) |
| 2157 | (setq gdb-active-process nil)))))) | ||
| 2158 | (when (markerp gdb-overlay-arrow-position) | 2188 | (when (markerp gdb-overlay-arrow-position) |
| 2159 | (move-marker gdb-overlay-arrow-position nil) | 2189 | (move-marker gdb-overlay-arrow-position nil) |
| 2160 | (setq gdb-overlay-arrow-position nil)) | 2190 | (setq gdb-overlay-arrow-position nil)) |
| 2161 | (setq overlay-arrow-variable-list | 2191 | (setq overlay-arrow-variable-list |
| 2162 | (delq 'gdb-overlay-arrow-position overlay-arrow-variable-list))) | 2192 | (delq 'gdb-overlay-arrow-position overlay-arrow-variable-list)) |
| 2193 | (setq gud-running nil) | ||
| 2194 | (setq gdb-active-process nil) | ||
| 2195 | (remove-hook 'after-save-hook 'gdb-create-define-alist t)) | ||
| 2163 | 2196 | ||
| 2164 | (defun gdb-source-info () | 2197 | (defun gdb-source-info () |
| 2165 | "Find the source file where the program starts and displays it with related | 2198 | "Find the source file where the program starts and displays it with related |