From fe4740a674c79c679006c90fe53abce2250fedcf Mon Sep 17 00:00:00 2001 From: Dmitry Dzhus Date: Sat, 8 Aug 2009 22:30:26 +0000 Subject: [PATCH] =?utf8?q?(gdb-control-all-threads)=20(gdb-control-current?= =?utf8?q?-thread):=20Interactive=20setters=20for=20`gdb-gud-control-all-t?= =?utf8?q?hreads'=20to=20use=20in=20menu.=20(gdb-show-run-p):=20Show=20?= =?utf8?q?=C2=ABGo=C2=BB=20when=20process=20is=20not=20active.=20(gud-tool?= =?utf8?q?-bar-map):=20Add=20non-stop/A,T=20indicator.=20Uses=20gud/thread?= =?utf8?q?.xpm=20and=20gud/all.xpm.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- lisp/ChangeLog | 9 +++++++++ lisp/progmodes/gdb-mi.el | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b732cbdeb7c..b6213ebcab2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index b769792f788..5a8fde8203e 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -519,6 +519,19 @@ the list) is deleted every time a new one is added (at the front)." (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 @@ is running." (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 @@ SPLIT-HORIZONTAL and show BUF in the new window." (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) -- 2.39.5