all repos — st @ 5d611cd5476b56884077120bc2a6ba9727fcdd2c

st (suckless terminal) config

added macro to test flags, removed tmovecursor().
Aurélien Aptel aurelien.aptel@gmail.com
commit

5d611cd5476b56884077120bc2a6ba9727fcdd2c

parent

4db3df312ada9d92564d5580fb4e67f7704efff8

1 files changed, 15 insertions(+), 27 deletions(-)

jump to
M st.cst.c

@@ -34,6 +34,7 @@ #define DEFAULT(a, b) (a) = (a) ? (a) : (b)

#define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b)) #define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x) #define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg) +#define IS_SET(flag) (term.mode & flag) /* Attribute, Cursor, Character state, Terminal mode, Screen draw mode */ enum { ATTR_NULL=0 , ATTR_REVERSE=1 , ATTR_UNDERLINE=2, ATTR_BOLD=4, ATTR_GFX=8 };

@@ -128,7 +129,7 @@ static void csireset(void);

static void tclearregion(int, int, int, int); static void tcursor(int); -static void tmovecursor(int); +static void twrapcursor(void); static void tdeletechar(int); static void tdeleteline(int); static void tinsertblank(int);

@@ -437,29 +438,13 @@ term.c.y = y < 0 ? 0 : y >= term.row ? term.row-1 : y;

} void -tmovecursor(int dir) { - int xf = term.c.x, yf = term.c.y; - - switch(dir) { - case CURSOR_UP: - yf--; - break; - case CURSOR_DOWN: - yf++; - break; - case CURSOR_LEFT: - xf--; - break; - case CURSOR_RIGHT: - xf++; - if(term.mode & MODE_WRAP && xf >= term.col) { - xf = 0, yf++; - if(yf > term.bot) - yf = term.bot, tscroll(); - } - break; - } - tmoveto(xf, yf); +twrapcursor(void) { + int y = term.c.y+1; + if(y > term.bot) { + tmoveto(0, term.bot); + tscroll(); + } else + tmoveto(0, y); } void

@@ -969,7 +954,7 @@ case '\t':

tputtab(); break; case '\b': - tmovecursor(CURSOR_LEFT); + tmoveto(term.c.x-1, term.c.y); break; case '\r': tmoveto(0, term.c.y);

@@ -986,7 +971,10 @@ term.esc = ESC_START;

break; default: tsetchar(c); - tmovecursor(CURSOR_RIGHT); + if(term.c.x+1 < term.col) { + tmoveto(term.c.x+1, term.c.y); + } else if(IS_SET(MODE_WRAP)) + twrapcursor(); break; } }

@@ -1282,7 +1270,7 @@ case XK_Up:

case XK_Down: case XK_Left: case XK_Right: - sprintf(buf, "\033%c%c", term.mode & MODE_APPKEYPAD ? 'O' : '[', "DACB"[ksym - XK_Left]); + sprintf(buf, "\033%c%c", IS_SET(MODE_APPKEYPAD) ? 'O' : '[', "DACB"[ksym - XK_Left]); ttywrite(buf, 3); break; case XK_Insert: