aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Roberts2009-07-08 00:41:00 +0000
committerNick Roberts2009-07-08 00:41:00 +0000
commitca8eb1bd47553609d2e24347eb54dfe2d9f4c871 (patch)
treeb2fb9eb6f751e95105fd8572928744bdf45ab6ad
parentff0c419486c3ff79b153e26b3608926541e354b8 (diff)
downloademacs-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.el124
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)))