From 7cf0c56dbf2951a57c0fa624938fb07cf1101483 Mon Sep 17 00:00:00 2001 From: pancake Date: Fri, 19 Aug 2022 00:11:17 +0200 Subject: [PATCH] Improve visual text editor navigation ('j' moves to next line) ##visual --- libr/core/panels.c | 2 +- libr/core/visual.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libr/core/panels.c b/libr/core/panels.c index fe8bd4f941..90934147e0 100644 --- a/libr/core/panels.c +++ b/libr/core/panels.c @@ -3441,7 +3441,7 @@ static bool __handle_window_mode(RCore *core, const int key) { } break; case 'l': - if (r_config_get_b (core->config, "scr.cursor")) { + if (core->print->cur_enabled) { core->cons->cpos.x++; } else { (void)__move_to_direction (core, RIGHT); diff --git a/libr/core/visual.c b/libr/core/visual.c index 75c217de39..de3de42b9e 100644 --- a/libr/core/visual.c +++ b/libr/core/visual.c @@ -1848,6 +1848,17 @@ static void cursor_nextrow(RCore *core, bool use_ocur) { nextOpcode (core); return; } + if (PIDX == 4) { // TEXT + int idx = p->cur_enabled? p->cur: 0; + const ut8 *buf = core->block; + if (idx < core->blocksize) { + const ut8* nl = r_mem_mem (core->block + idx, core->blocksize - idx, (const ut8*)"\n", 1); + if (nl) { + p->cur = (int)(size_t)(nl - buf + 1); + } + } + return; + } if (PIDX == 7 || !strcmp ("prc", r_config_get (core->config, "cmd.visual"))) { p->cur += r_config_get_i (core->config, "hex.cols"); @@ -2113,7 +2124,7 @@ static bool insert_mode_enabled(RCore *core) { } if (ch == 0x7f) { // backspace if (textedit_mode) { - if (core->print->cur > 0) { + if (core->print->cur_enabled && core->print->cur > 0) { r_core_cmdf (core, "r-1@ 0x%08"PFMT64x" + %d", core->offset, core->print->cur - 1); core->print->cur--; }