changeset 69350:d3742811a570

(gdba): Don't call gdb-init-1 explicitly as it gets called in gdb-prompt anyway. (gdb-use-separate-io-buffer): Only restore window arrangement for gdb-many-windows. (gdb-enqueue-input): Make it harder to send GDB input when program is running. (gdb-buffer-list): New variable. (gdb-remove-mouse-face): New function. (gdb-starting): Use it when GDB input won't get sent.
author Nick Roberts <nickrob@snap.net.nz>
date Fri, 10 Mar 2006 02:40:31 +0000
parents aeac9fc5787d
children 86b7b0805645
files lisp/progmodes/gdb-ui.el
diffstat 1 files changed, 16 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/gdb-ui.el	Fri Mar 10 02:35:22 2006 +0000
+++ b/lisp/progmodes/gdb-ui.el	Fri Mar 10 02:40:31 2006 +0000
@@ -257,8 +257,7 @@
   (interactive (list (gud-query-cmdline 'gdba)))
   ;;
   ;; Let's start with a basic gud-gdb buffer and then modify it a bit.
-  (gdb command-line)
-  (gdb-init-1))
+  (gdb command-line))
 
 (defcustom gdb-debug-ring-max 128
   "Maximum size of `gdb-debug-ring'."
@@ -322,7 +321,7 @@
 	   (buffer-name gud-comint-buffer))
       (condition-case nil
 	  (if gdb-use-separate-io-buffer
-	      (gdb-restore-windows)
+	      (if gdb-many-windows (gdb-restore-windows))
 	    (kill-buffer (gdb-inferior-io-name)))
 	(error nil))))
 
@@ -1037,7 +1036,7 @@
 ;; is a query, or other non-top-level prompt.
 
 (defun gdb-enqueue-input (item)
-  (if gdb-prompting
+  (if (and gdb-prompting (not gud-running))
       (progn
 	(gdb-send-item item)
 	(setq gdb-prompting nil))
@@ -1192,6 +1191,7 @@
      ((eq sink 'user)
       (progn
 	(setq gud-running t)
+	(gdb-remove-mouse-face)
 	(if gdb-use-separate-io-buffer
 	    (setq gdb-output-sink 'inferior))))
      (t
@@ -1299,6 +1299,18 @@
       (gdb-resync)
       (error "Phase error in gdb-post-prompt (got %s)" sink)))))
 
+(defconst gdb-buffer-list
+'(gdb-stack-buffer gdb-locals-buffer gdb-registers-buffer gdb-threads-buffer))
+
+(defun gdb-remove-mouse-face ()
+  (dolist (buffertype gdb-buffer-list)
+    (let ((buffer (gdb-get-buffer buffertype)))
+      (if buffer
+	  (with-current-buffer buffer
+	    (let ((inhibit-read-only t))
+	      (remove-text-properties
+	       (point-min) (point-max) '(mouse-face))))))))
+
 ;; GUD displays the selected GDB frame.  This might might not be the current
 ;; GDB frame (after up, down etc).  If no GDB frame is visible but the last
 ;; visited breakpoint is, use that window.