aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Rudalics2011-07-14 10:30:34 +0200
committerMartin Rudalics2011-07-14 10:30:34 +0200
commitadc47434a27e5f4a9733e657584823508f8ab952 (patch)
tree39e196ed7783f1d0b6dcd3716064ed585a073084 /src
parent7e5bfb8fec244ab07253d1dd95fcef0673b89cbc (diff)
downloademacs-adc47434a27e5f4a9733e657584823508f8ab952.tar.gz
emacs-adc47434a27e5f4a9733e657584823508f8ab952.zip
Fix bugs in vertical-motion and display-buffer-normalize-special.
* indent.c (Fvertical_motion): Set and restore w->pointm when saving and restoring the window's buffer (Bug#9006). * window.el (display-buffer-normalize-special): Replace `dedicated' by `dedicate' to dedicate window (Bug#9072).
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/indent.c14
2 files changed, 16 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 36a7539b888..9a60ac5f541 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12011-07-14 Martin Rudalics <rudalics@gmx.at>
2
3 * indent.c (Fvertical_motion): Set and restore w->pointm when
4 saving and restoring the window's buffer (Bug#9006).
5
12011-07-13 Lars Magne Ingebrigtsen <larsi@gnus.org> 62011-07-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 7
3 * editfns.c (Fstring_to_char): Clarify just what is returned 8 * editfns.c (Fstring_to_char): Clarify just what is returned
diff --git a/src/indent.c b/src/indent.c
index 5c5966175aa..02eeb7f17d4 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1985,7 +1985,8 @@ whether or not it is currently displayed in some window. */)
1985 struct text_pos pt; 1985 struct text_pos pt;
1986 struct window *w; 1986 struct window *w;
1987 Lisp_Object old_buffer; 1987 Lisp_Object old_buffer;
1988 struct gcpro gcpro1; 1988 EMACS_INT old_charpos, old_bytepos;
1989 struct gcpro gcpro1, gcpro2, gcpro3;
1989 Lisp_Object lcols = Qnil; 1990 Lisp_Object lcols = Qnil;
1990 double cols IF_LINT (= 0); 1991 double cols IF_LINT (= 0);
1991 1992
@@ -2005,12 +2006,16 @@ whether or not it is currently displayed in some window. */)
2005 w = XWINDOW (window); 2006 w = XWINDOW (window);
2006 2007
2007 old_buffer = Qnil; 2008 old_buffer = Qnil;
2008 GCPRO1 (old_buffer); 2009 GCPRO3 (old_buffer, old_charpos, old_bytepos);
2009 if (XBUFFER (w->buffer) != current_buffer) 2010 if (XBUFFER (w->buffer) != current_buffer)
2010 { 2011 {
2011 /* Set the window's buffer temporarily to the current buffer. */ 2012 /* Set the window's buffer temporarily to the current buffer. */
2012 old_buffer = w->buffer; 2013 old_buffer = w->buffer;
2014 old_charpos = XMARKER (w->pointm)->charpos;
2015 old_bytepos = XMARKER (w->pointm)->bytepos;
2013 XSETBUFFER (w->buffer, current_buffer); 2016 XSETBUFFER (w->buffer, current_buffer);
2017 set_marker_both
2018 (w->pointm, w->buffer, BUF_PT (current_buffer), BUF_PT_BYTE (current_buffer));
2014 } 2019 }
2015 2020
2016 if (noninteractive) 2021 if (noninteractive)
@@ -2131,7 +2136,10 @@ whether or not it is currently displayed in some window. */)
2131 } 2136 }
2132 2137
2133 if (BUFFERP (old_buffer)) 2138 if (BUFFERP (old_buffer))
2134 w->buffer = old_buffer; 2139 {
2140 w->buffer = old_buffer;
2141 set_marker_both (w->pointm, w->buffer, old_charpos, old_bytepos);
2142 }
2135 2143
2136 RETURN_UNGCPRO (make_number (it.vpos)); 2144 RETURN_UNGCPRO (make_number (it.vpos));
2137} 2145}