summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas F <ovdev@fratti.ch>2018-04-04 17:12:18 +0200
committerwm4 <1387750+wm4@users.noreply.github.com>2019-09-22 15:04:58 +0200
commit4247a54d98dd386056308d6d275a35a7ad77becb (patch)
tree51c1303b98952f2bf9aa99fcca8d1bc1e934c811
parent4cda63bd14c2087eb372fbb282fb47aea77a7923 (diff)
downloadmpv-4247a54d98dd386056308d6d275a35a7ad77becb.tar.bz2
mpv-4247a54d98dd386056308d6d275a35a7ad77becb.tar.xz
command: add expand-path to expand mpv paths
The question came up on how a client would figure out where screenshot-directory saved its screenshots if it contained mpv-specific expansions. This command should remedy the situation by providing a way for the client to ask mpv to do an expansion.
-rw-r--r--DOCS/man/input.rst12
-rw-r--r--player/command.c12
2 files changed, 24 insertions, 0 deletions
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index 4aba60cd8b..a2d5f517c5 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -529,6 +529,18 @@ Remember to quote string arguments in input.conf (see `Flat command syntax`_).
used only through the client API or from a script using
``mp.command_native``. (see `Property Expansion`_).
+``expand-path "<string>"``
+ Expand a path's double-tilde placeholders into a platform-specific path.
+ As ``expand-text``, this can only be used through the client API or from
+ a script using ``mp.command_native``.
+
+ .. admonition:: Example
+
+ ``mp.osd_message(mp.command_native({"expand-path", "~~home/"}))``
+
+ This line of Lua would show the location of the user's mpv
+ configuration directory on the OSD.
+
``show-progress``
Show the progress bar, the elapsed time and the total duration of the file
on the OSD.
diff --git a/player/command.c b/player/command.c
index 7db7c44ae8..d30c84d82d 100644
--- a/player/command.c
+++ b/player/command.c
@@ -4967,6 +4967,17 @@ static void cmd_expand_text(void *p)
};
}
+static void cmd_expand_path(void *p)
+{
+ struct mp_cmd_ctx *cmd = p;
+ struct MPContext *mpctx = cmd->mpctx;
+
+ cmd->result = (mpv_node){
+ .format = MPV_FORMAT_STRING,
+ .u.string = mp_get_user_path(NULL, mpctx->global, cmd->args[0].v.s)
+ };
+}
+
static void cmd_loadfile(void *p)
{
struct mp_cmd_ctx *cmd = p;
@@ -5811,6 +5822,7 @@ const struct mp_cmd_def mp_cmds[] = {
OPT_INT("level", v.i, MP_CMD_OPT_ARG), },
.allow_auto_repeat = true},
{ "expand-text", cmd_expand_text, { OPT_STRING("text", v.s, 0) } },
+ { "expand-path", cmd_expand_path, { OPT_STRING("text", v.s, 0) } },
{ "show-progress", cmd_show_progress, .allow_auto_repeat = true},
{ "sub-add", cmd_track_add,