tlbuf: save before jump mark in undo buffer - 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 ff0bb634c4421809714974d432ce1b7fefb33c90 (DIR) parent 9c04d34f7e9c3f9478e69744e40e2e8b70c8e9a6 (HTM) Author: Ali Gholami Rudi <ali@rudi.ir> Date: Thu, 26 Nov 2015 08:06:13 +0330 lbuf: save before jump mark in undo buffer Diffstat: M lbuf.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) --- (DIR) diff --git a/lbuf.c b/lbuf.c t@@ -5,7 +5,8 @@ #include <unistd.h> #include "vi.h" -#define NMARKS 32 +#define NMARKS_BASE ('z' - 'a' + 2) +#define NMARKS 32 /* line operations */ struct lopt { t@@ -77,12 +78,14 @@ static int markidx(int mark) { if (islower(mark)) return mark - 'a'; - if (mark == '*') + if (mark == '\'' || mark == '`') return 'z' - 'a' + 1; - if (mark == '[') + if (mark == '*') return 'z' - 'a' + 2; - if (mark == ']') + if (mark == '[') return 'z' - 'a' + 3; + if (mark == ']') + return 'z' - 'a' + 4; return -1; } t@@ -192,7 +195,7 @@ static void lbuf_opt(struct lbuf *lb, char *buf, int pos, int n_del) lo->ins = buf ? uc_dup(buf) : NULL; lo->seq = lb->useq; lbuf_savepos(lb, lo); - for (i = 0; i < 'z' - 'a' + 1; i++) + for (i = 0; i < NMARKS_BASE; i++) if (lb->mark[i] >= pos && lb->mark[i] < pos + n_del) lbuf_savemark(lb, lo, i); }