aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman2004-11-16 16:58:16 +0000
committerRichard M. Stallman2004-11-16 16:58:16 +0000
commit6df7142943fd0c7928723cea5c0e17086e918a47 (patch)
treeafcf79898fd2ccdd7c2d71c8967a62d9bfae6fae /src
parente20d27dc35e5c8d9ee0db54c1020b05bc83cdf99 (diff)
downloademacs-6df7142943fd0c7928723cea5c0e17086e918a47.tar.gz
emacs-6df7142943fd0c7928723cea5c0e17086e918a47.zip
(Fvertical_motion): In batch mode, use vmotion directly.
Diffstat (limited to 'src')
-rw-r--r--src/indent.c45
1 files changed, 27 insertions, 18 deletions
diff --git a/src/indent.c b/src/indent.c
index 559b69d9311..0ece40790a7 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -2061,29 +2061,38 @@ whether or not it is currently displayed in some window. */)
2061 XSETBUFFER (w->buffer, current_buffer); 2061 XSETBUFFER (w->buffer, current_buffer);
2062 } 2062 }
2063 2063
2064 SET_TEXT_POS (pt, PT, PT_BYTE); 2064 if (noninteractive)
2065 start_display (&it, w, pt);
2066
2067 /* Scan from the start of the line containing PT. If we don't
2068 do this, we start moving with IT->current_x == 0, while PT is
2069 really at some x > 0. The effect is, in continuation lines, that
2070 we end up with the iterator placed at where it thinks X is 0,
2071 while the end position is really at some X > 0, the same X that
2072 PT had. */
2073 if (XINT (lines) < 0)
2074 { 2065 {
2075 reseat_at_previous_visible_line_start (&it); 2066 struct position pos;
2076 it.current_x = it.hpos = 0; 2067 pos = *vmotion (PT, XINT (lines), w);
2077 move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS); 2068 SET_PT_BOTH (pos.bufpos, pos.bytepos);
2078 it.vpos = 0;
2079 } 2069 }
2080 else 2070 else
2081 move_it_by_lines (&it, 0, 0); 2071 {
2072 SET_TEXT_POS (pt, PT, PT_BYTE);
2073 start_display (&it, w, pt);
2074
2075 /* Scan from the start of the line containing PT. If we don't
2076 do this, we start moving with IT->current_x == 0, while PT is
2077 really at some x > 0. The effect is, in continuation lines, that
2078 we end up with the iterator placed at where it thinks X is 0,
2079 while the end position is really at some X > 0, the same X that
2080 PT had. */
2081 if (XINT (lines) < 0)
2082 {
2083 reseat_at_previous_visible_line_start (&it);
2084 it.current_x = it.hpos = 0;
2085 move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS);
2086 it.vpos = 0;
2087 }
2088 else
2089 move_it_by_lines (&it, 0, 0);
2082 2090
2083 if (XINT (lines) != 0) 2091 if (XINT (lines) != 0)
2084 move_it_by_lines (&it, XINT (lines), 0); 2092 move_it_by_lines (&it, XINT (lines), 0);
2085 2093
2086 SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it)); 2094 SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
2095 }
2087 2096
2088 if (BUFFERP (old_buffer)) 2097 if (BUFFERP (old_buffer))
2089 w->buffer = old_buffer; 2098 w->buffer = old_buffer;