diff options
| author | Richard M. Stallman | 2004-11-16 16:58:16 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2004-11-16 16:58:16 +0000 |
| commit | 6df7142943fd0c7928723cea5c0e17086e918a47 (patch) | |
| tree | afcf79898fd2ccdd7c2d71c8967a62d9bfae6fae /src | |
| parent | e20d27dc35e5c8d9ee0db54c1020b05bc83cdf99 (diff) | |
| download | emacs-6df7142943fd0c7928723cea5c0e17086e918a47.tar.gz emacs-6df7142943fd0c7928723cea5c0e17086e918a47.zip | |
(Fvertical_motion): In batch mode, use vmotion directly.
Diffstat (limited to 'src')
| -rw-r--r-- | src/indent.c | 45 |
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; |