# HG changeset patch # User Dmitry Dzhus # Date 1249770626 0 # Node ID c911628739b9c52b0f30be858838927b1daad34d # Parent 9a7c820f16a3b46f80c5cad1748d1f349f6b5b08 (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. diff -r 9a7c820f16a3 -r c911628739b9 lisp/ChangeLog --- a/lisp/ChangeLog Sat Aug 08 22:17:05 2009 +0000 +++ b/lisp/ChangeLog Sat Aug 08 22:30:26 2009 +0000 @@ -1,3 +1,12 @@ +2009-08-08 Dmitry Dzhus + + * progmodes/gdb-mi.el (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. + 2009-08-08 Yoni Rabkin * net/net-utils.el (net-utils-font-lock-keywords): New var. diff -r 9a7c820f16a3 -r c911628739b9 lisp/progmodes/gdb-mi.el --- 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)