diff options
author | Guido Cella <guido@guidocella.xyz> | 2024-01-14 21:36:32 +0100 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2024-02-04 15:12:02 +0000 |
commit | 4ab521f08010329701885d4e383a6de77589a389 (patch) | |
tree | c1a499c1778351b837c072cd01a75af113cd5312 | |
parent | 68e3412feeab5c8b0c70d5799c3721532af85c35 (diff) | |
download | mpv-4ab521f08010329701885d4e383a6de77589a389.tar.bz2 mpv-4ab521f08010329701885d4e383a6de77589a389.tar.xz |
command: add load-input-conf
This can be used to auto reload the input configuration file, e.g. in
vim:
autocmd BufWritePost ~/.config/mpv/input.conf silent !echo load-input-conf %:p | socat - /tmp/mpvsocket
Partially fixes #6362.
Additionally this can be used as a replacement for deprecated input
sections if they are ever actually removed. For example, if you want to
define different bindings for images, you can load-input-conf an
input.conf for images, and load the original again when switching to a
video. Though currently you would have to redefine builtin bindings that
were overwritten with image ones in the default input.conf.
-rw-r--r-- | DOCS/interface-changes.rst | 1 | ||||
-rw-r--r-- | DOCS/man/input.rst | 5 | ||||
-rw-r--r-- | input/input.c | 8 | ||||
-rw-r--r-- | input/input.h | 4 | ||||
-rw-r--r-- | player/command.c | 11 |
5 files changed, 29 insertions, 0 deletions
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst index 635dedfc74..9055ca53a2 100644 --- a/DOCS/interface-changes.rst +++ b/DOCS/interface-changes.rst @@ -43,6 +43,7 @@ Interface changes - remove `--term-remaining-playtime` option - change fallback deinterlace to bwdif - add the command `load-config-file` + - add the command `load-input-conf` --- mpv 0.37.0 --- - `--save-position-on-quit` and its associated commands now store state files in %LOCALAPPDATA% instead of %APPDATA% directory by default on Windows. diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index 74c3793bcf..d0d5970176 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -1341,6 +1341,11 @@ Input Commands that are Possibly Subject to Change was already included, its previous options are not reset before it is reparsed. +``load-input-conf <filename>`` + Load an input configuration file, similar to the ``--input-conf`` option. If + the file was already included, its previous bindings are not reset before it + is reparsed. + ``load-script <filename>`` Load a script, similar to the ``--script`` option. Whether this waits for the script to finish initialization or not changed multiple times, and the diff --git a/input/input.c b/input/input.c index 4c8d8211db..c09eccf193 100644 --- a/input/input.c +++ b/input/input.c @@ -1395,6 +1395,14 @@ void mp_input_load_config(struct input_ctx *ictx) input_unlock(ictx); } +bool mp_input_load_config_file(struct input_ctx *ictx, char *file) +{ + input_lock(ictx); + bool result = parse_config_file(ictx, file); + input_unlock(ictx); + return result; +} + static void clear_queue(struct cmd_queue *queue) { while (queue->first) { diff --git a/input/input.h b/input/input.h index cfc9480342..7f6707eeca 100644 --- a/input/input.h +++ b/input/input.h @@ -178,8 +178,12 @@ struct input_ctx *mp_input_init(struct mpv_global *global, void (*wakeup_cb)(void *ctx), void *wakeup_ctx); +// Load the configured input.conf files. void mp_input_load_config(struct input_ctx *ictx); +// Load a specific input.conf file. +bool mp_input_load_config_file(struct input_ctx *ictx, char *file); + void mp_input_update_opts(struct input_ctx *ictx); void mp_input_uninit(struct input_ctx *ictx); diff --git a/player/command.c b/player/command.c index 1ad7868a7f..f84806ae52 100644 --- a/player/command.c +++ b/player/command.c @@ -6288,6 +6288,15 @@ static void cmd_load_config_file(void *p) mp_notify_property(mpctx, "profile-list"); } +static void cmd_load_input_conf(void *p) +{ + struct mp_cmd_ctx *cmd = p; + struct MPContext *mpctx = cmd->mpctx; + + char *config_file = cmd->args[0].v.s; + cmd->success = mp_input_load_config_file(mpctx->input, config_file); +} + static void cmd_load_script(void *p) { struct mp_cmd_ctx *cmd = p; @@ -6827,6 +6836,8 @@ const struct mp_cmd_def mp_cmds[] = { { "load-config-file", cmd_load_config_file, {{"filename", OPT_STRING(v.s)}} }, + { "load-input-conf", cmd_load_input_conf, {{"filename", OPT_STRING(v.s)}} }, + { "load-script", cmd_load_script, {{"filename", OPT_STRING(v.s)}} }, { "dump-cache", cmd_dump_cache, { {"start", OPT_TIME(v.d), |