From f1efd6b4e707d449b15f621dce80625a9720ffbb Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Sat, 18 Jul 2009 11:05:13 +0000 Subject: [PATCH] If -u is specified or UTF-8 is otherwise detected when the server is started, enable the utf8 and status-utf8 optons. While here, note in the man page that the server is started with the first session and exits when none remain. --- tmux.1 | 14 ++++++++++++-- tmux.c | 44 +++++++++++++++++++++++++------------------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/tmux.1 b/tmux.1 index 5dc270f0..0551fc29 100644 --- a/tmux.1 +++ b/tmux.1 @@ -1,4 +1,4 @@ -.\" $Id: tmux.1,v 1.118 2009-07-17 18:32:54 tcunha Exp $ +.\" $Id: tmux.1,v 1.119 2009-07-18 11:05:13 nicm Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott .\" @@ -36,11 +36,13 @@ controlled from a single terminal. .Pp .Nm runs as a server-client system. -A server is created automatically when necessary and holds a number of +A server holds a number of .Em sessions , each of which may have a number of .Em windows linked to it. +A server is started automatically when the first session is created and exits +when all the sessions it contains are destroyed. A window may be split on screen into one or more .Em panes , each of which is a separate terminal. @@ -123,6 +125,14 @@ This is not always correct: the flag explicitly informs .Nm that UTF-8 is supported. +.Pp +If the server is started from a client passed +.Fl u +or where UTF-8 is detected, the +.Ic utf8 +and +.Ic status-utf8 +options are enabled in the global window and session options respectively. .It Fl v Request verbose logging. This option may be specified multiple times for increasing verbosity. diff --git a/tmux.c b/tmux.c index b24c8626..c1a7f5f3 100644 --- a/tmux.c +++ b/tmux.c @@ -1,4 +1,4 @@ -/* $Id: tmux.c,v 1.142 2009-07-12 17:07:58 nicm Exp $ */ +/* $Id: tmux.c,v 1.143 2009-07-18 11:05:13 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -275,6 +275,22 @@ main(int argc, char **argv) log_open_tty(debug_level); siginit(); + if (!(flags & IDENTIFY_UTF8)) { + /* + * If the user has set whichever of LC_ALL, LC_CTYPE or LANG + * exist (in that order) to contain UTF-8, it is a safe + * assumption that either they are using a UTF-8 terminal, or + * if not they know that output from UTF-8-capable programs may + * be wrong. + */ + if ((s = getenv("LC_ALL")) == NULL) { + if ((s = getenv("LC_CTYPE")) == NULL) + s = getenv("LANG"); + } + if (s != NULL && strcasestr(s, "UTF-8") != NULL) + flags |= IDENTIFY_UTF8; + } + options_init(&global_s_options, NULL); options_set_number(&global_s_options, "bell-action", BELL_ANY); options_set_number(&global_s_options, "buffer-limit", 9); @@ -301,7 +317,10 @@ main(int argc, char **argv) options_set_string(&global_s_options, "status-left", "[#S]"); options_set_string( &global_s_options, "status-right", "\"#24T\" %%H:%%M %%d-%%b-%%y"); - options_set_number(&global_s_options, "status-utf8", 0); + if (flags & IDENTIFY_UTF8) + options_set_number(&global_s_options, "status-utf8", 1); + else + options_set_number(&global_s_options, "status-utf8", 0); options_init(&global_w_options, NULL); options_set_number(&global_w_options, "aggressive-resize", 0); @@ -318,29 +337,16 @@ main(int argc, char **argv) options_set_number(&global_w_options, "mode-keys", MODEKEY_EMACS); options_set_number(&global_w_options, "monitor-activity", 0); options_set_string(&global_w_options, "monitor-content", "%s", ""); - options_set_number(&global_w_options, "utf8", 0); + if (flags & IDENTIFY_UTF8) + options_set_number(&global_w_options, "utf8", 1); + else + options_set_number(&global_w_options, "utf8", 0); options_set_number(&global_w_options, "window-status-attr", 0); options_set_number(&global_w_options, "window-status-bg", 8); options_set_number(&global_w_options, "window-status-fg", 8); options_set_number(&global_w_options, "xterm-keys", 0); options_set_number(&global_w_options, "remain-on-exit", 0); - if (!(flags & IDENTIFY_UTF8)) { - /* - * If the user has set whichever of LC_ALL, LC_CTYPE or LANG - * exist (in that order) to contain UTF-8, it is a safe - * assumption that either they are using a UTF-8 terminal, or - * if not they know that output from UTF-8-capable programs may - * be wrong. - */ - if ((s = getenv("LC_ALL")) == NULL) { - if ((s = getenv("LC_CTYPE")) == NULL) - s = getenv("LANG"); - } - if (s != NULL && strcasestr(s, "UTF-8") != NULL) - flags |= IDENTIFY_UTF8; - } - if (cfg_file == NULL) { home = getenv("HOME"); if (home == NULL || *home == '\0') {