- ;; We don't want to raise an error here so we create a buffer if
- ;; there's none.
- (set-window-buffer window (get-buffer-create (car state)))
+ ;; We don't want to raise an error in case the buffer does not
+ ;; exist anymore, so we switch to a previous one and save the
+ ;; window with the intention of deleting it later if possible.
+ (let ((buffer (get-buffer (car state))))
+ (if buffer
+ (set-window-buffer window buffer)
+ (switch-to-prev-buffer window)
+ (push window window-state-put-stale-windows)))