diff options
| author | Nick Roberts | 2009-07-08 00:41:00 +0000 |
|---|---|---|
| committer | Nick Roberts | 2009-07-08 00:41:00 +0000 |
| commit | ca8eb1bd47553609d2e24347eb54dfe2d9f4c871 (patch) | |
| tree | b2fb9eb6f751e95105fd8572928744bdf45ab6ad | |
| parent | ff0c419486c3ff79b153e26b3608926541e354b8 (diff) | |
| download | emacs-ca8eb1bd47553609d2e24347eb54dfe2d9f4c871.tar.gz emacs-ca8eb1bd47553609d2e24347eb54dfe2d9f4c871.zip | |
(gdb-init-1): Move sending
-data-list-register-names to ...
(gdb-starting): ... here because GDB 7.0 requires execution to
have started when using this MI command.
(gdb-set-header): New function to distinguish select and
unselected tabs in gdb buffers.
(gdb-propertize-header): New macro that uses gdb-set-header.
(gdb-breakpoints-header, gdb-locals-header): Use it.
| -rw-r--r-- | lisp/progmodes/gdb-mi.el | 124 |
1 files changed, 63 insertions, 61 deletions
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index d9abe26ceea..73fc2de9aaf 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el | |||
| @@ -501,8 +501,6 @@ detailed description of this mode. | |||
| 501 | ; Needs GDB 6.0 onwards. | 501 | ; Needs GDB 6.0 onwards. |
| 502 | (list "-file-list-exec-source-file" 'gdb-get-source-file))) | 502 | (list "-file-list-exec-source-file" 'gdb-get-source-file))) |
| 503 | (gdb-input | 503 | (gdb-input |
| 504 | (list "-data-list-register-names" 'gdb-get-register-names)) | ||
| 505 | (gdb-input | ||
| 506 | (list "-gdb-show prompt" 'gdb-get-prompt))) | 504 | (list "-gdb-show prompt" 'gdb-get-prompt))) |
| 507 | 505 | ||
| 508 | (defvar gdb-define-alist nil "Alist of #define directives for GUD tooltips.") | 506 | (defvar gdb-define-alist nil "Alist of #define directives for GUD tooltips.") |
| @@ -1327,6 +1325,8 @@ static char *magick[] = { | |||
| 1327 | 1325 | ||
| 1328 | (defun gdb-starting (output-field) | 1326 | (defun gdb-starting (output-field) |
| 1329 | ;; CLI commands don't emit ^running at the moment so use gdb-running too. | 1327 | ;; CLI commands don't emit ^running at the moment so use gdb-running too. |
| 1328 | (gdb-input | ||
| 1329 | (list "-data-list-register-names" 'gdb-get-register-names)) | ||
| 1330 | (setq gdb-inferior-status "running") | 1330 | (setq gdb-inferior-status "running") |
| 1331 | (gdb-force-mode-line-update | 1331 | (gdb-force-mode-line-update |
| 1332 | (propertize gdb-inferior-status 'face font-lock-type-face)) | 1332 | (propertize gdb-inferior-status 'face font-lock-type-face)) |
| @@ -1764,6 +1764,53 @@ corresponding to the mode line clicked." | |||
| 1764 | (define-key map (vector 'header-line 'down-mouse-1) 'ignore) | 1764 | (define-key map (vector 'header-line 'down-mouse-1) 'ignore) |
| 1765 | map)) | 1765 | map)) |
| 1766 | 1766 | ||
| 1767 | (defmacro gdb-propertize-header (name buffer help-echo mouse-face face) | ||
| 1768 | `(propertize ,name | ||
| 1769 | 'help-echo ,help-echo | ||
| 1770 | 'mouse-face ',mouse-face | ||
| 1771 | 'face ',face | ||
| 1772 | 'local-map | ||
| 1773 | (gdb-make-header-line-mouse-map | ||
| 1774 | 'mouse-1 | ||
| 1775 | (lambda (event) (interactive "e") | ||
| 1776 | (save-selected-window | ||
| 1777 | (select-window (posn-window (event-start event))) | ||
| 1778 | (set-window-dedicated-p (selected-window) nil) | ||
| 1779 | (switch-to-buffer | ||
| 1780 | (gdb-get-buffer-create ',buffer)) | ||
| 1781 | (setq header-line-format(gdb-set-header ',buffer)) | ||
| 1782 | (set-window-dedicated-p (selected-window) t)))))) | ||
| 1783 | |||
| 1784 | (defun gdb-set-header (buffer) | ||
| 1785 | (cond ((eq buffer 'gdb-locals-buffer) | ||
| 1786 | (list | ||
| 1787 | (gdb-propertize-header "Locals" gdb-locals-buffer | ||
| 1788 | nil nil mode-line) | ||
| 1789 | " " | ||
| 1790 | (gdb-propertize-header "Registers" gdb-registers-buffer | ||
| 1791 | "mouse-1: select" mode-line-highlight mode-line-inactive))) | ||
| 1792 | ((eq buffer 'gdb-registers-buffer) | ||
| 1793 | (list | ||
| 1794 | (gdb-propertize-header "Locals" gdb-locals-buffer | ||
| 1795 | "mouse-1: select" mode-line-highlight mode-line-inactive) | ||
| 1796 | " " | ||
| 1797 | (gdb-propertize-header "Registers" gdb-registers-buffer | ||
| 1798 | nil nil mode-line))) | ||
| 1799 | ((eq buffer 'gdb-breakpoints-buffer) | ||
| 1800 | (list | ||
| 1801 | (gdb-propertize-header "Breakpoints" gdb-breakpoints-buffer | ||
| 1802 | nil nil mode-line) | ||
| 1803 | " " | ||
| 1804 | (gdb-propertize-header "Threads" gdb-threads-buffer | ||
| 1805 | "mouse-1: select" mode-line-highlight mode-line-inactive))) | ||
| 1806 | ((eq buffer 'gdb-threads-buffer) | ||
| 1807 | (list | ||
| 1808 | (gdb-propertize-header "Breakpoints" gdb-breakpoints-buffer | ||
| 1809 | "mouse-1: select" mode-line-highlight mode-line-inactive) | ||
| 1810 | " " | ||
| 1811 | (gdb-propertize-header "Threads" gdb-threads-buffer | ||
| 1812 | nil nil mode-line))))) | ||
| 1813 | |||
| 1767 | 1814 | ||
| 1768 | ;; uses "-thread-info". Needs GDB 7.0 onwards. | 1815 | ;; uses "-thread-info". Needs GDB 7.0 onwards. |
| 1769 | ;;; Threads view | 1816 | ;;; Threads view |
| @@ -2309,7 +2356,10 @@ corresponding to the mode line clicked." | |||
| 2309 | 2356 | ||
| 2310 | (defvar gdb-disassembly-mode-map | 2357 | (defvar gdb-disassembly-mode-map |
| 2311 | ;; TODO | 2358 | ;; TODO |
| 2312 | (make-sparse-keymap)) | 2359 | (let ((map (make-sparse-keymap))) |
| 2360 | (suppress-keymap map) | ||
| 2361 | (define-key map "q" 'kill-this-buffer) | ||
| 2362 | map)) | ||
| 2313 | 2363 | ||
| 2314 | (defun gdb-disassembly-mode () | 2364 | (defun gdb-disassembly-mode () |
| 2315 | "Major mode for GDB disassembly information. | 2365 | "Major mode for GDB disassembly information. |
| @@ -2375,37 +2425,12 @@ corresponding to the mode line clicked." | |||
| 2375 | 2425 | ||
| 2376 | ;;; Breakpoints view | 2426 | ;;; Breakpoints view |
| 2377 | (defvar gdb-breakpoints-header | 2427 | (defvar gdb-breakpoints-header |
| 2378 | `(,(propertize "Breakpoints" | 2428 | (list |
| 2379 | 'help-echo "mouse-1: select" | 2429 | (gdb-propertize-header "Breakpoints" gdb-breakpoints-buffer |
| 2380 | 'mouse-face 'mode-line-highlight | 2430 | nil nil mode-line) |
| 2381 | 'face 'mode-line | ||
| 2382 | 'local-map | ||
| 2383 | (gdb-make-header-line-mouse-map | ||
| 2384 | 'mouse-1 | ||
| 2385 | (lambda (event) (interactive "e") | ||
| 2386 | (save-selected-window | ||
| 2387 | (select-window (posn-window (event-start event))) | ||
| 2388 | (set-window-dedicated-p (selected-window) nil) | ||
| 2389 | (switch-to-buffer | ||
| 2390 | (gdb-get-buffer-create 'gdb-breakpoints-buffer)) | ||
| 2391 | (set-window-dedicated-p (selected-window) t))))) | ||
| 2392 | " " | 2431 | " " |
| 2393 | ,(propertize "Threads" | 2432 | (gdb-propertize-header "Threads" gdb-threads-buffer |
| 2394 | 'help-echo "mouse-1: select" | 2433 | "mouse-1: select" mode-line-highlight mode-line-inactive))) |
| 2395 | 'mouse-face 'mode-line-highlight | ||
| 2396 | 'face 'mode-line | ||
| 2397 | 'local-map | ||
| 2398 | (gdb-make-header-line-mouse-map | ||
| 2399 | 'mouse-1 | ||
| 2400 | ;; TODO: same code few lines above | ||
| 2401 | (lambda (event) (interactive "e") | ||
| 2402 | (save-selected-window | ||
| 2403 | (select-window (posn-window (event-start event))) | ||
| 2404 | (set-window-dedicated-p (selected-window) nil) | ||
| 2405 | (switch-to-buffer | ||
| 2406 | (gdb-get-buffer-create 'gdb-threads-buffer)) | ||
| 2407 | (set-window-dedicated-p (selected-window) t))) | ||
| 2408 | )))) | ||
| 2409 | 2434 | ||
| 2410 | (defun gdb-breakpoints-mode () | 2435 | (defun gdb-breakpoints-mode () |
| 2411 | "Major mode for gdb breakpoints. | 2436 | "Major mode for gdb breakpoints. |
| @@ -2671,35 +2696,12 @@ member." | |||
| 2671 | (set-window-point window p))))))) | 2696 | (set-window-point window p))))))) |
| 2672 | 2697 | ||
| 2673 | (defvar gdb-locals-header | 2698 | (defvar gdb-locals-header |
| 2674 | `(,(propertize "Locals" | 2699 | (list |
| 2675 | 'help-echo "mouse-1: select" | 2700 | (gdb-propertize-header "Locals" gdb-locals-buffer |
| 2676 | 'mouse-face 'mode-line-highlight | 2701 | nil nil mode-line) |
| 2677 | 'face 'mode-line | ||
| 2678 | 'local-map | ||
| 2679 | (gdb-make-header-line-mouse-map | ||
| 2680 | 'mouse-1 | ||
| 2681 | (lambda (event) (interactive "e") | ||
| 2682 | (save-selected-window | ||
| 2683 | (select-window (posn-window (event-start event))) | ||
| 2684 | (set-window-dedicated-p (selected-window) nil) | ||
| 2685 | (switch-to-buffer | ||
| 2686 | (gdb-get-buffer-create 'gdb-locals-buffer)) | ||
| 2687 | (set-window-dedicated-p (selected-window) t))))) | ||
| 2688 | " " | 2702 | " " |
| 2689 | ,(propertize "Registers" | 2703 | (gdb-propertize-header "Registers" gdb-registers-buffer |
| 2690 | 'help-echo "mouse-1: select" | 2704 | "mouse-1: select" mode-line-highlight mode-line-inactive))) |
| 2691 | 'mouse-face 'mode-line-highlight | ||
| 2692 | 'face 'mode-line | ||
| 2693 | 'local-map | ||
| 2694 | (gdb-make-header-line-mouse-map | ||
| 2695 | 'mouse-1 | ||
| 2696 | (lambda (event) (interactive "e") | ||
| 2697 | (save-selected-window | ||
| 2698 | (select-window (posn-window (event-start event))) | ||
| 2699 | (set-window-dedicated-p (selected-window) nil) | ||
| 2700 | (switch-to-buffer | ||
| 2701 | (gdb-get-buffer-create 'gdb-registers-buffer)) | ||
| 2702 | (set-window-dedicated-p (selected-window) t))))))) | ||
| 2703 | 2705 | ||
| 2704 | (defvar gdb-locals-mode-map | 2706 | (defvar gdb-locals-mode-map |
| 2705 | (let ((map (make-sparse-keymap))) | 2707 | (let ((map (make-sparse-keymap))) |