diff --git a/README.md b/README.md index 4ebec8ba..ae36f607 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,7 @@ Right, Enter, l, ^M | Open file or enter dir p | Open entry in PAGER (fallback less) ^K | Invoke file path copier ^L | Force a redraw, exit filter prompt - ? | Toggle help screen + ? | Toggle help and settings screen Q | Quit and change directory q, ^Q | Quit ``` diff --git a/nnn.1 b/nnn.1 index e73ecd5b..303d6302 100644 --- a/nnn.1 +++ b/nnn.1 @@ -88,7 +88,7 @@ Invoke file path copier .It Ic ^L Force a redraw, exit filter prompt .It Ic \&? -Toggle help screen +Toggle help and settings screen .It Ic Q Quit and change directory .It Ic q, ^Q @@ -129,6 +129,9 @@ at: .br .Em https://github.com/jarun/nnn/wiki/all-about-nlay .Pp +There is no configuration file. Settings work on environment variables. Please +refer to the ENVIRONMENT section below. +.Pp Configuring .Nm to change to the last visited directory on quit requires shell integration in a @@ -158,18 +161,18 @@ allowing continuous navigation. Works best with the \fBarrow keys\fR. The SHELL, EDITOR and PAGER environment variables take precedence when dealing with the !, e and p commands respectively. .Pp -\fBNNN_USE_EDITOR:\fR use EDITOR (preferably CLI, fallback vi) to handle text -files. -.Bd -literal - export NNN_USE_EDITOR=1 -.Ed -.Pp \fBNNN_BMS:\fR bookmark string as \fIkey:location\fR pairs (max 10) separated by \fI;\fR: .Bd -literal export NNN_BMS='doc:~/Documents;u:/home/user/Cam Uploads;D:~/Downloads/' .Ed .Pp +\fBNNN_USE_EDITOR:\fR use EDITOR (preferably CLI, fallback vi) to handle text +files. +.Bd -literal + export NNN_USE_EDITOR=1 +.Ed +.Pp \fBNNN_DE_FILE_MANAGER:\fR set to a desktop file manager to open the current directory with. E.g.: .Bd -literal diff --git a/nnn.c b/nnn.c index 0956b06f..23eaa430 100644 --- a/nnn.c +++ b/nnn.c @@ -1311,7 +1311,12 @@ show_mediainfo(char* fpath, char *arg) static int show_help(void) { - static char helpstr[] = ("echo \"\ + char tmp[] = "/tmp/nnnXXXXXX"; + int fd = mkstemp(tmp); + if (fd == -1) + return -1; + + static char helpstr[] = ("\ Key | Function\n\ -+-\n\ Up, k, ^P | Previous entry\n\ @@ -1344,11 +1349,40 @@ show_help(void) p | Open entry in PAGER (fallback less)\n\ ^K | Invoke file path copier\n\ ^L | Force a redraw, exit filter prompt\n\ - ? | Toggle help screen\n\ + ? | Toggle help and settings screen\n\ Q | Quit and change directory\n\ - q, ^Q | Quit\n\n\" | less"); + q, ^Q | Quit\n\n\n"); - return system(helpstr); + dprintf(fd, "%s", helpstr); + + if (getenv("NNN_BMS")) { + dprintf(fd, "BOOKMARKS\n"); + for (int i = 0; i < MAX_BM; i++) + if (bookmark[i].key) + dprintf(fd, " %s: %s\n", bookmark[i].key, bookmark[i].loc); + else + break; + dprintf(fd, "\n"); + } + + if (editor) + dprintf(fd, "NNN_USE_EDITOR: %s\n", editor); + + if (desktop_manager) + dprintf(fd, "NNN_DE_FILE_MANAGER: %s\n", desktop_manager); + + if (idletimeout) + dprintf(fd, "NNN_IDLE_TIMEOUT: %d secs\n", idletimeout); + + if (copier) + dprintf(fd, "NNN_COPIER: %s\n", copier); + + dprintf(fd, "\n"); + close(fd); + + get_output(NULL, 0, "cat", tmp, NULL, 1); + unlink(tmp); + return 0; } static int @@ -2285,6 +2319,11 @@ main(int argc, char *argv[]) showhidden = 1; initfilter(showhidden, &ifilter); + /* Parse bookmarks string, if available */ + char *bms = getenv("NNN_BMS"); + if (bms) + parsebmstr(bms); + /* Edit text in EDITOR, if opted */ if (getenv("NNN_USE_EDITOR")) editor = xgetenv("EDITOR", "vi"); @@ -2304,11 +2343,6 @@ main(int argc, char *argv[]) /* Get the default copier, if set */ copier = getenv("NNN_COPIER"); - /* Parse bookmarks string, if available */ - char *bms = getenv("NNN_BMS"); - if (bms) - parsebmstr(bms); - signal(SIGINT, SIG_IGN); /* Test initial path */