summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2010-11-29 19:45:59 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2010-11-29 19:45:59 +0000
commit8714670713169b2fa3189575478e18b0c539d8da (patch)
tree00b992f9b24e90326528cfa4dc087a969dd321a5
parent6ec1c645ce48e15709056d33e572452df1f73ac3 (diff)
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.
-rw-r--r--usr.bin/tmux/tmux.120
-rw-r--r--usr.bin/tmux/tmux.c18
2 files changed, 29 insertions, 9 deletions
diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1
index 2f45f26dd95..0b53cd6649d 100644
--- a/usr.bin/tmux/tmux.1
+++ b/usr.bin/tmux/tmux.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: tmux.1,v 1.190 2010/11/14 09:04:22 nicm Exp $
+.\" $OpenBSD: tmux.1,v 1.191 2010/11/29 19:45:58 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
diff --git a/usr.bin/tmux/tmux.c b/usr.bin/tmux/tmux.c
index 995b111c03b..1f80ed3c581 100644
--- a/usr.bin/tmux/tmux.c
+++ b/usr.bin/tmux/tmux.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.c,v 1.93 2010/11/11 21:06:09 nicm Exp $ */
+/* $OpenBSD: tmux.c,v 1.94 2010/11/29 19:45:58 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -231,13 +231,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;
#ifdef DEBUG
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) {
@@ -359,7 +359,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);
@@ -400,7 +399,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", "");
@@ -428,6 +426,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");