]> git.mdlowis.com Git - projs/tide.git/commitdiff
removed old highlight engine. will be replaced by binary search array of ranges
authorMichael D. Lowis <mike@mdlowis.com>
Sun, 25 Mar 2018 19:32:55 +0000 (15:32 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Sun, 25 Mar 2018 19:32:55 +0000 (15:32 -0400)
Makefile
lib/colors.c [deleted file]
lib/view.c

index 347207d3022ca5268aa09d32e5e85126e5e89982..8841a2cc07abb818b5f2e9c8f18ebe069d6d4679 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,6 @@ LIBEDIT_OBJS =     \
        lib/job.o      \
        lib/view.o     \
        lib/x11.o      \
-       lib/colors.o   \
        lib/config.o
 
 TEST_BINS =     \
diff --git a/lib/colors.c b/lib/colors.c
deleted file mode 100644 (file)
index 601c16e..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-#include <stdc.h>
-#include <utf.h>
-#include <edit.h>
-#include <unistd.h>
-#include <ctype.h>
-
-static int ChildIn = -1, ChildOut = -1;
-static char Buffer[32768];
-static char* DataBeg = Buffer;
-static char* DataEnd = Buffer;
-
-static SyntaxSpan* mkspan(size_t beg, size_t end, size_t clr, SyntaxSpan* span);
-static void write_chunk(Buf* buf, size_t beg, size_t end);
-static int read_byte(void);
-static int read_num(void);
-
-static void writefn(Job* job) {
-    job->writefn = NULL;
-}
-
-static void readfn(Job* job) {
-    job->readfn = NULL;
-}
-
-void colors_init(char* path) {
-//    if (Syntax)
-//        job_create((char*[]){ "tide-hl.rb", path, NULL }, readfn, writefn, 0);
-}
-
-SyntaxSpan* colors_scan(SyntaxSpan* spans, Buf* buf, size_t beg, size_t end) {
-#if 0
-    SyntaxSpan* firstspan = spans;
-    SyntaxSpan* currspan  = spans;
-    /* if the engine died, clear all highlights and quit */
-    if (ChildIn < 0 || !buf->path)
-        return colors_rewind(spans, 0);
-    /* commence the highlighting */
-    if (beg < end) {
-        write_chunk(buf, beg, end);
-        size_t b = 0, e = 0, c = 0;
-        do {
-            b = read_num();
-            e = read_num();
-            c = read_num();
-            if (e > 0 && c > 0) {
-                c = (c > 15 ? Colors[SynNormal + (c >> 4) - 1].fg : c);
-                currspan = mkspan(beg+b, beg+e-1, c, currspan);
-            }
-            if (!firstspan)
-                firstspan = currspan;
-        } while (e > 0);
-        fflush(stdout);
-        DataBeg = DataEnd = Buffer;
-    }
-    return firstspan;
-#else
-    return spans;
-#endif
-}
-
-SyntaxSpan* colors_rewind(SyntaxSpan* spans, size_t first) {
-#if 0
-    SyntaxSpan *curr = spans, *next = (spans ? spans->next : NULL);
-    while (curr && curr->end > first)
-        next = curr, curr = curr->prev;
-
-    if (curr) curr->next = NULL;
-
-    for (SyntaxSpan* span = next; span;) {
-        SyntaxSpan* dead = span;
-        span = dead->next;
-        if (span) span->prev = NULL;
-        free(dead);
-    }
-    return curr;
-#else
-    return spans;
-#endif
-}
-
-#if 0
-static SyntaxSpan* mkspan(size_t beg, size_t end, size_t clr, SyntaxSpan* span) {
-    SyntaxSpan* newspan = malloc(sizeof(SyntaxSpan));
-    newspan->beg   = beg;
-    newspan->end   = end;
-    newspan->color = clr;
-    newspan->prev  = span;
-    newspan->next  = NULL;
-    if (span)
-        span->next = newspan;
-    return newspan;
-}
-
-static void write_chunk(Buf* buf, size_t beg, size_t end) {
-    size_t len = end - beg, wlen = 0;
-    char* wbuf = malloc(64 + len * 6u);
-    if (len && wbuf) {
-        wlen += sprintf(wbuf, "%lu\n", len);
-        for (size_t i = beg; i < end; i++) {
-            Rune r = buf_get(buf, i);
-            if (r == RUNE_CRLF) {
-                wbuf[wlen++] = '\n';
-            } else if (buf->charset == BINARY) {
-                wbuf[wlen++] = (char)r;
-            } else {
-                wlen += utf8encode((char*)&(wbuf[wlen]), r);
-            }
-        }
-        long nwrite = write(ChildIn, wbuf, wlen);
-        if (nwrite < 0) {
-            /* child process probably died. shut everything down */
-            close(ChildIn),  ChildIn  = -1;
-            close(ChildOut), ChildOut = -1;
-        }
-    }
-    free(wbuf);
-}
-
-static int read_byte(void) {
-    if (DataBeg >= DataEnd) {
-        DataBeg = DataEnd = Buffer;
-        long nread = read(ChildOut, Buffer, sizeof(Buffer));
-        if (nread <= 0) return EOF;
-        DataEnd += nread;
-    }
-    return *(DataBeg++);
-}
-
-static int read_num(void) {
-    int c, num = 0;
-    while (isdigit(c = read_byte()))
-        num = (num * 10) + (c - '0');
-    return num;
-}
-#endif
index 40437e07adec0074401803a7d05829df7b54521c..d10946836df25cde1fad0ba978d4f859b0f293f4 100644 (file)
@@ -21,8 +21,6 @@ static unsigned scroll_up(View* view);
 static unsigned scroll_dn(View* view);
 static void sync_center(View* view, size_t csr);
 static size_t getoffset(View* view, size_t row, size_t col);
-static void sync_line_numbers(View* view, size_t pos);
-static void apply_colors(View* view);
 
 void view_init(View* view, char* file, void (*errfn)(char*)) {
     if (view->nrows) {
@@ -45,7 +43,6 @@ void view_init(View* view, char* file, void (*errfn)(char*)) {
             view_eol(view, false);
             view_selctx(view);
         }
-        colors_init(view->buffer.path);
     }
 }
 
@@ -102,16 +99,6 @@ void view_update(View* view, int clrnor, int clrsel, size_t* csrx, size_t* csry)
         view_scrollto(view, csr);
     /* locate the cursor if visible */
     find_cursor(view, csrx, csry);
-    /* synchronize, scan for, and apply highlighted regions */
-    size_t first = view->rows[0]->off,
-           last  = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen;
-    view->spans = colors_rewind(view->spans, first);
-    size_t start = (view->spans ? view->spans->end : 0);
-    size_t scandist = MaxScanDist;
-    if (scandist && first-start > scandist)
-        start = first - scandist;
-    view->spans = colors_scan(view->spans, &(view->buffer), start, last+1);
-    apply_colors(view);
 }
 
 Row* view_getrow(View* view, size_t row) {
@@ -217,7 +204,6 @@ void view_insert(View* view, bool indent, Rune rune) {
         view->selection = sel;
     }
     unsigned newpos = buf_insert(&(view->buffer), indent, view->selection.end, rune);
-    sync_line_numbers(view, newpos);
     move_to(view, false, newpos);
 }
 
