changeset 77472:70d58d56b53b

(idlwave-shell-clear-all-bp): Don't re-query for each cleared BP. (idlwave-shell-clear-bp): Optionally skip BP query. (idlwave-shell-update-bp-overlays): Use set-window-margins instead of set-window-buffer, which incorrectly moves displayed region.
author J.D. Smith <jdsmith@as.arizona.edu>
date Tue, 24 Apr 2007 00:22:52 +0000
parents be6b2b081602
children dcc12af6d555
files lisp/progmodes/idlw-shell.el
diffstat 1 files changed, 15 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/idlw-shell.el	Tue Apr 24 00:10:21 2007 +0000
+++ b/lisp/progmodes/idlw-shell.el	Tue Apr 24 00:22:52 2007 +0000
@@ -2586,7 +2586,7 @@
 			      (if (idlwave-shell-hide-p 'debug) 'mostly)
 			      nil t))
 
-(defun idlwave-shell-clear-bp (bp)
+(defun idlwave-shell-clear-bp (bp &optional no-query)
   "Clear breakpoint BP.
 Clears in IDL and in `idlwave-shell-bp-alist'."
   (let ((index (idlwave-shell-bp-get bp)))
@@ -2595,7 +2595,7 @@
           (idlwave-shell-send-command
            (concat "breakpoint,/clear," (int-to-string index))
 	   nil (idlwave-shell-hide-p 'breakpoint) nil t)
-	  (idlwave-shell-bp-query)))))
+	  (unless no-query (idlwave-shell-bp-query))))))
 
 (defun idlwave-shell-current-frame ()
   "Return a list containing the current file name and line point is in.
@@ -3722,17 +3722,22 @@
 		(setq old-buffers (delq (current-buffer) old-buffers)))
 	    (if (fboundp 'set-specifier) ;; XEmacs
 		(set-specifier left-margin-width (cons (current-buffer) 2))
-	      (setq left-margin-width 2))
-	    (if (setq win (get-buffer-window (current-buffer) t))
-		(set-window-buffer win (current-buffer))))))
+	      (if (< left-margin-width 2)
+		  (setq left-margin-width 2)))
+	    (let ((window (get-buffer-window (current-buffer) 0)))
+	      (if window
+		  (set-window-margins 
+		   window left-margin-width right-margin-width))))))
       (if use-glyph
 	  (while (setq buf (pop old-buffers))
 	    (with-current-buffer buf
 	      (if (fboundp 'set-specifier) ;; XEmacs
 		  (set-specifier left-margin-width (cons (current-buffer) 0))
 		(setq left-margin-width 0))
-	      (if (setq win (get-buffer-window buf t))
-		  (set-window-buffer win buf))))))))
+	      (let ((window (get-buffer-window buf 0)))
+		(if window
+		    (set-window-margins 
+		     window left-margin-width right-margin-width)))))))))
 
 (defun idlwave-shell-make-new-bp-overlay (&optional type disabled)
   "Make a new overlay for highlighting breakpoints.  
@@ -4055,7 +4060,9 @@
    idlwave-shell-bp-query
    '(progn
       (idlwave-shell-filter-bp)
-      (mapcar 'idlwave-shell-clear-bp idlwave-shell-bp-alist))
+      (mapcar (lambda (x) (idlwave-shell-clear-bp x 'no-query))
+	      idlwave-shell-bp-alist)
+      (idlwave-shell-bp-query))
    'hide))
 
 (defun idlwave-shell-list-all-bp ()