aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/progmodes/gdb-ui.el82
1 files changed, 52 insertions, 30 deletions
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 697a85cced1..48142816fec 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -253,28 +253,16 @@ The following commands help control operation :
253See Info node `(emacs)GDB Graphical Interface' for a more 253See Info node `(emacs)GDB Graphical Interface' for a more
254detailed description of this mode. 254detailed description of this mode.
255 255
256
257+----------------------------------------------------------------------+ 256+----------------------------------------------------------------------+
258| GDB Toolbar | 257| GDB Toolbar |
259+-----------------------------------+----------------------------------+ 258+-----------------------------------+----------------------------------+
260| GUD buffer (I/O of GDB) | Locals buffer | 259| GUD buffer (I/O of GDB) | Locals buffer |
261| | | 260|-----------------------------------+----------------------------------+
262| | |
263| | |
264+-----------------------------------+----------------------------------+
265| Source buffer | I/O buffer (of debugged program) |
266| | (comint-mode) |
267| | |
268| | |
269| | |
270| | | 261| | |
262| Source buffer | I/O buffer for debugged program |
271| | | 263| | |
272| | | 264|-----------------------------------+----------------------------------+
273+-----------------------------------+----------------------------------+ 265| Stack buffer | Breakpoints/threads buffer |
274| Stack buffer | Breakpoints buffer |
275| RET gdb-frames-select | SPC gdb-toggle-breakpoint |
276| | RET gdb-goto-breakpoint |
277| | D gdb-delete-breakpoint |
278+-----------------------------------+----------------------------------+ 266+-----------------------------------+----------------------------------+
279 267
280To run GDB in text command mode, replace the GDB \"--annotate=3\" 268To run GDB in text command mode, replace the GDB \"--annotate=3\"
@@ -334,6 +322,7 @@ session."
334 (setq gdb-flush-pending-output nil) 322 (setq gdb-flush-pending-output nil)
335 (setq gdb-early-user-input nil) 323 (setq gdb-early-user-input nil)
336 (setq gud-filter-pending-text nil) 324 (setq gud-filter-pending-text nil)
325 (gdb-thread-identification)
337 (run-hooks 'gdb-mode-hook)) 326 (run-hooks 'gdb-mode-hook))
338 327
339;; Keep as an alias for compatibility with Emacs 22.1. 328;; Keep as an alias for compatibility with Emacs 22.1.
@@ -2015,9 +2004,9 @@ If not in a source or disassembly buffer just set point."
2015 (interactive "e") 2004 (interactive "e")
2016 (mouse-minibuffer-check event) 2005 (mouse-minibuffer-check event)
2017 (let ((posn (event-end event))) 2006 (let ((posn (event-end event)))
2018 (if (or (buffer-file-name) (eq major-mode 'gdb-assembler-mode)) 2007 (with-selected-window (posn-window posn)
2019 (if (numberp (posn-point posn)) 2008 (if (or (buffer-file-name) (eq major-mode 'gdb-assembler-mode))
2020 (with-selected-window (posn-window posn) 2009 (if (numberp (posn-point posn))
2021 (save-excursion 2010 (save-excursion
2022 (goto-char (posn-point posn)) 2011 (goto-char (posn-point posn))
2023 (if (or (posn-object posn) 2012 (if (or (posn-object posn)
@@ -2118,6 +2107,47 @@ If not in a source or disassembly buffer just set point."
2118 (if (one-window-p) (delete-frame) 2107 (if (one-window-p) (delete-frame)
2119 (delete-window))) 2108 (delete-window)))
2120 2109
2110;;from make-mode-line-mouse-map
2111(defun gdb-make-header-line-mouse-map (mouse function) "\
2112Return a keymap with single entry for mouse key MOUSE on the header line.
2113MOUSE is defined to run function FUNCTION with no args in the buffer
2114corresponding to the mode line clicked."
2115 (let ((map (make-sparse-keymap)))
2116 (define-key map (vector 'header-line mouse) function)
2117 (define-key map (vector 'header-line 'down-mouse-1) 'ignore)
2118 map))
2119
2120(defvar gdb-breakpoints-header
2121 `(,(propertize "Breakpoints"
2122 'help-echo "mouse-1: select"
2123 'mouse-face 'mode-line-highlight
2124 'face 'mode-line
2125 'local-map
2126 (gdb-make-header-line-mouse-map
2127 'mouse-1
2128 (lambda (event) (interactive "e")
2129 (save-selected-window
2130 (select-window (posn-window (event-start event)))
2131 (set-window-dedicated-p (selected-window) nil)
2132 (switch-to-buffer
2133 (gdb-get-buffer-create 'gdb-breakpoints-buffer))
2134 (set-window-dedicated-p (selected-window) t)))))
2135 " "
2136 ,(propertize "Threads"
2137 'help-echo "mouse-1: select"
2138 'mouse-face 'mode-line-highlight
2139 'face 'mode-line
2140 'local-map
2141 (gdb-make-header-line-mouse-map
2142 'mouse-1
2143 (lambda (event) (interactive "e")
2144 (save-selected-window
2145 (select-window (posn-window (event-start event)))
2146 (set-window-dedicated-p (selected-window) nil)
2147 (switch-to-buffer
2148 (gdb-get-buffer-create 'gdb-threads-buffer))
2149 (set-window-dedicated-p (selected-window) t)))))))
2150
2121(defun gdb-breakpoints-mode () 2151(defun gdb-breakpoints-mode ()
2122 "Major mode for gdb breakpoints. 2152 "Major mode for gdb breakpoints.
2123 2153
@@ -2127,6 +2157,7 @@ If not in a source or disassembly buffer just set point."
2127 (setq mode-name "Breakpoints") 2157 (setq mode-name "Breakpoints")
2128 (use-local-map gdb-breakpoints-mode-map) 2158 (use-local-map gdb-breakpoints-mode-map)
2129 (setq buffer-read-only t) 2159 (setq buffer-read-only t)
2160 (setq header-line-format gdb-breakpoints-header)
2130 (run-mode-hooks 'gdb-breakpoints-mode-hook) 2161 (run-mode-hooks 'gdb-breakpoints-mode-hook)
2131 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba) 2162 (if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
2132 'gdb-invalidate-breakpoints 2163 'gdb-invalidate-breakpoints
@@ -2436,6 +2467,7 @@ another GDB command e.g pwd, to see new frames")
2436 (setq major-mode 'gdb-threads-mode) 2467 (setq major-mode 'gdb-threads-mode)
2437 (setq mode-name "Threads") 2468 (setq mode-name "Threads")
2438 (setq buffer-read-only t) 2469 (setq buffer-read-only t)
2470 (setq header-line-format gdb-breakpoints-header)
2439 (use-local-map gdb-threads-mode-map) 2471 (use-local-map gdb-threads-mode-map)
2440 (set (make-local-variable 'font-lock-defaults) 2472 (set (make-local-variable 'font-lock-defaults)
2441 '(gdb-threads-font-lock-keywords)) 2473 '(gdb-threads-font-lock-keywords))
@@ -2768,16 +2800,6 @@ another GDB command e.g pwd, to see new frames")
2768 (vector (car selection)))))) 2800 (vector (car selection))))))
2769 (if binding (call-interactively binding))))) 2801 (if binding (call-interactively binding)))))
2770 2802
2771;;from make-mode-line-mouse-map
2772(defun gdb-make-header-line-mouse-map (mouse function) "\
2773Return a keymap with single entry for mouse key MOUSE on the header line.
2774MOUSE is defined to run function FUNCTION with no args in the buffer
2775corresponding to the mode line clicked."
2776 (let ((map (make-sparse-keymap)))
2777 (define-key map (vector 'header-line mouse) function)
2778 (define-key map (vector 'header-line 'down-mouse-1) 'ignore)
2779 map))
2780
2781(defvar gdb-memory-font-lock-keywords 2803(defvar gdb-memory-font-lock-keywords
2782 '(;; <__function.name+n> 2804 '(;; <__function.name+n>
2783 ("<\\(\\(\\sw\\|[_.]\\)+\\)\\(\\+[0-9]+\\)?>" (1 font-lock-function-name-face)) 2805 ("<\\(\\(\\sw\\|[_.]\\)+\\)\\(\\+[0-9]+\\)?>" (1 font-lock-function-name-face))