aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2018-04-08 06:13:33 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2018-04-08 06:15:24 +0530
commit48cf378c7ba50f2c44b0fe58ceea7b46e80123fd (patch)
treefceb6624baeab514d97759433db3c8462d05e5c6
parent01e53e1b26b774d28a4f39cd6cf29183a7dc89f2 (diff)
downloadnnn-48cf378c7ba50f2c44b0fe58ceea7b46e80123fd.tar.gz
Prefer VISUAL, if defined over EDITOR
-rw-r--r--README.md2
-rw-r--r--nnn.12
-rw-r--r--nnn.c13
-rw-r--r--nnn.h2
4 files changed, 13 insertions, 6 deletions
diff --git a/README.md b/README.md
index 9651aab..10eb59e 100644
--- a/README.md
+++ b/README.md
@@ -293,7 +293,7 @@ The following abbreviations are used in the detail view:
| atool | list and extract archives |
| vidir from moreutils | batch rename, move, delete dir entries |
| vlock (Linux) | terminal locker |
-| $EDITOR | edit files (fallback vi) |
+| $EDITOR ($VISUAL, if defined) | edit files (fallback vi) |
| $PAGER | page through files (fallback less) |
| $SHELL | spawn a shell, run script (fallback sh) |
diff --git a/nnn.1 b/nnn.1
index 451318a..4e30315 100644
--- a/nnn.1
+++ b/nnn.1
@@ -216,7 +216,7 @@ In this mode it's possible to
.Pp
Pressing \fI^Y\fR again copies the paths to clipboard and exits the multi-copy mode.
.Sh ENVIRONMENT
-The SHELL, EDITOR and PAGER environment variables take precedence
+The SHELL, EDITOR (VISUAL, if defined) and PAGER environment variables take precedence
when dealing with the !, e and p commands respectively.
.Pp
\fBNNN_BMS:\fR bookmark string as \fIkey:location\fR pairs (max 10) separated by
diff --git a/nnn.c b/nnn.c
index 740041d..1c3f7a7 100644
--- a/nnn.c
+++ b/nnn.c
@@ -2038,7 +2038,9 @@ show_help(char *path)
dprintf(fd, "SHELL: %s\n", getenv("SHELL"));
if (getenv("SHLVL"))
dprintf(fd, "SHLVL: %s\n", getenv("SHLVL"));
- if (getenv("EDITOR"))
+ if (getenv("VISUAL"))
+ dprintf(fd, "VISUAL: %s\n", getenv("VISUAL"));
+ else if (getenv("EDITOR"))
dprintf(fd, "EDITOR: %s\n", getenv("EDITOR"));
if (getenv("PAGER"))
dprintf(fd, "PAGER: %s\n", getenv("PAGER"));
@@ -3237,6 +3239,8 @@ nochange:
goto begin;
case SEL_RUNARG:
run = xgetenv(env, run);
+ if ((!run || !run[0]) && (xstrcmp("VISUAL", env) == 0))
+ run = editor ? editor : xgetenv("EDITOR", "vi");
spawn(run, dents[cur].name, NULL, path, F_NORMAL);
break;
#ifdef __linux__
@@ -3396,8 +3400,11 @@ main(int argc, char *argv[])
#endif
/* Edit text in EDITOR, if opted */
- if (getenv("NNN_USE_EDITOR"))
- editor = xgetenv("EDITOR", "vi");
+ if (getenv("NNN_USE_EDITOR")) {
+ editor = xgetenv("VISUAL", NULL);
+ if (!editor)
+ editor = xgetenv("EDITOR", "vi");
+ }
/* Set player if not set already */
if (!player)
diff --git a/nnn.h b/nnn.h
index 680200f..fa92523 100644
--- a/nnn.h
+++ b/nnn.h
@@ -174,7 +174,7 @@ static struct key bindings[] = {
/* Run a custom script */
{ 'R', SEL_RUNSCRIPT, "sh", "SHELL" },
/* Run command with argument */
- { 'e', SEL_RUNARG, "vi", "EDITOR" },
+ { 'e', SEL_RUNARG, "", "VISUAL" },
{ 'p', SEL_RUNARG, "less", "PAGER" },
#ifdef __linux__
/* Lock screen */