commit 3534d8ff25c6a6a6504d9d25c292ca2cb25a3782
parent a8a70f0f290355a52ff0157af2187d5892492233
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Tue, 24 Jan 2017 16:42:42 +0100
replacing: compensate cursor position only for replacements /before/ it
When a replacement happens right at where the cursor sits, the position
of the cursor should not be adjusted, because the real cursor position
is between the current character and the preceding one: the place where
the cursor is shown is in fact right /after/ the insertion point.
This fixes https://savannah.gnu.org/bugs/?50134,
and fixes https://savannah.gnu.org/bugs/?50135.
Diffstat:
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/search.c b/src/search.c
@@ -710,7 +710,7 @@ ssize_t do_replace_loop(const char *needle, bool whole_word_only,
if (!old_mark_set || right_side_up) {
#endif
if (openfile->current == real_current &&
- openfile->current_x <= *real_current_x) {
+ openfile->current_x < *real_current_x) {
if (*real_current_x < openfile->current_x + match_len)
*real_current_x = openfile->current_x + match_len;
*real_current_x += length_change;