]> git.eshelyaron.com Git - emacs.git/commitdiff
*** empty log message ***
authorDmitry Dzhus <dima@sphinx.net.ru>
Tue, 11 Aug 2009 10:48:56 +0000 (10:48 +0000)
committerDmitry Dzhus <dima@sphinx.net.ru>
Tue, 11 Aug 2009 10:48:56 +0000 (10:48 +0000)
lisp/ChangeLog
lisp/progmodes/gdb-mi.el
lisp/progmodes/gud.el

index 8c649b17718fcf3c0193dde06e7e262d850cb4af..ccd8359f285afebe8aef243f1e43d7e16e2d91d8 100644 (file)
@@ -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)
index 975908f2166f0b771272b294b02dcb580dba0d61..d2724cc377967bade0abac48c27b4d0828032a72 100644 (file)
@@ -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))
index 6e66b0fb26199a0851da4cedd06d1236dad0b7bc..4b77f4a1ff5119cfb0155863a0213c350f5235f2 100644 (file)
@@ -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)))))