diff --git a/ste b/ste index dd15d99..18a394e 100755 Binary files a/ste and b/ste differ diff --git a/ste.c b/ste.c index 4827ff5..21f94a9 100644 --- a/ste.c +++ b/ste.c @@ -1,6 +1,7 @@ #include #include #include +#include /* defines */ #define CTRL(k) ((k) & 0x1f) // Control mask modifier @@ -65,6 +66,7 @@ static int curRealToRender (row *rw, int c_x); /* Row operations */ static inline void rowInit (void); +static void rowAddChar (row *rw, char c); /* Terminal operations */ static void termInit (void); @@ -121,6 +123,8 @@ int main (int argc, char *argv[]) case (KEY_DOWN): cursorMove(c); break; + default: + rowAddChar(&rows.rw[t.cur.y + t.cur.off_y], c); } } @@ -158,7 +162,7 @@ void termInit (void) init_pair(1, COLOR_BLACK, COLOR_WHITE); /* Set default color */ - bkgd(COLOR_PAIR(1)); + //bkgd(COLOR_PAIR(1)); /* Populate the main data structure */ getmaxyx(stdscr, t.dim.y, t.dim.x); @@ -233,14 +237,14 @@ void drawLines (void) attroff(COLOR_PAIR(2)); lnMove(i, 0); - if (ln == t.cur.y + t.cur.off_y) attron(COLOR_PAIR(2)); + //if (ln == t.cur.y + t.cur.off_y) attron(COLOR_PAIR(2)); /* Draw the line matcing render memory */ if (rows.rw[ln].r_size >= t.cur.off_x) { addnstr(&rows.rw[ln].render[t.cur.off_x], t.dim.x + 1 - rows.rw[ln].delta); } - attroff(COLOR_PAIR(2)); + //attroff(COLOR_PAIR(2)); lnMove(++line, 0); } @@ -258,7 +262,7 @@ void lnMove (int y, int x) void drawBar (char *s) { /* Set maximum contrast for bar */ - attron(A_STANDOUT); + attron(COLOR_PAIR(2)); /* get the length of the statusbar text */ int len = strlen(s); /* Print the message */ @@ -272,7 +276,7 @@ void drawBar (char *s) mvaddstr(t.dim.y, t.dim.x + t.pad - strlen(m), m); /* Return to normal contrast mode */ - attroff(A_STANDOUT); + attroff(COLOR_PAIR(2)); } /* convert the cursor matchoing the memory to the drawn one */ @@ -368,6 +372,37 @@ void rowInit (void) rows.rownum = 0; } +void rowAddChar (row *rw, char c) // WIP +{ + // Error checking + if (!c || iscntrl(c)) return; + + int cur = t.cur.x + t.cur.off_x, i = 0; + char *s = rw->chars; + + // reallocate mem and inc size + rw->chars = malloc(rw->size + 2); + rw->size++; + + // copy bf cursor + for (i = 0; i < cur; i++) { + rw->chars[i] = s[i]; + } + + // add at cursor + rw->chars[cur++] = (char)c; + + //copy after cursor + for (i = cur; i < rw->size + 1; i++) { + rw->chars[i] = s[i - 1]; + } + + free(s); + + updateRender(rw); + t.cur.x++; +} + /* ----------------------------- file operations --------------------------- */ /* take care of the cursor movement */