Mercurial > emacs
diff lisp/progmodes/gdb-mi.el @ 104211:c911628739b9
(gdb-control-all-threads)
(gdb-control-current-thread): Interactive setters for
`gdb-gud-control-all-threads' to use in menu.
(gdb-show-run-p): Show ?Go? when process is not active.
(gud-tool-bar-map): Add non-stop/A,T indicator. Uses
gud/thread.xpm and gud/all.xpm.
author | Dmitry Dzhus <dima@sphinx.net.ru> |
---|---|
date | Sat, 08 Aug 2009 22:30:26 +0000 |
parents | a67a0dcd448d |
children | 8642d488076f |
line wrap: on
line diff
--- a/lisp/progmodes/gdb-mi.el Sat Aug 08 22:17:05 2009 +0000 +++ b/lisp/progmodes/gdb-mi.el Sat Aug 08 22:30:26 2009 +0000 @@ -519,6 +519,19 @@ (message (format "Logging of transaction %sabled" (if gdb-enable-debug "en" "dis")))) +;; These two are used for menu and toolbar +(defun gdb-control-all-threads () + "Switch to non-stop/A mode." + (interactive) + (setq gdb-gud-control-all-threads t) + (message "Now in non-stop/A mode.")) + +(defun gdb-control-current-thread () + "Switch to non-stop/T mode." + (interactive) + (setq gdb-gud-control-all-threads nil) + (message "Now in non-stop/T mode.")) + (defun gdb-find-watch-expression () (let* ((var (nth (- (line-number-at-pos (point)) 2) gdb-var-list)) (varnum (car var)) expr array) @@ -1669,7 +1682,8 @@ (defun gdb-show-run-p () "Return t if \"Run/continue\" should be shown on the toolbar." - (or (and (or + (or (not gdb-active-process) + (and (or (not gdb-gud-control-all-threads) (not gdb-non-stop)) (not gud-running)) @@ -3824,6 +3838,27 @@ (define-key gud-menu-map [mi] `(menu-item "GDB-MI" ,menu :visible (eq gud-minor-mode 'gdbmi)))) +;; TODO Fit these into tool-bar-local-item-from-menu call in gud.el. +;; GDB-MI menu will need to be moved to gud.el. We can't use +;; tool-bar-local-item-from-menu here because it appends new buttons +;; to toolbar from right to left while we want our A/T throttle to +;; show up right before Run button. +(define-key-after gud-tool-bar-map [all-threads] + '(menu-item "Switch to non-stop/A mode" gdb-control-all-threads + :image (find-image '((:type xpm :file "gud/thread.xpm"))) + :visible (and (eq gud-minor-mode 'gdbmi) + gdb-non-stop + (not gdb-gud-control-all-threads))) + 'run) + +(define-key-after gud-tool-bar-map [current-thread] + '(menu-item "Switch to non-stop/T mode" gdb-control-current-thread + :image (find-image '((:type xpm :file "gud/all.xpm"))) + :visible (and (eq gud-minor-mode 'gdbmi) + gdb-non-stop + gdb-gud-control-all-threads)) + 'all-threads) + (defun gdb-frame-gdb-buffer () "Display GUD buffer in a new frame." (interactive)