aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Ian R <ian@eonndev.com>2020-06-11 05:46:40 +0000
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-06-11 11:30:43 +0530
commit1f22da2994bda1fb02fec884558343d7b8207e06 (patch)
treed57ded0523054b3b6e712cebb2e8a3ebb95e264b
parent2d5952fef7a16c55aa10df17175a25fac9c6f1ed (diff)
downloadnnn-1f22da2994bda1fb02fec884558343d7b8207e06.tar.gz
Feature #534: Support hardware cursor sync
-rw-r--r--misc/auto-completion/bash/nnn-completion.bash1
-rw-r--r--misc/auto-completion/fish/nnn.fish1
-rw-r--r--misc/auto-completion/zsh/_nnn1
-rw-r--r--nnn.14
-rw-r--r--src/nnn.c18
5 files changed, 20 insertions, 5 deletions
diff --git a/misc/auto-completion/bash/nnn-completion.bash b/misc/auto-completion/bash/nnn-completion.bash
index 820e1c7..69c2047 100644
--- a/misc/auto-completion/bash/nnn-completion.bash
+++ b/misc/auto-completion/bash/nnn-completion.bash
@@ -16,6 +16,7 @@ _nnn ()
-A
-b
-c
+ -C
-d
-e
-E
diff --git a/misc/auto-completion/fish/nnn.fish b/misc/auto-completion/fish/nnn.fish
index 9939a5c..9bc671d 100644
--- a/misc/auto-completion/fish/nnn.fish
+++ b/misc/auto-completion/fish/nnn.fish
@@ -15,6 +15,7 @@ complete -c nnn -s a -d 'auto-create NNN_FIFO'
complete -c nnn -s A -d 'disable dir auto-select'
complete -c nnn -s b -r -d 'bookmark key to open' -x -a '(echo $NNN_BMS | awk -F: -v RS=\; \'{print $1"\t"$2}\')'
complete -c nnn -s c -d 'cli-only opener'
+complete -c nnn -s C -d 'hardware cursor mode'
complete -c nnn -s d -d 'start in detail mode'
complete -c nnn -s e -d 'open text files in $VISUAL/$EDITOR/vi'
complete -c nnn -s E -d 'use EDITOR for undetached edits'
diff --git a/misc/auto-completion/zsh/_nnn b/misc/auto-completion/zsh/_nnn
index 4504155..75a19e2 100644
--- a/misc/auto-completion/zsh/_nnn
+++ b/misc/auto-completion/zsh/_nnn
@@ -13,6 +13,7 @@ args=(
'(-A)-A[disable dir auto-select]'
'(-b)-b[bookmark key to open]:key char'
'(-c)-c[cli-only opener]'
+ '(-C)-C[hardware cursor mode]'
'(-d)-d[start in detail mode]'
'(-e)-e[open text files in $VISUAL/$EDITOR/vi]'
'(-E)-E[use EDITOR for undetached edits]'
diff --git a/nnn.1 b/nnn.1
index 7950b93..96492b0 100644
--- a/nnn.1
+++ b/nnn.1
@@ -10,6 +10,7 @@
.Op Ar -A
.Op Ar -b key
.Op Ar -c
+.Op Ar -C
.Op Ar -d
.Op Ar -e
.Op Ar -E
@@ -68,6 +69,9 @@ supports the following options:
.Fl c
indicates that the opener is a cli-only opener (overrides -e)
.Pp
+.Fl C
+ place hardware cursor on hovered entry
+.Pp
.Fl d
detail mode
.Pp
diff --git a/src/nnn.c b/src/nnn.c
index 987844d..685e6e9 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -266,9 +266,9 @@ typedef struct {
uint reserved2 : 2;
uint nonavopen : 1; /* Open file on right arrow or `l` */
uint autoselect : 1; /* Auto-select dir in type-to-nav mode */
- uint reserved3 : 1;
+ uint cursormode : 1; /* Move hardware cursor with selection */
uint useeditor : 1; /* Use VISUAL to open text files */
- uint reserved4 : 3;
+ uint reserved3 : 3;
uint regex : 1; /* Use regex filters */
uint x11 : 1; /* Copy to system clipboard and show notis */
uint timetype : 2; /* Time sort type (0: access, 1: change, 2: modification) */
@@ -337,9 +337,9 @@ static settings cfg = {
0, /* reserved2 */
0, /* nonavopen */
1, /* autoselect */
- 0, /* reserved3 */
+ 0, /* cursormode */
0, /* useeditor */
- 0, /* reserved4 */
+ 0, /* reserved3 */
0, /* regex */
0, /* x11 */
2, /* timetype (T_MOD) */
@@ -681,6 +681,7 @@ static haiku_nm_h haiku_hnd;
/* Function macros */
#define tolastln() move(xlines - 1, 0)
+#define tocursor() move(cur + 2, 0)
#define exitcurses() endwin()
#define printwarn(presel) printwait(strerror(errno), presel)
#define istopdir(path) ((path)[1] == '\0' && (path)[0] == '/')
@@ -5133,6 +5134,9 @@ static void statusbar(char *path)
}
attroff(COLOR_PAIR(cfg.curctx + 1));
+
+ if (cfg.cursormode)
+ tocursor();
}
static int adjust_cols(int ncols)
@@ -6821,6 +6825,7 @@ static void usage(void)
" -A no dir auto-select\n"
" -b key open bookmark key (trumps -s/S)\n"
" -c cli-only NNN_OPENER (trumps -e)\n"
+ " -C place HW cursor on hovered\n"
" -d detail mode\n"
" -e text in $VISUAL/$EDITOR/vi\n"
" -E use EDITOR for undetached edits\n"
@@ -6992,7 +6997,7 @@ int main(int argc, char *argv[])
while ((opt = (env_opts_id > 0
? env_opts[--env_opts_id]
- : getopt(argc, argv, "aAb:cdeEfFgHKl:nop:P:QrRs:St:T:Vxh"))) != -1) {
+ : getopt(argc, argv, "aAb:cCdeEfFgHKl:nop:P:QrRs:St:T:Vxh"))) != -1) {
switch (opt) {
#ifndef NOFIFO
case 'a':
@@ -7031,6 +7036,9 @@ int main(int argc, char *argv[])
cfg.regex = 1;
filterfn = &visible_re;
break;
+ case 'C':
+ cfg.cursormode = 1;
+ break;
case 'H':
cfg.showhidden = 1;
break;