The branch, master has been updated
       via  243244d285979e38401560383f6453457078e8de (commit)
       via  497b27dafb7f531db3b82d6bf061279c599e69ae (commit)
      from  ca6d9f799ed776c64348bf9dc0b5092e7a084a57 (commit)

- Log -----------------------------------------------------------------
commit 243244d285979e38401560383f6453457078e8de
Merge: 497b27d ca6d9f7
Author: Nicholas Marriott <nicholas.marri...@gmail.com>
Commit: Nicholas Marriott <nicholas.marri...@gmail.com>

    Merge branch 'master' of ssh://git.code.sf.net/p/tmux/tmux-code

 README            |    2 +-
 TODO              |   59 ++++++++++++++++------------------------------------
 www/index.html.in |    2 +-
 3 files changed, 20 insertions(+), 43 deletions(-)


commit 497b27dafb7f531db3b82d6bf061279c599e69ae
Author: Nicholas Marriott <nicholas.marri...@gmail.com>
Commit: Nicholas Marriott <nicholas.marri...@gmail.com>

    Expand format variables in the run-shell and if-shell shell commands, from
    Thiago Padilha.
---
 cmd-if-shell.c  |   22 +++++++++++++++++++---
 cmd-run-shell.c |   17 ++++++++++++++---
 tmux.1          |   14 +++++++++++++-
 3 files changed, 46 insertions(+), 7 deletions(-)

diff --git a/cmd-if-shell.c b/cmd-if-shell.c
index 6f0b151..02c1997 100644
--- a/cmd-if-shell.c
+++ b/cmd-if-shell.c
@@ -36,8 +36,8 @@ void  cmd_if_shell_free(void *);
 
 const struct cmd_entry cmd_if_shell_entry = {
        "if-shell", "if",
-       "", 2, 3,
-       "shell-command command [command]",
+       "t:", 2, 3,
+       CMD_TARGET_PANE_USAGE " shell-command command [command]",
        0,
        NULL,
        NULL,
@@ -55,7 +55,22 @@ cmd_if_shell_exec(struct cmd *self, struct cmd_ctx *ctx)
 {
        struct args                     *args = self->args;
        struct cmd_if_shell_data        *cdata;
-       const char                      *shellcmd = args->argv[0];
+       const char                      *shellcmd;
+       struct session                  *s;
+       struct winlink                  *wl;
+       struct window_pane              *wp;
+       struct format_tree              *ft;
+
+       wl = cmd_find_pane(ctx, args_get(args, 't'), &s, &wp);
+       if (wl == NULL)
+               return (CMD_RETURN_ERROR);
+
+       ft = format_create();
+       format_session(ft, s);
+       format_winlink(ft, s, wl);
+       format_window_pane(ft, wp);
+       shellcmd = format_expand(ft, args->argv[0]);
+       format_free(ft);
 
        cdata = xmalloc(sizeof *cdata);
        cdata->cmd_if = xstrdup(args->argv[1]);
@@ -68,6 +83,7 @@ cmd_if_shell_exec(struct cmd *self, struct cmd_ctx *ctx)
        cmd_ref_ctx(ctx);
 
        job_run(shellcmd, cmd_if_shell_callback, cmd_if_shell_free, cdata);
+       free(shellcmd);
 
        return (CMD_RETURN_YIELD);      /* don't let client exit */
 }
diff --git a/cmd-run-shell.c b/cmd-run-shell.c
index 9b4c006..7290793 100644
--- a/cmd-run-shell.c
+++ b/cmd-run-shell.c
@@ -75,14 +75,25 @@ cmd_run_shell_exec(struct cmd *self, struct cmd_ctx *ctx)
 {
        struct args                     *args = self->args;
        struct cmd_run_shell_data       *cdata;
-       const char                      *shellcmd = args->argv[0];
+       const char                      *shellcmd;
+       struct session                  *s;
+       struct winlink                  *wl;
        struct window_pane              *wp;
+       struct format_tree              *ft;
 
-       if (cmd_find_pane(ctx, args_get(args, 't'), NULL, &wp) == NULL)
+       wl = cmd_find_pane(ctx, args_get(args, 't'), &s, &wp);
+       if (wl == NULL)
                return (CMD_RETURN_ERROR);
 
+       ft = format_create();
+       format_session(ft, s);
+       format_winlink(ft, s, wl);
+       format_window_pane(ft, wp);
+       shellcmd = format_expand(ft, args->argv[0]);
+       format_free(ft);
+
        cdata = xmalloc(sizeof *cdata);
-       cdata->cmd = xstrdup(args->argv[0]);
+       cdata->cmd = shellcmd;
        cdata->wp_id = wp->id;
 
        cdata->ctx = ctx;
diff --git a/tmux.1 b/tmux.1
index 882a71f..cf33251 100644
--- a/tmux.1
+++ b/tmux.1
@@ -3468,7 +3468,11 @@ Miscellaneous commands are as follows:
 .Bl -tag -width Ds
 .It Ic clock-mode Op Fl t Ar target-pane
 Display a large clock.
-.It Ic if-shell Ar shell-command command Op Ar command
+.It Xo Ic if-shell
+.Op Fl t Ar target-pane
+.Ar shell-command command
+.Op Ar command
+.Xc
 .D1 (alias: Ic if )
 Execute the first
 .Ar command
@@ -3477,6 +3481,10 @@ if
 returns success or the second
 .Ar command
 otherwise.
+Before being executed, shell-command is expanded using the rules specified in 
the
+.Sx FORMATS
+section, including those relevant to
+.Ar target-pane .
 .It Ic lock-server
 .D1 (alias: Ic lock )
 Lock each client individually by running the command specified by the
@@ -3490,6 +3498,10 @@ option.
 Execute
 .Ar shell-command
 in the background without creating a window.
+Before being executed, shell-command is expanded using the rules specified in
+the
+.Sx FORMATS
+section.
 After it finishes, any output to stdout is displayed in copy mode (in the pane
 specified by
 .Fl t


-----------------------------------------------------------------------

Summary of changes:
 cmd-if-shell.c  |   22 +++++++++++++++++++---
 cmd-run-shell.c |   17 ++++++++++++++---
 tmux.1          |   14 +++++++++++++-
 3 files changed, 46 insertions(+), 7 deletions(-)


hooks/post-receive
-- 
tmux

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
tmux-cvs mailing list
tmux-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-cvs

Reply via email to