# HG changeset patch # User Dmitry Dzhus # Date 1249987736 0 # Node ID 23230e6cbc19c5a0d916a538f2b4bfbfeb2b6255 # Parent bfb43cf9358139a7bd5303a95dcf2478447ca0b0 *** empty log message *** diff -r bfb43cf93581 -r 23230e6cbc19 lisp/ChangeLog --- a/lisp/ChangeLog Mon Aug 10 21:42:41 2009 +0000 +++ b/lisp/ChangeLog Tue Aug 11 10:48:56 2009 +0000 @@ -1,3 +1,12 @@ +2009-08-11 Dmitry Dzhus + + * 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 * international/mule-cmds.el (mule-keymap, mule-menu-keymap) diff -r bfb43cf93581 -r 23230e6cbc19 lisp/progmodes/gdb-mi.el --- a/lisp/progmodes/gdb-mi.el Mon Aug 10 21:42:41 2009 +0000 +++ b/lisp/progmodes/gdb-mi.el Tue Aug 11 10:48:56 2009 +0000 @@ -134,7 +134,14 @@ (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 @@ (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 @@ (gdb-update-gud-running)) (defun gdb-update-gud-running () - "Set `gud-running' and `gdb-frame-number' according to the state -of current thread. - -`gdb-frame-number' is set to nil if new current thread is -running. + "Set `gud-running' according to the state of current thread. + +`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 @@ (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 @@ (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)) diff -r bfb43cf93581 -r 23230e6cbc19 lisp/progmodes/gud.el --- a/lisp/progmodes/gud.el Mon Aug 10 21:42:41 2009 +0000 +++ b/lisp/progmodes/gud.el Tue Aug 11 10:48:56 2009 +0000 @@ -133,7 +133,7 @@ (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 @@ ((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)))))