Skip to content

Change behavior when repeating last move from builtin_f_expr and builtin_t_expr #699

@gabrielrov

Description

@gabrielrov

Is your feature request related to a problem? Please describe.
When using repeat_last_moveon operation pending mode, after triggeringbuiltin_f_expr
or builtin_t_expr, it operates on one character less that it would be expected to.

Taking this snippet as an exemple:

vim.keymap.set({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move)

If the user presses f(, returns to the first character and presses d;, it would result on:

({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move)

t(_d; would result on:

t({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move)

Describe the solution you'd like
For f(_d;, it would be expected to behave, as:

{ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move)

and for t(_d;:

({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move)

Additional context
This diverges from the way it works in core nvim and is inconsistent with F, T,
and visual selection behavior.

As far as i can tell, this is only reproducible when repeating moves from builtin_f_expr and
builtin_t_expr on operation pending mode, not with builtin_F_expr and builtin_T_expr.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions