summaryrefslogtreecommitdiffstats
path: root/format.c
diff options
context:
space:
mode:
Diffstat (limited to 'format.c')
-rw-r--r--format.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/format.c b/format.c
index 133ab779..6659c577 100644
--- a/format.c
+++ b/format.c
@@ -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);