Subject: bs cannot recover from error splitting
From: Juanma Barranquero <[email-masked]>
To: Bug-Gnu-Emacs <[email-masked]>
Date: Fri, 24 Feb 2012 19:42:15 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Package: emacs
Severity: minor

emacs -Q
C-x 2
C-x b test <RET>
M-: (setq window-size-fixed 'height) <RET>   ;; in buffer "test"
M-x bs-show <RET>  =>  Window #<window 3 on *scratch*> too small for splitting
;; ok, let's kill that window
C-x 0
;; now the only window shows "*scrach*"
M-x bs-show <RET>  =>  we're back to the old config and the "too small" error.

The problem is that bs--show-with-configuration errs out, so bs-show
ends and the saved configuration is never reset to nil. Each new
attempt to use bs-show finds a saved configuration and restores it
before anything else.

The simplest way to fix it is using ignore-errors to protect against
split-window-below failing, so the code acts as if the window was too
small in the first place. It causes no harm because, once bs-show is
exited normally, the current window configuration is restored.

OK to install now?

    Juanma

=== modified file 'lisp/bs.el'
--- lisp/bs.el	2012-01-19 07:21:25 +0000
+++ lisp/bs.el	2012-02-24 18:37:28 +0000
@@ -1415,5 +1415,5 @@
 	(setq bs--window-config-coming-from (current-window-configuration))
 	(when (> (window-height (selected-window)) 7)
-          (select-window (split-window-below))))
+          (ignore-errors (select-window (split-window-below)))))
       (bs-show-in-buffer liste)
       (bs-message-without-log "%s" (bs--current-config-message)))))