* window.c (save_window_save, Fcurrent_window_configuration)
(Vwindow_persistent_parameters): Do not use Qstate. Rewrite
doc-strings.
* window.el (window--state-get-1, window-state-get): Do not use
special state value for window-persistent-parameters. Rename
argument IGNORE to WRITABLE. Rewrite doc-string.
(window--state-put-2): Reset all window parameters to nil before
assigning values of persistent parameters.
* windows.texi (Window Configurations): Rewrite references to
persistent window parameters.
(Window Parameters): Fix description of persistent window
parameters.
* window.c (Vwindow_persistent_parameters): New variable.
(Fset_window_configuration, save_window_save): Handle persistent
window parameters.
* window.el (window-state-ignored-parameters): Remove variable.
(window--state-get-1): Rename argument MARKERS to IGNORE.
Handle persistent window parameters. Make copy of clone-of
parameter only if requested. (Bug#10348)
(window--state-put-2): Install a window parameter only if it has
a non-nil value or an existing parameter shall be overwritten.
* windows.texi (Window Configurations, Window Parameters):
Describe persistent window parameters.
* window.c (Vwindow_combination_resize)
(Vwindow_combination_limit): Use t instead of non-nil in
doc-strings.
* window.el (delete-other-windows): Use correct frame in call to
window-with-parameter.
* windows.texi (Splitting Windows): Use t instead of non-nil
when describing window-combination-resize.
* lisp/window.el (switch-to-buffer): Better match Emacs-23 behavior and only
use pop-to-buffer if the selected window can't be used.
(pop-to-buffer-same-window): Use display-buffer--same-window-action.
Fixes: debbugs:10144
* doc/emacs/files.texi (Visiting): `C-x 5 f' works on ttys too.
* doc/emacs/frames.texi (Frames): Rewrite introduction.
(Mouse Commands): Default for mouse-drag-copy-region is now t.
The mouse-save-then-kill-command does not copy to kill ring by
default. Behavior of DEL is not special to mouse commands now.
(Mouse References): Document mouse-1-click-follows-link more
thoroughly.
(Menu Mouse Clicks): Move footnote to the main text and add xref
to Init Rebinding node.
(Mode Line Mouse): Mouse-3 on the mode-line does not bury buffer.
* lisp/window.el (display-buffer--special-action): Minor doc fix.
They shouldn't be named "proc" since they are not processes.
* lisp/window.el (walk-window-tree-1, walk-window-tree)
(walk-window-subtree, walk-windows): Change argument name.
* window.c (Vwindow_splits): Rename to
Vwindow_combination_resize. Suggested by Juri Linkov.
(Fsplit_window_internal): Use Vwindow_combination_resize instead
of Vwindow_splits.
* window.el (window-resize, delete-window, split-window):
Replace window-splits by window-combination-resize.
* cus-start.el (window-splits): Replace by
window-combination-resize.
* windows.texi (Resizing Windows, Splitting Windows)
(Deleting Windows): Use term window-combination-resize instead
of window-splits.
* window.el (window-size-fixed-p): Rewrite doc-string.
(window-resizable-p): Rename to window--resizable-p. Update
callers.
(window--resizable): New function. Make all callers of
window-resizable call window--resizable instead.
(window-resizable): Rewrite in terms of window--resizable.
* windows.texi (Resizing Windows): Rewrite documentation of
window-resizable.
* window.el (display-buffer-function, special-display-function):
Mention display-buffer-record-window but do not mention
help-setup parameter in doc-strings.
* lisp/window.el (window-total-height, window-total-width): Doc fix.
(window-body-size): Move from C.
(window-body-height, window-body-width): Move to C.
* src/window.c (Fwindow_left_column, Fwindow_top_line): Doc fix.
(Fwindow_body_height, Fwindow_body_width): Move from Lisp. Signal
an error if not a live window.
(Fwindow_total_width, Fwindow_total_height): Move from Lisp.
(Fwindow_total_size, Fwindow_body_size): Move to Lisp.
(display-buffer--special-action): New function, morphed
from display-buffer--special.
(display-buffer): Use it to handle special-display-buffers at higher
priority (just after display-buffer-alist).
(display-buffer-fallback-action, display-buffer--other-frame-action)
(pop-to-buffer-same-window): Remove display-buffer--special.
Fixes: debbugs:9532
* lisp/window.el (window-combination-p): Function deleted; its
side-effect is not used in any existing code.
(window-combinations, window-combined-p): Call window-*-child
directly.
* window.c (Fwindow_live_p, Fwindow_frame, Fframe_root_window)
(Fminibuffer_window, Fwindow_buffer, Fwindow_splits)
(Fset_window_splits, Fwindow_nest, Fset_window_nest)
(Fwindow_use_time, Fwindow_total_size, Fwindow_normal_size)
(Fwindow_new_normal, Fwindow_left_column, Fwindow_top_line)
(Fwindow_margins, Fwindow_fringes, Fwindow_scroll_bars)
(Fwindow_vscroll): Doc fix.
(Fwindow_top_child, Fwindow_left_child): Eliminate a nil default
argument, since it makes no sense to pass a live window and for
consistency with window-child.
src/window.c (Fwindow_body_size): Mention in the doc string that the
return value is in frame's canonical units.
lisp/window.el (window-body-height, window-body-width): Mention in
the doc string that the return values are in frame's canonical
units.
doc/lispref/windows.texi (Window Sizes): Mention in the doc string that the
return values of `window-body-height' and `window-body-width' are
in frame's canonical units.
* window.el (quit-window): Call unrecord-window-buffer after
showing another buffer in the window. (Bug#9937)
(bury-buffer): Call switch-to-prev-buffer with second argument
'bury.