@@ -22,7 +22,7 @@ CFLAGS += -Wall -Wextra -Wno-unused-parameter | |||
CFLAGS += $(CFLAGS_OPTIMIZATION) | |||
CFLAGS += $(CFLAGS_CURSES) | |||
LDLIBS += $(LDLIBS_CURSES) | |||
LDLIBS += -lreadline $(LDLIBS_CURSES) | |||
DISTFILES = src nnn.1 Makefile README.md LICENSE | |||
SRC = src/nnn.c | |||
@@ -133,7 +133,7 @@ Intrigued? Find out [HOW](https://github.com/jarun/nnn/wiki/performance-factors) | |||
#### Dependencies | |||
`nnn` needs a curses library with wide character support (like ncursesw) and standard libc. | |||
`nnn` needs a curses library with wide character support (like ncursesw), libreadline and standard libc. | |||
#### From a package manager | |||
@@ -167,7 +167,7 @@ Packages for Arch Linux, CentOS, Debian, Fedora, Solus, and Ubuntu are available | |||
To cook yourself, download the [latest stable release](https://github.com/jarun/nnn/releases/latest) or clone this repository (*risky*). Then install the dependencies and compile (e.g. on Ubuntu 16.04): | |||
$ sudo apt-get install pkg-config libncursesw5-dev | |||
$ sudo apt-get install pkg-config libncursesw5-dev libreadline6-dev | |||
$ make | |||
$ sudo make install | |||
@@ -14,6 +14,7 @@ packages: | |||
- pkg-config | |||
deps: | |||
- ncurses | |||
- readline | |||
container: "base/archlinux" | |||
centos7.2: | |||
builddeps: | |||
@@ -21,8 +22,10 @@ packages: | |||
- gcc | |||
- pkgconfig | |||
- ncurses-devel | |||
- readline-devel | |||
deps: | |||
- ncurses | |||
- readline | |||
commands: | |||
pre: | |||
- yum install epel-release | |||
@@ -32,8 +35,10 @@ packages: | |||
- gcc | |||
- pkgconfig | |||
- ncurses-devel | |||
- readline-devel | |||
deps: | |||
- ncurses | |||
- readline | |||
commands: | |||
pre: | |||
- yum install epel-release | |||
@@ -43,8 +48,10 @@ packages: | |||
- gcc | |||
- pkgconfig | |||
- ncurses-devel | |||
- readline-devel | |||
deps: | |||
- ncurses | |||
- readline | |||
commands: | |||
pre: | |||
- yum install epel-release | |||
@@ -54,48 +61,60 @@ packages: | |||
- gcc | |||
- pkg-config | |||
- libncursesw5-dev | |||
- libreadline-dev | |||
deps: | |||
- libncursesw5 | |||
- libreadline-common | |||
fedora25: | |||
builddeps: | |||
- make | |||
- gcc | |||
- pkgconfig | |||
- ncurses-devel | |||
- readline-devel | |||
deps: | |||
- ncurses | |||
- readline | |||
fedora26: | |||
builddeps: | |||
- make | |||
- gcc | |||
- pkg-config | |||
- ncurses-devel | |||
- readline-devel | |||
deps: | |||
- ncurses | |||
- readline | |||
fedora27: | |||
builddeps: | |||
- make | |||
- gcc | |||
- pkg-config | |||
- ncurses-devel | |||
- readline-devel | |||
deps: | |||
- ncurses | |||
- readline | |||
fedora28: | |||
builddeps: | |||
- make | |||
- gcc | |||
- pkg-config | |||
- ncurses-devel | |||
- readline-devel | |||
deps: | |||
- ncurses | |||
- readline | |||
fedora29: | |||
builddeps: | |||
- make | |||
- gcc | |||
- pkg-config | |||
- ncurses-devel | |||
- readline-devel | |||
deps: | |||
- ncurses | |||
- readline | |||
# opensuse42.3: | |||
# builddeps: | |||
# - make | |||
@@ -110,13 +129,17 @@ packages: | |||
- gcc | |||
- pkg-config | |||
- libncursesw5-dev | |||
- libreadline6-dev | |||
deps: | |||
- libncursesw5 | |||
- libreadline6 | |||
ubuntu18.04: | |||
builddeps: | |||
- make | |||
- gcc | |||
- pkg-config | |||
- libncursesw5-dev | |||
- libreadline-dev | |||
deps: | |||
- libncursesw5 | |||
- libreadline7 |
@@ -78,6 +78,8 @@ | |||
#endif | |||
#include <locale.h> | |||
#include <pwd.h> | |||
#include <readline/history.h> | |||
#include <readline/readline.h> | |||
#include <regex.h> | |||
#include <signal.h> | |||
#include <stdarg.h> | |||
@@ -3710,9 +3712,14 @@ nochange: | |||
} | |||
break; | |||
default: /* SEL_RUNCMD */ | |||
tmp = xreadline(NULL, "> "); | |||
if (tmp && tmp[0]) | |||
exitcurses(); | |||
tmp = readline("nnn> "); | |||
refresh(); | |||
if (tmp && tmp[0]) { | |||
spawn(shell, "-c", tmp, path, F_NORMAL | F_SIGINT); | |||
add_history(tmp); | |||
free(tmp); | |||
} | |||
} | |||
/* Continue in navigate-as-you-type mode, if enabled */ | |||
@@ -4022,6 +4029,11 @@ int main(int argc, char *argv[]) | |||
setlocale(LC_ALL, ""); | |||
crc8init(); | |||
/* Bind TAB to cycling */ | |||
rl_variable_bind("completion-ignore-case", "on"); | |||
rl_bind_key('\t', rl_menu_complete); | |||
read_history(NULL); | |||
#ifdef DEBUGMODE | |||
enabledbg(); | |||
#endif | |||
@@ -4031,6 +4043,8 @@ int main(int argc, char *argv[]) | |||
browse(ipath); | |||
exitcurses(); | |||
write_history(NULL); | |||
if (cfg.pickraw) { | |||
if (copybufpos) { | |||
opt = selectiontofd(1); | |||