@@ -227,7 +213,6 @@ void view_delete(View* view, int dir, bool byword) {
         (byword ? view_byword : view_byrune)(view, dir, true);
     selswap(sel);
     unsigned newpos = buf_delete(&(view->buffer), sel->beg, sel->end);
-    sync_line_numbers(view, newpos);
     move_to(view, false, newpos);
 }
 
@@ -658,39 +643,3 @@ static size_t getoffset(View* view, size_t row, size_t col) {
         return buf_end(&(view->buffer));
     return pos;
 }
-
-static void sync_line_numbers(View* view, size_t newpos) {
-    if (!view->nrows || newpos <= view->rows[0]->off) {
-        if (view->nrows)
-            view->rows[0]->off = buf_bol(&(view->buffer), newpos);
-    }
-}
-
-static void apply_colors(View* view) {
-    /* fast forward the span list to the first span that ends on screen if there
-       is one. We take care to not go past the last item because we need to
-       ensure newly scanned items are poperly appended next time around */
-    size_t first = (view->nrows ? view->rows[0]->off : 0);
-    SyntaxSpan* curr = view->spans;
-    for (; curr && curr->next && curr->end < first; curr = curr->next);
-    view->spans = curr;
-
-    /* ok, now for each row, scan the columns and apply the colors for the span
-       that each rune is a member of. */
-    for (size_t r = 0; curr && r < view->nrows; r++) {
-        Row* row = view->rows[r];
-        size_t off = row->off, col = 0;
-        while (col < row->len) {
-            /* skip irrelevant highlight regions */
-            for (; curr && curr->end < off; curr = curr->next);
-            if (!curr) { r = -1; break; } // Break both loops if we're done
-
-            /* check if we're in the current region */
-            if (curr->beg <= off && off <= curr->end)
-                row->cols[col].attr = (row->cols[col].attr & 0xFF00) | curr->color;
-            off++, col++;
-            while (col < row->len && row->cols[col].rune == '\0')
-                col++;
-        }
-    }
-}