tled: for cursor position assume 'a' is inserted - 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 330453e1a6cd79f6c85ddc7a454f37c784b1ae9a
 (DIR) parent 3472b9c90eea860d3aff4e9c555fbaab6f4f90bf
 (HTM) Author: Ali Gholami Rudi <ali@rudi.ir>
       Date:   Sun, 10 May 2015 18:58:08 +0430
       
       led: for cursor position assume 'a' is inserted
       
       Diffstat:
         M led.c                               |      25 ++++++++++++++-----------
       
       1 file changed, 14 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/led.c b/led.c
       t@@ -48,26 +48,29 @@ static int led_lastword(char *s)
                return r - s;
        }
        
       +/* the position of the cursor for inserting another character */
       +static int led_insertionpos(struct sbuf *sb)
       +{
       +        int len = sbuf_len(sb);
       +        char *chr = keymap(led_kmap, 'a');
       +        int col;
       +        sbuf_str(sb, chr);
       +        col = ren_cursor(sbuf_buf(sb),
       +                ren_pos(sbuf_buf(sb), uc_slen(sbuf_buf(sb)) - 1));
       +        sbuf_cut(sb, len);
       +        return col;
       +}
       +
        static void led_printparts(char *pref, char *main, char *post)
        {
                struct sbuf *ln;
                int col;
       -        int cur;
       -        int dir;
                ln = sbuf_make();
                sbuf_str(ln, pref);
                sbuf_str(ln, main);
       -        cur = uc_slen(sbuf_buf(ln)) - 1;
       -        dir = uc_dir(sbuf_buf(ln) + led_lastchar(sbuf_buf(ln)));
       +        col = led_insertionpos(ln);
                sbuf_str(ln, post);
                led_print(sbuf_buf(ln), -1);
       -        col = ren_cursor(sbuf_buf(ln), ren_pos(sbuf_buf(ln), MAX(cur, 0)));
       -        if (cur >= 0) {
       -                if (dir < 0 || (!dir && ren_dir(sbuf_buf(ln)) < 0))
       -                        col = MAX(col - 1, 0);
       -                else
       -                        col += 1;
       -        }
                term_pos(-1, col);
                sbuf_free(ln);
        }