Mercurial > emacs
changeset 45835:aab759361c24
(Fset_window_configuration): Explicitly preserve
the point value that new_current_buffer had at the start.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 15 Jun 2002 14:20:52 +0000 |
parents | 25a6099362fe |
children | e4a48b5ab2fb |
files | src/window.c |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/window.c Sat Jun 15 14:19:02 2002 +0000 +++ b/src/window.c Sat Jun 15 14:20:52 2002 +0000 @@ -4941,6 +4941,7 @@ Lisp_Object new_current_buffer; Lisp_Object frame; FRAME_PTR f; + int old_point = -1; while (!WINDOW_CONFIGURATIONP (configuration)) wrong_type_argument (Qwindow_configuration_p, configuration); @@ -4951,6 +4952,8 @@ new_current_buffer = data->current_buffer; if (NILP (XBUFFER (new_current_buffer)->name)) new_current_buffer = Qnil; + else + old_point = BUF_PT (XBUFFER (new_current_buffer)); frame = XWINDOW (SAVED_WINDOW_N (saved_windows, 0)->window)->frame; f = XFRAME (frame); @@ -5138,12 +5141,13 @@ FRAME_ROOT_WINDOW (f) = data->root_window; /* Prevent "swapping out point" in the old selected window using the buffer that has been restored into it. - That swapping out has already been done, - near the beginning of this function. */ + Use the point value from the beginning of this function + since unshow_buffer (called from delete_all_subwindows) + could have altered it. */ selected_window = Qnil; if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer)) set_marker_restricted (XWINDOW (data->current_window)->pointm, - make_number (BUF_PT (XBUFFER (XWINDOW (data->current_window)->buffer))), + old_point, XWINDOW (data->current_window)->buffer); Fselect_window (data->current_window);