tex: substitute's "g" option - 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 dd8c8d2fd76f346bd04e372076310a59554ba5e3
 (DIR) parent 0ef1f0ace31fa78cbfa79639ac5f719042c3c01b
 (HTM) Author: Ali Gholami Rudi <ali@rudi.ir>
       Date:   Sat,  6 Jun 2015 23:12:45 +0430
       
       ex: substitute's "g" option
       
       Diffstat:
         M ex.c                                |      15 +++++++++------
       
       1 file changed, 9 insertions(+), 6 deletions(-)
       ---
 (DIR) diff --git a/ex.c b/ex.c
       t@@ -568,15 +568,18 @@ static int ec_substitute(char *ec)
                        return 1;
                for (i = beg; i < end; i++) {
                        char *ln = lbuf_get(xb, i);
       -                if (rset_find(re, ln, LEN(offs) / 2, offs, 0)) {
       -                        struct sbuf *r = sbuf_make();
       +                struct sbuf *r = sbuf_make();
       +                while (rset_find(re, ln, LEN(offs) / 2, offs, 0) >= 0) {
                                sbuf_mem(r, ln, offs[0]);
                                sbuf_str(r, rep);
       -                        sbuf_str(r, ln + offs[1]);
       -                        lbuf_put(xb, i, sbuf_buf(r));
       -                        lbuf_rm(xb, i + 1, i + 2);
       -                        sbuf_free(r);
       +                        ln += offs[1];
       +                        if (!strchr(s, 'g'))
       +                                break;
                        }
       +                sbuf_str(r, ln);
       +                lbuf_rm(xb, i, i + 1);
       +                lbuf_put(xb, i, sbuf_buf(r));
       +                sbuf_free(r);
                }
                rset_free(re);
                free(pat);