mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-05 19:31:02 -08:00
lisp/window.el (window-state-put): Remove window if buffer was not restored.
(window-state-put-stale-windows): New variable. (window--state-put-2): Save list of windows without matching buffer. (window-state-put): Remove "bufferless" windows if possible.
This commit is contained in:
parent
11e03d8900
commit
34ada5f476
2 changed files with 22 additions and 3 deletions
|
|
@ -1,3 +1,9 @@
|
||||||
|
2013-07-06 Martin Rudalics <rudalics@gmx.at>
|
||||||
|
|
||||||
|
* window.el (window-state-put-stale-windows): New variable.
|
||||||
|
(window--state-put-2): Save list of windows without matching buffer.
|
||||||
|
(window-state-put): Remove "bufferless" windows if possible.
|
||||||
|
|
||||||
2013-07-06 Juanma Barranquero <lekktu@gmail.com>
|
2013-07-06 Juanma Barranquero <lekktu@gmail.com>
|
||||||
|
|
||||||
* simple.el (alternatives-define): Remove leftover :group keyword.
|
* simple.el (alternatives-define): Remove leftover :group keyword.
|
||||||
|
|
|
||||||
|
|
@ -4347,6 +4347,9 @@ value can be also stored on disk and read back in a new session."
|
||||||
(defvar window-state-put-list nil
|
(defvar window-state-put-list nil
|
||||||
"Helper variable for `window-state-put'.")
|
"Helper variable for `window-state-put'.")
|
||||||
|
|
||||||
|
(defvar window-state-put-stale-windows nil
|
||||||
|
"Helper variable for `window-state-put'.")
|
||||||
|
|
||||||
(defun window--state-put-1 (state &optional window ignore totals)
|
(defun window--state-put-1 (state &optional window ignore totals)
|
||||||
"Helper function for `window-state-put'."
|
"Helper function for `window-state-put'."
|
||||||
(let ((type (car state)))
|
(let ((type (car state)))
|
||||||
|
|
@ -4429,9 +4432,14 @@ value can be also stored on disk and read back in a new session."
|
||||||
(set-window-parameter window (car parameter) (cdr parameter))))
|
(set-window-parameter window (car parameter) (cdr parameter))))
|
||||||
;; Process buffer related state.
|
;; Process buffer related state.
|
||||||
(when state
|
(when state
|
||||||
;; We don't want to raise an error here so we create a buffer if
|
;; We don't want to raise an error in case the buffer does not
|
||||||
;; there's none.
|
;; exist anymore, so we switch to a previous one and save the
|
||||||
(set-window-buffer window (get-buffer-create (car state)))
|
;; 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)))
|
||||||
(with-current-buffer (window-buffer window)
|
(with-current-buffer (window-buffer window)
|
||||||
(set-window-hscroll window (cdr (assq 'hscroll state)))
|
(set-window-hscroll window (cdr (assq 'hscroll state)))
|
||||||
(apply 'set-window-fringes
|
(apply 'set-window-fringes
|
||||||
|
|
@ -4491,6 +4499,7 @@ Optional argument IGNORE non-nil means ignore minimum window
|
||||||
sizes and fixed size restrictions. IGNORE equal `safe' means
|
sizes and fixed size restrictions. IGNORE equal `safe' means
|
||||||
windows can get as small as `window-safe-min-height' and
|
windows can get as small as `window-safe-min-height' and
|
||||||
`window-safe-min-width'."
|
`window-safe-min-width'."
|
||||||
|
(setq window-state-put-stale-windows nil)
|
||||||
(setq window (window-normalize-window window t))
|
(setq window (window-normalize-window window t))
|
||||||
(let* ((frame (window-frame window))
|
(let* ((frame (window-frame window))
|
||||||
(head (car state))
|
(head (car state))
|
||||||
|
|
@ -4539,6 +4548,10 @@ windows can get as small as `window-safe-min-height' and
|
||||||
(set-window-buffer window (current-buffer))
|
(set-window-buffer window (current-buffer))
|
||||||
(window--state-put-1 state window nil totals)
|
(window--state-put-1 state window nil totals)
|
||||||
(window--state-put-2 ignore))
|
(window--state-put-2 ignore))
|
||||||
|
(while window-state-put-stale-windows
|
||||||
|
(let ((window (pop window-state-put-stale-windows)))
|
||||||
|
(when (eq (window-deletable-p window) t)
|
||||||
|
(delete-window window))))
|
||||||
(window--check frame))))
|
(window--check frame))))
|
||||||
|
|
||||||
(defun display-buffer-record-window (type window buffer)
|
(defun display-buffer-record-window (type window buffer)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue