changeset 104232:23230e6cbc19

*** empty log message ***
author Dmitry Dzhus <dima@sphinx.net.ru>
date Tue, 11 Aug 2009 10:48:56 +0000
parents bfb43cf93581
children fbce43fef5e3
files lisp/ChangeLog lisp/progmodes/gdb-mi.el lisp/progmodes/gud.el
diffstat 3 files changed, 36 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- 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  <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)
--- 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))
--- 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)))))