tvi: specify direction context with zL, zl, zr, and zR - neatvi - [fork] simple vi-type editor with UTF-8 support (HTM) git clone git://src.adamsgaard.dk/neatvi (DIR) Log (DIR) Files (DIR) Refs (DIR) README --- (DIR) commit aa607d3ef71740de17207fa9bc4fcd6a8d2eb556 (DIR) parent 62031568d8a420347c9be9b77bc75f80856e7281 (HTM) Author: Ali Gholami Rudi <ali@rudi.ir> Date: Wed, 6 May 2015 10:56:30 +0430 vi: specify direction context with zL, zl, zr, and zR Diffstat: M ren.c | 6 ++++++ M vi.c | 5 +++++ M vi.h | 1 + 3 files changed, 12 insertions(+), 0 deletions(-) --- (DIR) diff --git a/ren.c b/ren.c t@@ -40,6 +40,12 @@ static void bidi_reverse(int *ord, int beg, int end) int ren_dir(char *s) { + if (xdir == 'R') + return -1; + if (xdir == 'l') + return *s && uc_dir(s) < 0 ? -1 : +1; + if (xdir == 'r') + return *s && uc_dir(s) > 0 ? +1 : -1; return +1; } (DIR) diff --git a/vi.c b/vi.c t@@ -16,6 +16,7 @@ char xpath[PATHLEN]; /* current file */ struct lbuf *xb; /* current buffer */ int xrow, xcol, xtop; /* current row, column, and top row */ int xled = 1; /* use the line editor */ +int xdir = 'L'; /* current direction context */ int xquit; static void vi_draw(void) t@@ -593,6 +594,10 @@ static void vi(void) vc_put(c, pre1); redraw = 1; break; + case 'z': + xdir = vi_read(); + redraw = 1; + break; default: continue; } (DIR) diff --git a/vi.h b/vi.h t@@ -111,3 +111,4 @@ extern int xtop; extern int xled; extern char xpath[]; extern int xquit; +extern int xdir;