diff options
| author | Nick Roberts | 2008-04-19 22:49:32 +0000 |
|---|---|---|
| committer | Nick Roberts | 2008-04-19 22:49:32 +0000 |
| commit | b06e477e59401e1169faafd06088db017cd614bc (patch) | |
| tree | 746d86f6f850bb30c68b20b34759ce4007c364b8 | |
| parent | 3a43ea21f7153c7bb941f33e89dd3cd26346be54 (diff) | |
| download | emacs-b06e477e59401e1169faafd06088db017cd614bc.tar.gz emacs-b06e477e59401e1169faafd06088db017cd614bc.zip | |
(gdb-mouse-set-clear-breakpoint): Select
window clicked on first (regression in 22.2).
(gdb): Display thread number in mode-line.
(gdb-make-header-line-mouse-map): Move to avoid byte compiler warnings.
(gdb-breakpoints-header): New variable.
(gdb-breakpoints-mode, gdb-threads-mode): Use it for header line.
| -rw-r--r-- | lisp/progmodes/gdb-ui.el | 82 |
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 : | |||
| 253 | See Info node `(emacs)GDB Graphical Interface' for a more | 253 | See Info node `(emacs)GDB Graphical Interface' for a more |
| 254 | detailed description of this mode. | 254 | detailed 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 | ||
| 280 | To run GDB in text command mode, replace the GDB \"--annotate=3\" | 268 | To 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) "\ | ||
| 2112 | Return a keymap with single entry for mouse key MOUSE on the header line. | ||
| 2113 | MOUSE is defined to run function FUNCTION with no args in the buffer | ||
| 2114 | corresponding 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) "\ | ||
| 2773 | Return a keymap with single entry for mouse key MOUSE on the header line. | ||
| 2774 | MOUSE is defined to run function FUNCTION with no args in the buffer | ||
| 2775 | corresponding 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)) |