]> Sergey Matveev's repositories - nnn.git/commitdiff
Support ~, - and & keyboard shortcuts at the bookmark prompt.
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 3 Mar 2018 13:49:06 +0000 (19:19 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 3 Mar 2018 13:49:06 +0000 (19:19 +0530)
In nav-as-you-type mode only control keys are understood when filter is enabled.
We need some way to quicly jump HOME, last visited dir or start dir.

README.md
nnn.1
nnn.c

index 5ddce609dc5e1a427c4a38682325b546929012a9..105481a65465c5e0d21bc2c5ad03eae73535fdf4 100644 (file)
--- a/README.md
+++ b/README.md
@@ -340,6 +340,8 @@ Set environment variable `NNN_BMS` as a string of `key:location` pairs (max 10)
 
     export NNN_BMS='doc:~/Documents;u:/home/user/Cam Uploads;D:~/Downloads/'
 
+The bookmark prompt also understands the <kbd>~</kbd> (HOME), <kbd>-</kbd> (last visited directory) and <kbd>&</kbd> (start directory) shortcuts.
+
 #### use cd .....
 
 To jump to the n<sup>th</sup> level parent, with PWD at level 0, use `n + 1` dots. For example, to jump to the 6<th> parent of the current directory, use 7 dots. If the number of dots would take you *beyond* `/` (which isn't possible), you'll be placed at `/`.
diff --git a/nnn.1 b/nnn.1
index 72cf97f4bc7d2b299b8ac81dcc8e0f458f8b8386..533f70dd4f204c9b6e1f4bacc2418c1f26289beb 100644 (file)
--- a/nnn.1
+++ b/nnn.1
@@ -220,6 +220,7 @@ when dealing with the !, e and p commands respectively.
 .Bd -literal
     export NNN_BMS='doc:~/Documents;u:/home/user/Cam Uploads;D:~/Downloads/'
 .Ed
+The bookmark prompt also understands the \fI~\fR (HOME), \fI-\fR (last visited directory) and \fI&\fR shortcuts.
 .Pp
 \fBNNN_USE_EDITOR:\fR use EDITOR (preferably CLI, fallback vi) to handle text
 files.
diff --git a/nnn.c b/nnn.c
index 291c11967ea97f3da28d5d340a54ef7f38afec4a..3f186ebc932ecab2ccccc2f3ffe82b6c794ffc23 100644 (file)
--- a/nnn.c
+++ b/nnn.c
@@ -2726,9 +2726,15 @@ nochange:
                        printprompt("key: ");
                        tmp = readinput();
                        clearprompt();
-                       if (tmp == NULL)
+                       if (tmp == NULL || tmp[0] == '\0')
                                break;
 
+                       /* Interpret ~, - and & keys */
+                       if ((tmp[1] == '\0') && (tmp[0] == '~' || tmp[0] == '-' || tmp[0] == '&')) {
+                               presel = tmp[0];
+                               goto begin;
+                       }
+
                        if (get_bm_loc(tmp, newpath) == NULL) {
                                printmsg(messages[STR_INVBM_ID]);
                                goto nochange;