tadded macro to test flags, removed tmovecursor(). - st - [fork] customized bui… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 5d611cd5476b56884077120bc2a6ba9727fcdd2c | |
parent 4db3df312ada9d92564d5580fb4e67f7704efff8 | |
Author: Aurélien Aptel <[email protected]> | |
Date: Thu, 26 Aug 2010 23:43:08 +0200 | |
added macro to test flags, removed tmovecursor(). | |
Diffstat: | |
M st.c | 42 +++++++++++------------------… | |
1 file changed, 15 insertions(+), 27 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -34,6 +34,7 @@ | |
#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 != (… | |
+#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=… | |
t@@ -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); | |
t@@ -437,29 +438,13 @@ tmoveto(int x, int 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 | |
t@@ -969,7 +954,7 @@ tputc(char c) { | |
tputtab(); | |
break; | |
case '\b': | |
- tmovecursor(CURSOR_LEFT); | |
+ tmoveto(term.c.x-1, term.c.y); | |
break; | |
case '\r': | |
tmoveto(0, term.c.y); | |
t@@ -986,7 +971,10 @@ tputc(char c) { | |
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; | |
} | |
} | |
t@@ -1282,7 +1270,7 @@ kpress(XEvent *ev) { | |
case XK_Down: | |
case XK_Left: | |
case XK_Right: | |
- sprintf(buf, "\033%c%c", term.mode & MODE_APPKEYPAD ? … | |
+ sprintf(buf, "\033%c%c", IS_SET(MODE_APPKEYPAD) ? 'O' … | |
ttywrite(buf, 3); | |
break; | |
case XK_Insert: |