diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2013-05-31 19:56:06 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2013-05-31 19:56:06 +0000 |
commit | cf2acb329c9737da4b477bbed93142c168266057 (patch) | |
tree | 67404b150cb6f83e4e49ff9ace6b95d8fa92febe /usr.bin | |
parent | a274aa70e92c6fb756e19f5aa421fd27ea342702 (diff) |
Demote the old single-character replacement variables (#S and friends)
to aliases of formats. From Tiago Cunha.
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/tmux/status.c | 63 | ||||
-rw-r--r-- | usr.bin/tmux/tmux.1 | 182 |
2 files changed, 95 insertions, 150 deletions
diff --git a/usr.bin/tmux/status.c b/usr.bin/tmux/status.c index b9fbd56c52b..e48d79cfb3c 100644 --- a/usr.bin/tmux/status.c +++ b/usr.bin/tmux/status.c @@ -1,4 +1,4 @@ -/* $OpenBSD: status.c,v 1.103 2013/03/25 11:43:01 nicm Exp $ */ +/* $OpenBSD: status.c,v 1.104 2013/05/31 19:56:05 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -38,8 +38,7 @@ void status_job_free(void *); void status_job_callback(struct job *); char *status_print( struct client *, struct winlink *, time_t, struct grid_cell *); -void status_replace1(struct client *, struct session *, struct winlink *, - struct window_pane *, char **, char **, char *, size_t, int); +void status_replace1(struct client *, char **, char **, char *, size_t, int); void status_message_callback(int, short, void *); const char *status_prompt_up_history(u_int *); @@ -384,14 +383,12 @@ out: /* Replace a single special sequence (prefixed by #). */ void -status_replace1(struct client *c, struct session *s, struct winlink *wl, - struct window_pane *wp, char **iptr, char **optr, char *out, +status_replace1(struct client *c, char **iptr, char **optr, char *out, size_t outsize, int jobsflag) { - char ch, tmp[256], *ptr, *endptr, *freeptr; + char ch, tmp[256], *ptr, *endptr; size_t ptrlen; long limit; - u_int idx; errno = 0; limit = strtol(*iptr, &endptr, 10); @@ -403,8 +400,6 @@ status_replace1(struct client *c, struct session *s, struct winlink *wl, if (limit <= 0) limit = LONG_MAX; - freeptr = NULL; - switch (*(*iptr)++) { case '(': if (!jobsflag) { @@ -414,45 +409,6 @@ status_replace1(struct client *c, struct session *s, struct winlink *wl, if ((ptr = status_find_job(c, iptr)) == NULL) return; goto do_replace; - case 'D': - xsnprintf(tmp, sizeof tmp, "%%%u", wp->id); - ptr = tmp; - goto do_replace; - case 'H': - if (gethostname(tmp, sizeof tmp) != 0) - fatal("gethostname failed"); - ptr = tmp; - goto do_replace; - case 'h': - if (gethostname(tmp, sizeof tmp) != 0) - fatal("gethostname failed"); - if ((ptr = strchr(tmp, '.')) != NULL) - *ptr = '\0'; - ptr = tmp; - goto do_replace; - case 'I': - xsnprintf(tmp, sizeof tmp, "%d", wl->idx); - ptr = tmp; - goto do_replace; - case 'P': - if (window_pane_index(wp, &idx) != 0) - fatalx("index not found"); - xsnprintf(tmp, sizeof tmp, "%u", idx); - ptr = tmp; - goto do_replace; - case 'S': - ptr = s->name; - goto do_replace; - case 'T': - ptr = wp->base.title; - goto do_replace; - case 'W': - ptr = wl->window->name; - goto do_replace; - case 'F': - ptr = window_printable_flags(s, wl); - freeptr = ptr; - goto do_replace; case '[': /* * Embedded style, handled at display time. Leave present and @@ -466,6 +422,10 @@ status_replace1(struct client *c, struct session *s, struct winlink *wl, case '#': *(*optr)++ = '#'; break; + default: + xsnprintf(tmp, sizeof tmp, "#%c", *(*iptr - 1)); + ptr = tmp; + goto do_replace; } return; @@ -476,14 +436,12 @@ do_replace: ptrlen = limit; if (*optr + ptrlen >= out + outsize - 1) - goto out; + return; while (ptrlen > 0 && *ptr != '\0') { *(*optr)++ = *ptr++; ptrlen--; } -out: - free(freeptr); return; skip_to: @@ -532,8 +490,7 @@ status_replace(struct client *c, struct session *s, struct winlink *wl, *optr++ = ch; continue; } - status_replace1( - c, s, wl, wp, &iptr, &optr, out, sizeof out, jobsflag); + status_replace1(c, &iptr, &optr, out, sizeof out, jobsflag); } *optr = '\0'; diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1 index a5e7ecdb3d8..e6dc6cca6e4 100644 --- a/usr.bin/tmux/tmux.1 +++ b/usr.bin/tmux/tmux.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: tmux.1,v 1.358 2013/05/31 19:46:42 nicm Exp $ +.\" $OpenBSD: tmux.1,v 1.359 2013/05/31 19:56:05 nicm Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> .\" @@ -2438,27 +2438,18 @@ environment variables are set and contain the string .It Ic status-left Ar string Display .Ar string -to the left of the status bar. +(by default the session name) to the left of the status bar. .Ar string will be passed through .Xr strftime 3 -before being used. -By default, the session name is shown. -.Ar string -may contain any of the following special character sequences: +and formats (see +.Sx FORMATS Ns ) +will be expanded. +It may also contain any of the following special character sequences: .Bl -column "Character pair" "Replaced with" -offset indent .It Sy "Character pair" Ta Sy "Replaced with" .It Li "#(shell-command)" Ta "First line of the command's output" .It Li "#[attributes]" Ta "Colour or attribute change" -.It Li "#H" Ta "Hostname of local host" -.It Li "#h" Ta "Hostname of local host without the domain name" -.It Li "#F" Ta "Current window flag" -.It Li "#I" Ta "Current window index" -.It Li "#D" Ta "Current pane unique identifier" -.It Li "#P" Ta "Current pane index" -.It Li "#S" Ta "Session name" -.It Li "#T" Ta "Current pane title" -.It Li "#W" Ta "Current window name" .It Li "##" Ta "A literal" Ql # .El .Pp @@ -3003,16 +2994,13 @@ flag with a .Ar format argument. This is a string which controls the output format of the command. -Special character sequences are replaced as documented under the -.Ic status-left -option and an additional long form is accepted. Replacement variables are enclosed in .Ql #{ and .Ql } , for example -.Ql #{session_name} -is equivalent to +.Ql #{session_name} . +Some variables also have an shorter alias such as .Ql #S . Conditionals are also accepted by prefixing with .Ql \&? @@ -3028,83 +3016,83 @@ if the session is attached and the string if it is unattached. .Pp The following variables are available, where appropriate: -.Bl -column "session_created_string" "Replaced with" -offset indent -.It Sy "Variable name" Ta Sy "Replaced with" -.It Li "alternate_on" Ta "If pane is in alternate screen" -.It Li "alternate_saved_x" Ta "Saved cursor X in alternate screen" -.It Li "alternate_saved_y" Ta "Saved cursor Y in alternate screen" -.It Li "buffer_sample" Ta "First 50 characters from the specified buffer" -.It Li "buffer_size" Ta "Size of the specified buffer in bytes" -.It Li "client_activity" Ta "Integer time client last had activity" -.It Li "client_activity_string" Ta "String time client last had activity" -.It Li "client_created" Ta "Integer time client created" -.It Li "client_created_string" Ta "String time client created" -.It Li "client_cwd" Ta "Working directory of client" -.It Li "client_height" Ta "Height of client" -.It Li "client_last_session" Ta "Name of the client's last session" -.It Li "client_prefix" Ta "1 if prefix key has been pressed" -.It Li "client_readonly" Ta "1 if client is readonly" -.It Li "client_session" Ta "Name of the client's session" -.It Li "client_termname" Ta "Terminal name of client" -.It Li "client_tty" Ta "Pseudo terminal of client" -.It Li "client_utf8" Ta "1 if client supports utf8" -.It Li "client_width" Ta "Width of client" -.It Li "cursor_flag" Ta "Pane cursor flag" -.It Li "cursor_x" Ta "Cursor X position in pane" -.It Li "cursor_y" Ta "Cursor Y position in pane" -.It Li "history_bytes" Ta "Number of bytes in window history" -.It Li "history_limit" Ta "Maximum window history lines" -.It Li "history_size" Ta "Size of history in bytes" -.It Li "host" Ta "Hostname of local host" -.It Li "host_short" Ta "Hostname of local host (no domain name)" -.It Li "insert_flag" Ta "Pane insert flag" -.It Li "keypad_cursor_flag" Ta "Pane keypad cursor flag" -.It Li "keypad_flag" Ta "Pane keypad flag" -.It Li "line" Ta "Line number in the list" -.It Li "mouse_any_flag" Ta "Pane mouse any flag" -.It Li "mouse_button_flag" Ta "Pane mouse button flag" -.It Li "mouse_standard_flag" Ta "Pane mouse standard flag" -.It Li "mouse_utf8_flag" Ta "Pane mouse UTF-8 flag" -.It Li "pane_active" Ta "1 if active pane" -.It Li "pane_current_command" Ta "Current command if available" -.It Li "pane_current_path" Ta "Current path if available" -.It Li "pane_dead" Ta "1 if pane is dead" -.It Li "pane_height" Ta "Height of pane" -.It Li "pane_id" Ta "Unique pane ID" -.It Li "pane_in_mode" Ta "If pane is in a mode" -.It Li "pane_index" Ta "Index of pane" -.It Li "pane_pid" Ta "PID of first process in pane" -.It Li "pane_start_command" Ta "Command pane started with" -.It Li "pane_start_path" Ta "Path pane started with" -.It Li "pane_tabs" Ta "Pane tab positions" -.It Li "pane_title" Ta "Title of pane" -.It Li "pane_tty" Ta "Pseudo terminal of pane" -.It Li "pane_width" Ta "Width of pane" -.It Li "saved_cursor_x" Ta "Saved cursor X in pane" -.It Li "saved_cursor_y" Ta "Saved cursor Y in pane" -.It Li "scroll_region_lower" Ta "Bottom of scroll region in pane" -.It Li "scroll_region_upper" Ta "Top of scroll region in pane" -.It Li "session_attached" Ta "1 if session attached" -.It Li "session_created" Ta "Integer time session created" -.It Li "session_created_string" Ta "String time session created" -.It Li "session_group" Ta "Number of session group" -.It Li "session_grouped" Ta "1 if session in a group" -.It Li "session_height" Ta "Height of session" -.It Li "session_id" Ta "Unique session ID" -.It Li "session_name" Ta "Name of session" -.It Li "session_width" Ta "Width of session" -.It Li "session_windows" Ta "Number of windows in session" -.It Li "window_active" Ta "1 if window active" -.It Li "window_find_matches" Ta "Matched data from the find-window command if available" -.It Li "window_flags" Ta "Window flags" -.It Li "window_height" Ta "Height of window" -.It Li "window_id" Ta "Unique window ID" -.It Li "window_index" Ta "Index of window" -.It Li "window_layout" Ta "Window layout description" -.It Li "window_name" Ta "Name of window" -.It Li "window_panes" Ta "Number of panes in window" -.It Li "window_width" Ta "Width of window" -.It Li "wrap_flag" Ta "Pane wrap flag" +.Bl -column "XXXXXXXXXXXXXXXXXXX" "XXXXX" +.It Sy "Variable name" Ta Sy "Alias" Ta Sy "Replaced with" +.It Li "alternate_on" Ta "" Ta "If pane is in alternate screen" +.It Li "alternate_saved_x" Ta "" Ta "Saved cursor X in alternate screen" +.It Li "alternate_saved_y" Ta "" Ta "Saved cursor Y in alternate screen" +.It Li "buffer_sample" Ta "" Ta "First 50 characters from buffer" +.It Li "buffer_size" Ta "" Ta "Size of the specified buffer in bytes" +.It Li "client_activity" Ta "" Ta "Integer time client last had activity" +.It Li "client_activity_string" Ta "" Ta "String time client last had activity" +.It Li "client_created" Ta "" Ta "Integer time client created" +.It Li "client_created_string" Ta "" Ta "String time client created" +.It Li "client_cwd" Ta "" Ta "Working directory of client" +.It Li "client_height" Ta "" Ta "Height of client" +.It Li "client_last_session" Ta "" Ta "Name of the client's last session" +.It Li "client_prefix" Ta "" Ta "1 if prefix key has been pressed" +.It Li "client_readonly" Ta "" Ta "1 if client is readonly" +.It Li "client_session" Ta "" Ta "Name of the client's session" +.It Li "client_termname" Ta "" Ta "Terminal name of client" +.It Li "client_tty" Ta "" Ta "Pseudo terminal of client" +.It Li "client_utf8" Ta "" Ta "1 if client supports utf8" +.It Li "client_width" Ta "" Ta "Width of client" +.It Li "cursor_flag" Ta "" Ta "Pane cursor flag" +.It Li "cursor_x" Ta "" Ta "Cursor X position in pane" +.It Li "cursor_y" Ta "" Ta "Cursor Y position in pane" +.It Li "history_bytes" Ta "" Ta "Number of bytes in window history" +.It Li "history_limit" Ta "" Ta "Maximum window history lines" +.It Li "history_size" Ta "" Ta "Size of history in bytes" +.It Li "host" Ta "#H" Ta "Hostname of local host" +.It Li "host_short" Ta "#h" Ta "Hostname of local host (no domain name)" +.It Li "insert_flag" Ta "" Ta "Pane insert flag" +.It Li "keypad_cursor_flag" Ta "" Ta "Pane keypad cursor flag" +.It Li "keypad_flag" Ta "" Ta "Pane keypad flag" +.It Li "line" Ta "" Ta "Line number in the list" +.It Li "mouse_any_flag" Ta "" Ta "Pane mouse any flag" +.It Li "mouse_button_flag" Ta "" Ta "Pane mouse button flag" +.It Li "mouse_standard_flag" Ta "" Ta "Pane mouse standard flag" +.It Li "mouse_utf8_flag" Ta "" Ta "Pane mouse UTF-8 flag" +.It Li "pane_active" Ta "" Ta "1 if active pane" +.It Li "pane_current_command" Ta "" Ta "Current command if available" +.It Li "pane_current_path" Ta "" Ta "Current path if available" +.It Li "pane_dead" Ta "" Ta "1 if pane is dead" +.It Li "pane_height" Ta "" Ta "Height of pane" +.It Li "pane_id" Ta "#D" Ta "Unique pane ID" +.It Li "pane_in_mode" Ta "" Ta "If pane is in a mode" +.It Li "pane_index" Ta "#P" Ta "Index of pane" +.It Li "pane_pid" Ta "" Ta "PID of first process in pane" +.It Li "pane_start_command" Ta "" Ta "Command pane started with" +.It Li "pane_start_path" Ta "" Ta "Path pane started with" +.It Li "pane_tabs" Ta "" Ta "Pane tab positions" +.It Li "pane_title" Ta "#T" Ta "Title of pane" +.It Li "pane_tty" Ta "" Ta "Pseudo terminal of pane" +.It Li "pane_width" Ta "" Ta "Width of pane" +.It Li "saved_cursor_x" Ta "" Ta "Saved cursor X in pane" +.It Li "saved_cursor_y" Ta "" Ta "Saved cursor Y in pane" +.It Li "scroll_region_lower" Ta "" Ta "Bottom of scroll region in pane" +.It Li "scroll_region_upper" Ta "" Ta "Top of scroll region in pane" +.It Li "session_attached" Ta "" Ta "1 if session attached" +.It Li "session_created" Ta "" Ta "Integer time session created" +.It Li "session_created_string" Ta "" Ta "String time session created" +.It Li "session_group" Ta "" Ta "Number of session group" +.It Li "session_grouped" Ta "" Ta "1 if session in a group" +.It Li "session_height" Ta "" Ta "Height of session" +.It Li "session_id" Ta "" Ta "Unique session ID" +.It Li "session_name" Ta "#S" Ta "Name of session" +.It Li "session_width" Ta "" Ta "Width of session" +.It Li "session_windows" Ta "" Ta "Number of windows in session" +.It Li "window_active" Ta "" Ta "1 if window active" +.It Li "window_find_matches" Ta "" Ta "Matched data from the find-window" +.It Li "window_flags" Ta "#F" Ta "Window flags" +.It Li "window_height" Ta "" Ta "Height of window" +.It Li "window_id" Ta "" Ta "Unique window ID" +.It Li "window_index" Ta "#I" Ta "Index of window" +.It Li "window_layout" Ta "" Ta "Window layout description" +.It Li "window_name" Ta "#W" Ta "Name of window" +.It Li "window_panes" Ta "" Ta "Number of panes in window" +.It Li "window_width" Ta "" Ta "Width of window" +.It Li "wrap_flag" Ta "" Ta "Pane wrap flag" .El .Sh NAMES AND TITLES .Nm |