diff options
Diffstat (limited to 'format.c')
-rw-r--r-- | format.c | 23 |
1 files changed, 22 insertions, 1 deletions
@@ -17,6 +17,7 @@ */ #include <sys/types.h> +#include <sys/param.h> #include <sys/wait.h> #include <ctype.h> @@ -61,6 +62,9 @@ static void format_cb_history_bytes(struct format_tree *, static void format_cb_pane_tabs(struct format_tree *, struct format_entry *); +static void format_cb_current_path(struct format_tree *, + struct format_entry *); + static char *format_find(struct format_tree *, const char *, int); static void format_add_cb(struct format_tree *, const char *, format_cb); static void format_add_tv(struct format_tree *, const char *, @@ -489,7 +493,7 @@ format_cb_current_command(struct format_tree *ft, struct format_entry *fe) if (wp == NULL) return; - cmd = get_proc_name(wp->fd, wp->tty); + cmd = osdep_get_name(wp->fd, wp->tty); if (cmd == NULL || *cmd == '\0') { free(cmd); cmd = cmd_stringify_argv(wp->argc, wp->argv); @@ -502,6 +506,21 @@ format_cb_current_command(struct format_tree *ft, struct format_entry *fe) free(cmd); } +/* Callback for pane_current_path. */ +void +format_cb_current_path(struct format_tree *ft, struct format_entry *fe) +{ + struct window_pane *wp = ft->wp; + char *cwd; + + if (wp == NULL) + return; + + cwd = osdep_get_cwd(wp->fd); + if (cwd != NULL) + fe->value = xstrdup(cwd); +} + /* Callback for history_bytes. */ static void format_cb_history_bytes(struct format_tree *ft, struct format_entry *fe) @@ -587,6 +606,7 @@ format_create(struct client *c, struct cmdq_item *item, int tag, int flags) ft->tag = tag; ft->flags = flags; + format_add(ft, "version", "%s", VERSION); format_add_cb(ft, "host", format_cb_host); format_add_cb(ft, "host_short", format_cb_host_short); format_add_cb(ft, "pid", format_cb_pid); @@ -1353,6 +1373,7 @@ format_defaults_pane(struct format_tree *ft, struct window_pane *wp) format_add(ft, "pane_pid", "%ld", (long) wp->pid); format_add_cb(ft, "pane_start_command", format_cb_start_command); format_add_cb(ft, "pane_current_command", format_cb_current_command); + format_add_cb(ft, "pane_current_path", format_cb_current_path); format_add(ft, "cursor_x", "%u", wp->base.cx); format_add(ft, "cursor_y", "%u", wp->base.cy); |