Implement MAKE-BUFFER-INVISIBLE.
authorChris Hanson <org/chris-hanson/cph>
Fri, 7 Apr 2000 20:12:50 +0000 (20:12 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 7 Apr 2000 20:12:50 +0000 (20:12 +0000)
v7/src/edwin/curren.scm

index 902a40a293cb937ecbcf3d214e1a769d714fc910..5be9310dda443e521d39b4361c819163b6ace0a1 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: curren.scm,v 1.123 1999/01/02 06:11:34 cph Exp $
+;;; $Id: curren.scm,v 1.124 2000/04/07 20:12:50 cph Exp $
 ;;;
 ;;; Copyright (c) 1986, 1989-1999 Massachusetts Institute of Technology
 ;;;
@@ -404,19 +404,19 @@ The frame is guaranteed to be deselected at that time."
               (buffer-processes buffer))
      (for-each (lambda (hook) (hook buffer))
               (get-buffer-hooks buffer 'KILL-BUFFER-HOOKS))
-     (let loop
-        ((windows (buffer-windows buffer))
-         (last-buffer false))
-       (if (not (null? windows))
-          (let ((new-buffer
-                 (or (other-buffer buffer)
-                     last-buffer
-                     (error "Buffer to be killed has no replacement"
-                            buffer))))
-            (select-buffer-in-window new-buffer (car windows) false)
-            (loop (cdr windows) new-buffer))))
+     (if (not (make-buffer-invisible buffer))
+        (error "Buffer to be killed has no replacement" buffer))
      (bufferset-kill-buffer! (current-bufferset) buffer))))
 
+(define (make-buffer-invisible buffer)
+  (let loop ((windows (buffer-windows buffer)) (last-buffer #f))
+    (or (not (pair? windows))
+       (let ((new-buffer (or (other-buffer buffer) last-buffer)))
+         (and new-buffer
+              (begin
+                (select-buffer-in-window new-buffer (car windows) #f)
+                (loop (cdr windows) new-buffer)))))))
+
 (define-integrable (add-kill-buffer-hook buffer hook)
   (add-buffer-hook buffer 'KILL-BUFFER-HOOKS hook))