From 12214f20764340d4b04da7313fad35609ba86a7c Mon Sep 17 00:00:00 2001 From: WormHeamer Date: Fri, 2 Jan 2026 17:04:20 -0500 Subject: make select_file() start in directory of current buffer if possible --- main.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'main.c') diff --git a/main.c b/main.c index af934e6..ee083b7 100644 --- a/main.c +++ b/main.c @@ -515,6 +515,13 @@ static Str basename(Str s) { } } +static Str dirname(Str s) { + while (s.n > 0 && s.s[s.n - 1] == '/') s.n--; + while (s.n > 0 && s.s[s.n - 1] != '/') s.n--; + while (s.n > 0 && s.s[s.n - 1] == '/') s.n--; + return s; +} + #define STYLE_BUF (A_DEFAULT) #define STYLE_BUF_SEL (STYLE_BUF | A_REVERSE) #define STYLE_TXT (A_DEFAULT) @@ -1354,7 +1361,12 @@ again: } Str select_file(void) { - Str s = select_file_in("."); + const char *path = "."; + EditBuf *eb = &e.buf[e.bufi]; + if (eb->type == ED_BUF_FILE || eb->type == ED_BUF_BIN_FILE) { + path = str_to_cstr(dirname(eb->path), &e.scratch); + } + Str s = select_file_in(path); return s; } -- cgit v1.2.3