From 929edaf243fc0acd598d10049302ce359d9ef97f Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Sun, 10 Feb 2019 09:58:13 +0530 Subject: [PATCH] Fix https://github.com/mcchrish/nnn.vim/issues/39 If nnn is started in the picker mode, do NOT use libreadline. Fallback to the stock mechanism to show the command prompt. --- src/nnn.c | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/src/nnn.c b/src/nnn.c index 02c53fa0..6ca2e566 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -3888,27 +3888,35 @@ nochange: } break; default: /* SEL_RUNCMD */ - exitcurses(); + if (cfg.picker) + tmp = xreadline(NULL, "> "); + else { + /* Use libreadline */ + exitcurses(); - /* Switch to current path for readline(3) */ - if (chdir(path) == -1) { - printwarn(); - goto nochange; + /* Switch to current path for readline(3) */ + if (chdir(path) == -1) { + printwarn(); + goto nochange; + } + + tmp = readline("nnn> "); + + if (chdir(ipath) == -1) { + printwarn(); + goto nochange; + } + + refresh(); } - tmp = readline("nnn> "); - - if (chdir(ipath) == -1) { - printwarn(); - goto nochange; - } - - refresh(); - if (tmp && tmp[0]) { spawn(shell, "-c", tmp, path, F_NORMAL | F_SIGINT); - add_history(tmp); - free(tmp); + if (!cfg.picker) { + /* readline finishing touches */ + add_history(tmp); + free(tmp); + } } }