From: Göran Gustafsson <gustafsson.g@gmail.com>
Date: Wed, 8 Jun 2022 05:45:18 +0000 (+0200)
Subject: Go to last dir on bookmark key repeat
X-Git-Tag: v4.6~50
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=4baee859f8763ed0ca3703ac3e5ab0d291149aed;p=nnn.git

Go to last dir on bookmark key repeat
---

diff --git a/nnn.1 b/nnn.1
index ed1d7eb8..2e65d7df 100644
--- a/nnn.1
+++ b/nnn.1
@@ -363,6 +363,9 @@ There are 2 ways (can be used together) to manage bookmarks.
 On entering a bookmark, the directory where the select bookmark key was
 pressed is set as the previous directory. Press '-' to return to it.
 .Pp
+When \fINNN_BMS\fR` is not set, it's possible to return to the previous directory
+from the bookmarks directory using the select bookmark key.
+.Pp
 .Sh UNITS
 The minimum file size unit is byte (B). The rest are K, M, G, T, P, E, Z, Y
 (powers of 1024), same as the default units in \fIls\fR.
diff --git a/src/nnn.c b/src/nnn.c
index 78891bc5..0a291251 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -7142,8 +7142,13 @@ nochange:
 					goto nochange;
 				}
 
-				if (strcmp(path, newpath) == 0)
-					break;
+				if (strcmp(path, newpath) == 0) {
+					if (bookmark)
+						break;
+
+					dir = lastdir; /* Go to last dir on bookmark key repeat */
+					xstrsncpy(newpath, dir, PATH_MAX);
+				}
 			}
 
 			/* In list mode, retain the last file name to highlight it, if possible */