+2009-08-08 Dmitry Dzhus <dima@sphinx.net.ru>
+
+ * 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 <yoni@rabkins.net>
* net/net-utils.el (net-utils-font-lock-keywords): New var.
(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)
(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))
(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)