diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index 32d82d9dba..8c5de0a6bc 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -1702,7 +1702,9 @@ prefixes can be specified. They are separated by whitespace. This is the default for ``input.conf`` commands. ``repeatable`` For some commands, keeping a key pressed doesn't run the command repeatedly. - This prefix forces enabling key repeat in any case. + This prefix forces enabling key repeat in any case. For a list of commands: + the first command determines the repeatability of the whole list (up to and + including version 0.33 - a list was always repeatable). ``async`` Allow asynchronous execution (if possible). Note that only a few commands will support this (usually this is explicitly documented). Some commands diff --git a/input/cmd.c b/input/cmd.c index 0ab06e3574..64232143f7 100644 --- a/input/cmd.c +++ b/input/cmd.c @@ -608,8 +608,10 @@ void mp_cmd_dump(struct mp_log *log, int msgl, char *header, struct mp_cmd *cmd) bool mp_input_is_repeatable_cmd(struct mp_cmd *cmd) { - return (cmd->def->allow_auto_repeat) || cmd->def == &mp_cmd_list || - (cmd->flags & MP_ALLOW_REPEAT); + if (cmd->def == &mp_cmd_list && cmd->args[0].v.p) + cmd = cmd->args[0].v.p; // list - only 1st cmd is considered + + return (cmd->def->allow_auto_repeat) || (cmd->flags & MP_ALLOW_REPEAT); } bool mp_input_is_scalable_cmd(struct mp_cmd *cmd)