Commit c8a44c4e authored by Dmitry Dzhus's avatar Dmitry Dzhus
Browse files

*** empty log message ***

parent 51c4341f
2009-08-11 Dmitry Dzhus <dima@sphinx.net.ru>
* progmodes/gud.el (gud-stop-subjob): Rewritten without macros
from `gdb-mi.el' to avoid extra tangling.
* progmodes/gdb-mi.el (gdb-gud-context-call): Reverting previous
change which breaks `gud-def' definitions. used in `gdb'.
(gdb-update-gud-running): No extra fuss for updating frame number.
2009-08-10 Stefan Monnier <monnier@iro.umontreal.ca>
* international/mule-cmds.el (mule-keymap, mule-menu-keymap)
......
......@@ -134,7 +134,14 @@ value.")
(defvar gdb-frame-number nil
"Selected frame level for main current thread.
Reset whenever current thread changes.")
Updated according to the following rules:
When a thread is selected or current thread stops, set to \"0\".
When current thread goes running (and possibly exits eventually),
set to nil.
May be manually changed by user with `gdb-select-frame'.")
;; Used to show overlay arrow in source buffer. All set in
;; gdb-get-main-selected-frame. Disassembly buffer should not use
......@@ -565,12 +572,15 @@ When `gdb-non-stop' is nil, return COMMAND unchanged."
(gdb-current-context-command command t))
command))
;; TODO Document this. We use noarg when not in gud-def
(defun gdb-gud-context-call (cmd1 &optional cmd2 noall noarg)
(gud-call
(concat
(gdb-gud-context-command cmd1 noall)
cmd2) (when (not noarg) 'arg)))
(defmacro gdb-gud-context-call (cmd1 &optional cmd2 noall noarg)
"`gud-call' wrapper which adds --thread/--all options between
CMD1 and CMD2. NOALL is the same as in `gdb-gud-context-command'.
NOARG must be t when this macro is used outside `gud-def'"
`(gud-call
(concat
(gdb-gud-context-command ,cmd1 ,noall)
,cmd2) ,(when (not noarg) 'arg)))
;;;###autoload
(defun gdb (command-line)
......@@ -1655,11 +1665,9 @@ need to be updated appropriately when current thread changes."
(gdb-update-gud-running))
(defun gdb-update-gud-running ()
"Set `gud-running' and `gdb-frame-number' according to the state
of current thread.
"Set `gud-running' according to the state of current thread.
`gdb-frame-number' is set to nil if new current thread is
running.
`gdb-frame-number' is set to 0 if current thread is now stopped.
Note that when `gdb-gud-control-all-threads' is t, `gud-running'
cannot be reliably used to determine whether or not execution
......@@ -1673,12 +1681,10 @@ is running."
(setq gud-running
(string= (gdb-get-field (gdb-current-buffer-thread) 'state)
"running"))
;; We change frame number only if the state of current thread has
;; changed or there's no current thread.
(when (not (eq gud-running old-value))
(if (or gud-running (not (gdb-current-buffer-thread)))
(setq gdb-frame-number nil)
(setq gdb-frame-number "0")))))
;; Set frame number to "0" when _current_ threads stops
(when (and (gdb-current-buffer-thread)
(not (eq gud-running old-value)))
(setq gdb-frame-number "0"))))
(defun gdb-show-run-p ()
"Return t if \"Run/continue\" should be shown on the toolbar."
......@@ -1801,7 +1807,7 @@ is running."
(defun gdb-thread-created (output-field))
(defun gdb-thread-exited (output-field)
"Handle =thread-exited async record: unset `gdb-thread-number'
if current thread exited and update threads list."
if current thread exited and update threads list."
(let* ((thread-id (gdb-get-field (gdb-json-string output-field) 'id)))
(if (string= gdb-thread-number thread-id)
(gdb-setq-thread-number nil))
......
......@@ -133,7 +133,7 @@ Used to grey out relevant toolbar icons.")
(and (eq gud-minor-mode 'gdbmi)
(> (car (window-fringes)) 0)))))
(declare-function gdb-gud-context-call "gdb-mi.el")
(declare-function gdb-gud-context-command "gdb-mi.el")
(defun gud-stop-subjob ()
(interactive)
......@@ -143,7 +143,7 @@ Used to grey out relevant toolbar icons.")
((eq gud-minor-mode 'jdb)
(gud-call "suspend"))
((eq gud-minor-mode 'gdbmi)
(gdb-gud-context-call "-exec-interrupt" nil nil t))
(gud-call (gdb-gud-context-command "-exec-interrupt")))
(t
(comint-interrupt-subjob)))))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment