Handle 'unbound' like nil for 'window-point-insertion-type' (Bug#33871)
* src/window.c (save_window_save): When setting the marker insertion type of saved window points treat a buffer local value of 'unbound' for 'window-point-insertion-type' like nil (Bug#33871).
This commit is contained in:
parent
b0e6ecfc33
commit
d82e73f08f
2 changed files with 10 additions and 8 deletions
|
@ -4278,7 +4278,7 @@ WINDOW must be a live window and defaults to the selected one."
|
|||
(list (copy-marker start)
|
||||
(copy-marker
|
||||
;; Preserve window-point-insertion-type
|
||||
;; (Bug#12588).
|
||||
;; (Bug#12855).
|
||||
point window-point-insertion-type)))))
|
||||
(set-window-prev-buffers
|
||||
window (cons entry (window-prev-buffers window)))))
|
||||
|
@ -6110,7 +6110,7 @@ element is BUFFER."
|
|||
(list 'other
|
||||
;; A quadruple of WINDOW's buffer, start, point and height.
|
||||
(list (current-buffer) (window-start window)
|
||||
;; Preserve window-point-insertion-type (Bug#12588).
|
||||
;; Preserve window-point-insertion-type (Bug#12855).
|
||||
(copy-marker
|
||||
(window-point window) window-point-insertion-type)
|
||||
(if (window-combined-p window)
|
||||
|
|
14
src/window.c
14
src/window.c
|
@ -6965,6 +6965,12 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, ptrdiff_t i)
|
|||
|
||||
if (BUFFERP (w->contents))
|
||||
{
|
||||
Lisp_Object buffer_local_window_point_insertion_type
|
||||
= (buffer_local_value (Qwindow_point_insertion_type, w->contents));
|
||||
bool window_point_insertion_type
|
||||
= (!NILP (buffer_local_window_point_insertion_type)
|
||||
&& !EQ (buffer_local_window_point_insertion_type, Qunbound));
|
||||
|
||||
/* Save w's value of point in the window configuration. If w
|
||||
is the selected window, then get the value of point from
|
||||
the buffer; pointm is garbage in the selected window. */
|
||||
|
@ -6975,12 +6981,8 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, ptrdiff_t i)
|
|||
else
|
||||
p->pointm = Fcopy_marker (w->pointm, Qnil);
|
||||
p->old_pointm = Fcopy_marker (w->old_pointm, Qnil);
|
||||
XMARKER (p->pointm)->insertion_type
|
||||
= !NILP (buffer_local_value /* Don't signal error if void. */
|
||||
(Qwindow_point_insertion_type, w->contents));
|
||||
XMARKER (p->old_pointm)->insertion_type
|
||||
= !NILP (buffer_local_value /* Don't signal error if void. */
|
||||
(Qwindow_point_insertion_type, w->contents));
|
||||
XMARKER (p->pointm)->insertion_type = window_point_insertion_type;
|
||||
XMARKER (p->old_pointm)->insertion_type = window_point_insertion_type;
|
||||
|
||||
p->start = Fcopy_marker (w->start, Qnil);
|
||||
p->start_at_line_beg = w->start_at_line_beg ? Qt : Qnil;
|
||||
|
|
Loading…
Add table
Reference in a new issue