Hi
Thanks but can you do the same for the if-shell shell-command as well?
In the manpage you need to markup FORMATS as .Sx FORMATS (there are some
examples already in the file).
On Sat, Feb 23, 2013 at 01:45:43PM -0300, Thiago Padilha wrote:
> Let's say I want to write a shell script that operates on the
> currently focused pane, to be executed with 'run-shell'. The only way
> to do that for now is to call 'tmux list-panes' inside the script and
> parse the output to determine the active pane. This patches modifies
> run-shell to expand tmux #{variables} in the command string, so data
> about tmux can be passed to run-shell commands.
>
> This is implemented in Thomas Adams hook-support branch, but as shown
> above, it is useful without hooks support.
>
> Since Thomas can't foresee when he will merge hook-support, and I
> would like to see this feature in the next version, here it goes.
>
> ---
> cmd-run-shell.c | 19 +++++++++++++++----
> tmux.1 | 2 ++
> 2 files changed, 17 insertions(+), 4 deletions(-)
> diff --git a/cmd-run-shell.c b/cmd-run-shell.c
> index 9b4c006..d25c5e6 100644
> --- a/cmd-run-shell.c
> +++ b/cmd-run-shell.c
> @@ -75,20 +75,31 @@ 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]);
> +
> cdata = xmalloc(sizeof *cdata);
> - cdata->cmd = xstrdup(args->argv[0]);
> + cdata->cmd = xstrdup(shellcmd);
> cdata->wp_id = wp->id;
> -
> cdata->ctx = ctx;
> cmd_ref_ctx(ctx);
>
> job_run(shellcmd, cmd_run_shell_callback, cmd_run_shell_free, cdata);
> + format_free(ft);
> + free(shellcmd);
>
> return (CMD_RETURN_YIELD); /* don't let client exit */
> }
> diff --git a/tmux.1 b/tmux.1
> index 882a71f..ada931a 100644
> --- a/tmux.1
> +++ b/tmux.1
> @@ -3490,6 +3490,8 @@ option.
> Execute
> .Ar shell-command
> in the background without creating a window.
> +The command string is expanded using the rules specified in the FORMATS
> +section.
> After it finishes, any output to stdout is displayed in copy mode (in the
> pane
> specified by
> .Fl t
> ------------------------------------------------------------------------------
> 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-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/tmux-users
------------------------------------------------------------------------------
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-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users