From a0a102e5f68bebd1a827c3dd652f68564c1d4dbf Mon Sep 17 00:00:00 2001 From: nova Date: Sat, 23 Aug 2025 20:58:48 +0200 Subject: [PATCH] tab completion in search and read_string --- interactions.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/interactions.c b/interactions.c index 6fed706..cc2ee27 100644 --- a/interactions.c +++ b/interactions.c @@ -143,14 +143,18 @@ int read_string(WINDOW *win, int y, int x, char *str){ if (ch == '\n') { err = 0; break; - } else if (ch == 27) { /* esc key */ - err = 1; - break; + } else if (ch == '\t') { /* tab */ + memcpy(str + pass, file_current->file_name, strlen(file_current->file_name)); + mvwaddstr(win, y, x +pass, file_current->file_name); + pass += strlen(file_current->file_name); } else if (ch == 127) { /* backspace */ if (pass > 0) { pass--; mvwdelch(win, y, pass); } + } else if (ch == 27) { /* esc key */ + err = 1; + break; } else { mvwaddch(win, y, x +pass, ch); str[pass] = ch; @@ -782,8 +786,10 @@ void search(){ ch = wgetch(win_b); if (ch == '\n') { break; - } else if (ch == 27) { /* esc key */ - break; + } else if (ch == '\t') { /* tab */ + memcpy(search_buffer, file_current->file_name, strlen(file_current->file_name)); + mvwaddstr(win_b, local_height-1, pass, file_current->file_name); + pass = strlen(file_current->file_name); } else if (ch == 127) { /* backspace */ mvwdelch(win_b, local_height-1, 1); wdelch(win_b); @@ -791,6 +797,8 @@ void search(){ search_buffer[pass-1] = '\0'; pass--; } + } else if (ch == 27) { /* esc key */ + break; } else { search_buffer[pass] = ch; pass++;