aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Dzhus2009-08-08 18:24:32 +0000
committerDmitry Dzhus2009-08-08 18:24:32 +0000
commit9cbac26bbbed088c520c2e9289e3dc8cbde32465 (patch)
tree4ea68dc07ac526d80ce5e6c37b35c3fb150a76ee
parent8d6bb99e733acf952a9e43a47e3e7ef48ca1f31c (diff)
downloademacs-9cbac26bbbed088c520c2e9289e3dc8cbde32465.tar.gz
emacs-9cbac26bbbed088c520c2e9289e3dc8cbde32465.zip
(gdb-breakpoints-mode-map): Don't assume threads buffer is present.
(gdb-threads-mode-map): Don't assume breakpoints buffer is present. (gdb-disassembly-handler-custom, gdb-stack-list-frames-custom) (gdb-locals-handler-custom, gdb-registers-handler-custom): Thread info in mode name. (gdb-registers-mode-map): TAB to switch to locals.
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/progmodes/gdb-mi.el51
2 files changed, 47 insertions, 10 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 04646b16292..aba028d6ef0 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -8,6 +8,12 @@
8 (gdb-edit-locals-value): Fixed. 8 (gdb-edit-locals-value): Fixed.
9 (gdb-registers-handler-custom): Print registers in right order and 9 (gdb-registers-handler-custom): Print registers in right order and
10 allow changing register values (only for current thread yet). 10 allow changing register values (only for current thread yet).
11 (gdb-breakpoints-mode-map): Don't assume threads buffer is present.
12 (gdb-threads-mode-map): Don't assume breakpoints buffer is present.
13 (gdb-disassembly-handler-custom, gdb-stack-list-frames-custom)
14 (gdb-locals-handler-custom, gdb-registers-handler-custom): Thread
15 info in mode name.
16 (gdb-registers-mode-map): TAB to switch to locals.
11 17
122009-08-08 Eli Zaretskii <eliz@gnu.org> 182009-08-08 Eli Zaretskii <eliz@gnu.org>
13 19
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index e36b2e29107..b769792f788 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1587,6 +1587,14 @@ If `gdb-thread-number' is nil, just wrap NAME in asterisks."
1587 (format " (bound to thread %s)" gdb-thread-number) 1587 (format " (bound to thread %s)" gdb-thread-number)
1588 "") 1588 "")
1589 "*")) 1589 "*"))
1590
1591(defun gdb-current-context-mode-name (mode)
1592 "Add thread information to MODE which is to be used as
1593`mode-name'."
1594 (concat mode
1595 (if gdb-thread-number
1596 (format " [thread %s]" gdb-thread-number)
1597 "")))
1590 1598
1591 1599
1592(defcustom gud-gdb-command-name "gdb -i=mi" 1600(defcustom gud-gdb-command-name "gdb -i=mi"
@@ -1653,9 +1661,9 @@ is running."
1653 (string= (gdb-get-field (gdb-current-buffer-thread) 'state) 1661 (string= (gdb-get-field (gdb-current-buffer-thread) 'state)
1654 "running")) 1662 "running"))
1655 ;; We change frame number only if the state of current thread has 1663 ;; We change frame number only if the state of current thread has
1656 ;; changed. 1664 ;; changed or there's no current thread.
1657 (when (not (eq gud-running old-value)) 1665 (when (not (eq gud-running old-value))
1658 (if gud-running 1666 (if (or gud-running (not (gdb-current-buffer-thread)))
1659 (setq gdb-frame-number nil) 1667 (setq gdb-frame-number nil)
1660 (setq gdb-frame-number "0"))))) 1668 (setq gdb-frame-number "0")))))
1661 1669
@@ -1832,8 +1840,11 @@ Sets `gdb-thread-number' to new id."
1832 (gdb-force-mode-line-update 1840 (gdb-force-mode-line-update
1833 (propertize gdb-inferior-status 'face font-lock-type-face)) 1841 (propertize gdb-inferior-status 'face font-lock-type-face))
1834 (setq gdb-active-process t) 1842 (setq gdb-active-process t)
1835 (when (not gdb-non-stop) 1843 (setq gud-running t)
1836 (setq gud-running t))) 1844 ;; GDB doesn't seem to respond to -thread-info before first stop or
1845 ;; thread exit (even in non-stop mode), so this is useless.
1846 ;; Behaviour may change in the future.
1847 (gdb-emit-signal gdb-buf-publisher 'update-threads))
1837 1848
1838;; -break-insert -t didn't give a reason before gdb 6.9 1849;; -break-insert -t didn't give a reason before gdb 6.9
1839 1850
@@ -2414,7 +2425,8 @@ If not in a source or disassembly buffer just set point."
2414 (define-key map "\r" 'gdb-goto-breakpoint) 2425 (define-key map "\r" 'gdb-goto-breakpoint)
2415 (define-key map "\t" '(lambda () 2426 (define-key map "\t" '(lambda ()
2416 (interactive) 2427 (interactive)
2417 (gdb-set-window-buffer (gdb-threads-buffer-name) t))) 2428 (gdb-set-window-buffer
2429 (gdb-get-buffer-create 'gdb-threads-buffer) t)))
2418 (define-key map [mouse-2] 'gdb-goto-breakpoint) 2430 (define-key map [mouse-2] 'gdb-goto-breakpoint)
2419 (define-key map [follow-link] 'mouse-face) 2431 (define-key map [follow-link] 'mouse-face)
2420 map)) 2432 map))
@@ -2500,7 +2512,8 @@ corresponding to the mode line clicked."
2500 (define-key map "s" 'gdb-step-thread) 2512 (define-key map "s" 'gdb-step-thread)
2501 (define-key map "\t" '(lambda () 2513 (define-key map "\t" '(lambda ()
2502 (interactive) 2514 (interactive)
2503 (gdb-set-window-buffer (gdb-breakpoints-buffer-name) t))) 2515 (gdb-set-window-buffer
2516 (gdb-get-buffer-create 'gdb-breakpoints-buffer) t)))
2504 (define-key map [mouse-2] 'gdb-select-thread) 2517 (define-key map [mouse-2] 'gdb-select-thread)
2505 (define-key map [follow-link] 'mouse-face) 2518 (define-key map [follow-link] 'mouse-face)
2506 map)) 2519 map))
@@ -3183,8 +3196,9 @@ DOC is an optional documentation string."
3183 (let ((window (get-buffer-window (current-buffer) 0))) 3196 (let ((window (get-buffer-window (current-buffer) 0)))
3184 (set-window-point window (gdb-mark-line marked-line gdb-disassembly-position)))) 3197 (set-window-point window (gdb-mark-line marked-line gdb-disassembly-position))))
3185 (setq mode-name 3198 (setq mode-name
3199 (gdb-current-context-mode-name
3186 (concat "Disassembly: " 3200 (concat "Disassembly: "
3187 (gdb-get-field (gdb-current-buffer-frame) 'func))))) 3201 (gdb-get-field (gdb-current-buffer-frame) 'func))))))
3188 3202
3189(defun gdb-disassembly-place-breakpoints () 3203(defun gdb-disassembly-place-breakpoints ()
3190 (gdb-remove-breakpoint-icons (point-min) (point-max)) 3204 (gdb-remove-breakpoint-icons (point-min) (point-max))
@@ -3315,7 +3329,9 @@ member."
3315 (when (and gdb-frame-number 3329 (when (and gdb-frame-number
3316 (gdb-buffer-shows-main-thread-p)) 3330 (gdb-buffer-shows-main-thread-p))
3317 (gdb-mark-line (1+ (string-to-number gdb-frame-number)) 3331 (gdb-mark-line (1+ (string-to-number gdb-frame-number))
3318 gdb-stack-position))) 3332 gdb-stack-position))
3333 (setq mode-name
3334 (gdb-current-context-mode-name "Frames")))
3319 3335
3320(defun gdb-stack-buffer-name () 3336(defun gdb-stack-buffer-name ()
3321 (gdb-current-context-buffer-name 3337 (gdb-current-context-buffer-name
@@ -3447,7 +3463,8 @@ member."
3447 `(gdb-local-variable ,local)))) 3463 `(gdb-local-variable ,local))))
3448 (insert (gdb-table-string table " ")) 3464 (insert (gdb-table-string table " "))
3449 (setq mode-name 3465 (setq mode-name
3450 (concat "Locals: " (gdb-get-field (gdb-current-buffer-frame) 'func))))) 3466 (gdb-current-context-mode-name
3467 (concat "Locals: " (gdb-get-field (gdb-current-buffer-frame) 'func))))))
3451 3468
3452(defvar gdb-locals-header 3469(defvar gdb-locals-header
3453 (list 3470 (list
@@ -3461,6 +3478,12 @@ member."
3461 (let ((map (make-sparse-keymap))) 3478 (let ((map (make-sparse-keymap)))
3462 (suppress-keymap map) 3479 (suppress-keymap map)
3463 (define-key map "q" 'kill-this-buffer) 3480 (define-key map "q" 'kill-this-buffer)
3481 (define-key map "\t" '(lambda ()
3482 (interactive)
3483 (gdb-set-window-buffer
3484 (gdb-get-buffer-create
3485 'gdb-registers-buffer
3486 gdb-thread-number) t)))
3464 map)) 3487 map))
3465 3488
3466(define-derived-mode gdb-locals-mode gdb-parent-mode "Locals" 3489(define-derived-mode gdb-locals-mode gdb-parent-mode "Locals"
@@ -3523,7 +3546,9 @@ member."
3523 `(mouse-face highlight 3546 `(mouse-face highlight
3524 help-echo "mouse-2: edit value" 3547 help-echo "mouse-2: edit value"
3525 gdb-register-name ,register-name)))) 3548 gdb-register-name ,register-name))))
3526 (insert (gdb-table-string table " ")))) 3549 (insert (gdb-table-string table " "))
3550 (setq mode-name
3551 (gdb-current-context-mode-name "Registers"))))
3527 3552
3528(defun gdb-edit-register-value (&optional event) 3553(defun gdb-edit-register-value (&optional event)
3529 "Assign a value to a register displayed in the registers buffer." 3554 "Assign a value to a register displayed in the registers buffer."
@@ -3543,6 +3568,12 @@ member."
3543 (define-key map "\r" 'gdb-edit-register-value) 3568 (define-key map "\r" 'gdb-edit-register-value)
3544 (define-key map [mouse-2] 'gdb-edit-register-value) 3569 (define-key map [mouse-2] 'gdb-edit-register-value)
3545 (define-key map "q" 'kill-this-buffer) 3570 (define-key map "q" 'kill-this-buffer)
3571 (define-key map "\t" '(lambda ()
3572 (interactive)
3573 (gdb-set-window-buffer
3574 (gdb-get-buffer-create
3575 'gdb-locals-buffer
3576 gdb-thread-number) t)))
3546 map)) 3577 map))
3547 3578
3548(defvar gdb-registers-header 3579(defvar gdb-registers-header