PatchSet 790

Date: 2010/11/29 19:45:58
Author: nicm
Branch: HEAD
Tag: (none)
Log:
If VISUAL or EDITOR contains "vi", configure mode-keys and status-keys
to vi.

Based on a diff from martynas@, previously requested by a couple of
other people.

Members:
        tmux.1:1.190->1.191
        tmux.c:1.93->1.94
This commit is contained in:
Nicholas Marriott 2010-12-06 21:59:42 +00:00
parent e75187310d
commit d0adcbc98a
2 changed files with 29 additions and 9 deletions

20
tmux.1
View File

@ -1,4 +1,4 @@
.\" $Id: tmux.1,v 1.272 2010-12-06 21:55:42 nicm Exp $
.\" $Id: tmux.1,v 1.273 2010-12-06 21:59:42 nicm Exp $
.\"
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
.\"
@ -14,7 +14,7 @@
.\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
.\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.Dd $Mdocdate: November 14 2010 $
.Dd $Mdocdate: November 29 2010 $
.Dt TMUX 1
.Os
.Sh NAME
@ -1852,7 +1852,12 @@ or right justified.
.Xc
Use vi or emacs-style
key bindings in the status line, for example at the command prompt.
Defaults to emacs.
The default is emacs, unless the
.Ev VISUAL
or
.Ev EDITOR
environment variables are set and contain the string
.Ql vi .
.It Ic status-left Ar string
Display
.Ar string
@ -2140,7 +2145,14 @@ Set window modes foreground colour.
.Op Ic vi | emacs
.Xc
Use vi or emacs-style key bindings in copy and choice modes.
Key bindings default to emacs.
As with the
.Ic status-keys
option, the default is emacs, unless
.Ev VISUAL
or
.Ev EDITOR
contains
.Ql vi .
.Pp
.It Xo Ic mode-mouse
.Op Ic on | off

18
tmux.c
View File

@ -1,4 +1,4 @@
/* $Id: tmux.c,v 1.222 2010-12-06 21:53:00 nicm Exp $ */
/* $Id: tmux.c,v 1.223 2010-12-06 21:59:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -234,13 +234,13 @@ main(int argc, char **argv)
struct options *oo, *so, *wo;
struct keylist *keylist;
char *s, *path, *label, *home, **var;
int opt, flags, quiet = 0;
int opt, flags, quiet, keys;
#if defined(DEBUG) && defined(__OpenBSD__)
malloc_options = (char *) "AFGJPX";
#endif
flags = 0;
quiet = flags = 0;
label = path = NULL;
login_shell = (**argv == '-');
while ((opt = getopt(argc, argv, "28c:df:lL:qS:uUv")) != -1) {
@ -362,7 +362,6 @@ main(int argc, char **argv)
options_set_number(so, "status-fg", 0);
options_set_number(so, "status-interval", 15);
options_set_number(so, "status-justify", 0);
options_set_number(so, "status-keys", MODEKEY_EMACS);
options_set_string(so, "status-left", "[#S]");
options_set_number(so, "status-left-attr", 0);
options_set_number(so, "status-left-bg", 8);
@ -403,7 +402,6 @@ main(int argc, char **argv)
options_set_number(wo, "mode-attr", 0);
options_set_number(wo, "mode-bg", 3);
options_set_number(wo, "mode-fg", 0);
options_set_number(wo, "mode-keys", MODEKEY_EMACS);
options_set_number(wo, "mode-mouse", 0);
options_set_number(wo, "monitor-activity", 0);
options_set_string(wo, "monitor-content", "%s", "");
@ -431,6 +429,16 @@ main(int argc, char **argv)
options_set_number(wo, "utf8", 0);
}
keys = MODEKEY_EMACS;
if ((s = getenv("VISUAL")) != NULL || (s = getenv("EDITOR")) != NULL) {
if (strrchr(s, '/') != NULL)
s = strrchr(s, '/') + 1;
if (strstr(s, "vi") != NULL)
keys = MODEKEY_VI;
}
options_set_number(so, "status-keys", keys);
options_set_number(wo, "mode-keys", keys);
/* Locate the configuration file. */
if (cfg_file == NULL) {
home = getenv("HOME");