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.master
parent
a8a70f0f29
commit
3534d8ff25
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue