[PATCH] vi: fix replacement of single character with CR

Denys Vlasenko vda.linux at googlemail.com
Fri Feb 8 12:03:36 UTC 2019


Applied, thanks!

On Sun, Feb 3, 2019 at 3:02 PM Ron Yorston <rmy at pobox.com> wrote:
>
> Currently if the 'r' command is followed by a carriage return a
> literal CR replaces the current character.
>
> Fix this so that:
>
> - a new line is inserted
> - the autoindent setting is respected
> - the cursor is placed at the start of the new line
>
> function                                             old     new   delta
> do_cmd                                              5052    5060      +8
> ------------------------------------------------------------------------------
> (add/remove: 0/0 grow/shrink: 1/0 up/down: 8/0)                 Total: 8 bytes
>
> Signed-off-by: Ron Yorston <rmy at pobox.com>
> ---
>  editors/vi.c | 11 +++--------
>  1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/editors/vi.c b/editors/vi.c
> index c6adeb311..899fcf57e 100644
> --- a/editors/vi.c
> +++ b/editors/vi.c
> @@ -4189,14 +4189,9 @@ static void do_cmd(int c)
>         case 'r':                       // r- replace the current char with user input
>                 c1 = get_one_char();    // get the replacement char
>                 if (*dot != '\n') {
> -#if ENABLE_FEATURE_VI_UNDO
> -                       undo_push(dot, 1, UNDO_DEL);
> -                       *dot = c1;
> -                       undo_push(dot, 1, UNDO_INS_CHAIN);
> -#else
> -                       *dot = c1;
> -                       modified_count++;
> -#endif
> +                       dot = text_hole_delete(dot, dot, ALLOW_UNDO);
> +                       dot = char_insert(dot, c1, ALLOW_UNDO_CHAIN);
> +                       dot_left();
>                 }
>                 end_cmd_q();    // stop adding to q
>                 break;
> --
> 2.20.1
>
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox


More information about the busybox mailing list