Revise window splitting/nesting. Fix errors reported by Juanma.
commit967f49308ac07ad3dbba9ff3ed692b0fd3971499
authorMartin Rudalics <rudalics@gmx.at>
Sun, 10 Apr 2011 12:38:11 +0000 (10 14:38 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Sun, 10 Apr 2011 12:38:11 +0000 (10 14:38 +0200)
treef75257fcd4939365ed0b525fc2c24bd00dbc70f5
parent488874d4b991fdf72d2d57123888b87022b74efa
Revise window splitting/nesting.  Fix errors reported by Juanma.

* lisp.h: Extern other_buffer_safely.

* buffer.c: New symbol Qbuffer_list_update_hook.
(Fget_buffer_create, Fmake_indirect_buffer, Frename_buffer)
(Fkill_buffer, record_buffer): Run buffer-list-update-hook.
(other_buffer_safely): New function.
(Frecord_buffer): Mention return value in doc-string.
(Funrecord_buffer): Mention return value in doc-string.  Run
buffer-list-update-hook.
(syms_of_buffer): Define Vbuffer_list_update_hook.

* window.h (window): New slot nest.

* window.c: Remove Qsafe, Qabove, Qbelow.  Add Qauto_buffer_name.
(select_window): Restore version from Emacs 23 to avoid
clobbering the current buffer when the selected window is
selected.  Reported by Juanma Barranquero.
(Fwindow_nested, Fset_window_nested): Remove.
(Fwindow_splits, Fset_window_splits, Fwindow_nest)
(Fset_window_nest): New functions.
(recombine_windows): Use ->nest instead of ->nested.
(window_loop): Call other_buffer_safely
(Fdelete_other_windows_internal): Reset splits status of
remaining window.
(make_parent_window, make_window): Initialize splits and nest
status.
(Fsplit_window_internal): Handle splits and nest status.
(Fdelete_window_internal): Remove bflag.  Handle nest status.
(saved_window): Add slots for splits and nest status.
(Fset_window_configuration): Handle auto_buffer_name.  Handle
splits and nest status.  Reorder code.
(save_window_save): Handle splits and nest status.
(syms_of_window): Rewrite doc-string of window-splits.  New
variable window-nest.

* window.el (resize-window): With window-splits nil resize
either left or right sibling to behave more like Emacs 23.
Reported by Juanma Barranquero.
(delete-window, split-window): Simplify code and adapt to new
window-splits/window-nest semantics.
(window-state-get-1, window-state-put-1, window-state-put-2)
(display-buffer-split-window-1)
(display-buffer-split-atom-window): Adapt to new
window-splits/window-nest semantics.
(display-buffer-macro-specifiers, display-buffer-alist): Replace other-visible-frame
by other-frame.
(display-buffer-pop-up-window)
(display-buffer-pop-up-side-window): Reset new window's previous
buffers to nil to avoid that we switch back to the buffer from
the split window when quitting the window.

* menu-bar.el (kill-this-buffer, kill-this-buffer-enabled-p): Do
not offer to kill a buffer when we can't reliably kill it.

* help.el (help-window-display-message): Improve message shown.

* cus-start.el (all): Add entry for window-nest, rework that of
window-splits.

* buff-menu.el (Buffer-menu-select): Bind window-splits to t.

* windows.texi (Splitting Windows): Explain window-splits and
window-nest.
(Displaying Buffers): Replace other-visible-frame by other-frame.
13 files changed:
doc/lispref/ChangeLog
doc/lispref/windows.texi
lisp/ChangeLog
lisp/buff-menu.el
lisp/cus-start.el
lisp/help.el
lisp/menu-bar.el
lisp/window.el
src/ChangeLog
src/buffer.c
src/lisp.h
src/window.c
src/window.h