commit 6c428724766f86a9e67f34b465a563a0def91acb
parent d7b6b1c1c67b6561d2a0e9adb119d08d2fa68f28
Author: bakkeby <bakkeby@gmail.com>
Date: Wed, 24 Feb 2021 08:52:22 +0100
keyboardselect: style changes
Diffstat:
1 file changed, 209 insertions(+), 209 deletions(-)
diff --git a/patch/keyboardselect_st.c b/patch/keyboardselect_st.c
@@ -1,222 +1,222 @@
-void set_notifmode(int type, KeySym ksym) {
- static char *lib[] = { " MOVE ", " SEL "};
- static Glyph *g, *deb, *fin;
- static int col, bot;
-
- if ( ksym == -1 ) {
- free(g);
- col = term.col, bot = term.bot;
- g = xmalloc(col * sizeof(Glyph));
- memcpy(g, term.line[bot], col * sizeof(Glyph));
-
- }
- else if ( ksym == -2 )
- memcpy(term.line[bot], g, col * sizeof(Glyph));
-
- if ( type < 2 ) {
- char *z = lib[type];
- for (deb = &term.line[bot][col - 6], fin = &term.line[bot][col]; deb < fin; z++, deb++)
- deb->mode = ATTR_REVERSE,
- deb->u = *z,
- deb->fg = defaultfg, deb->bg = defaultbg;
- }
- else if ( type < 5 )
- memcpy(term.line[bot], g, col * sizeof(Glyph));
- else {
- for (deb = &term.line[bot][0], fin = &term.line[bot][col]; deb < fin; deb++)
- deb->mode = ATTR_REVERSE,
- deb->u = ' ',
- deb->fg = defaultfg, deb->bg = defaultbg;
- term.line[bot][0].u = ksym;
- }
-
- term.dirty[bot] = 1;
- drawregion(0, bot, col, bot + 1);
+void set_notifmode(int type, KeySym ksym)
+{
+ static char *lib[] = { " MOVE ", " SEL "};
+ static Glyph *g, *deb, *fin;
+ static int col, bot;
+
+ if (ksym == -1) {
+ free(g);
+ col = term.col, bot = term.bot;
+ g = xmalloc(col * sizeof(Glyph));
+ memcpy(g, term.line[bot], col * sizeof(Glyph));
+
+ } else if (ksym == -2)
+ memcpy(term.line[bot], g, col * sizeof(Glyph));
+
+ if ( type < 2 ) {
+ char *z = lib[type];
+ for (deb = &term.line[bot][col - 6], fin = &term.line[bot][col]; deb < fin; z++, deb++)
+ deb->mode = ATTR_REVERSE,
+ deb->u = *z,
+ deb->fg = defaultfg, deb->bg = defaultbg;
+ } else if (type < 5)
+ memcpy(term.line[bot], g, col * sizeof(Glyph));
+ else {
+ for (deb = &term.line[bot][0], fin = &term.line[bot][col]; deb < fin; deb++)
+ deb->mode = ATTR_REVERSE,
+ deb->u = ' ',
+ deb->fg = defaultfg, deb->bg = defaultbg;
+ term.line[bot][0].u = ksym;
+ }
+
+ term.dirty[bot] = 1;
+ drawregion(0, bot, col, bot + 1);
}
-void select_or_drawcursor(int selectsearch_mode, int type) {
- int done = 0;
-
- if ( selectsearch_mode & 1 ) {
- selextend(term.c.x, term.c.y, type, done);
- xsetsel(getsel());
- }
- else
- #if LIGATURES_PATCH
- xdrawcursor(term.c.x, term.c.y, term.line[term.c.y][term.c.x],
- term.ocx, term.ocy, term.line[term.ocy][term.ocx],
- term.line[term.ocy], term.col);
- #else
- xdrawcursor(term.c.x, term.c.y, term.line[term.c.y][term.c.x],
- term.ocx, term.ocy, term.line[term.ocy][term.ocx]);
- #endif
+void select_or_drawcursor(int selectsearch_mode, int type)
+{
+ int done = 0;
+
+ if (selectsearch_mode & 1) {
+ selextend(term.c.x, term.c.y, type, done);
+ xsetsel(getsel());
+ } else {
+ #if LIGATURES_PATCH
+ xdrawcursor(term.c.x, term.c.y, term.line[term.c.y][term.c.x],
+ term.ocx, term.ocy, term.line[term.ocy][term.ocx],
+ term.line[term.ocy], term.col);
+ #else
+ xdrawcursor(term.c.x, term.c.y, term.line[term.c.y][term.c.x],
+ term.ocx, term.ocy, term.line[term.ocy][term.ocx]);
+ #endif // LIGATURES_PATCH
+ }
}
-void search(int selectsearch_mode, Rune *target, int ptarget, int incr, int type, TCursor *cu) {
- Rune *r;
- int i, bound = (term.col * cu->y + cu->x) * (incr > 0) + incr;
-
- for (i = term.col * term.c.y + term.c.x + incr; i != bound; i += incr) {
- for (r = target; r - target < ptarget; r++) {
- if ( *r == term.line[(i + r - target) / term.col][(i + r - target) % term.col].u ) {
- if ( r - target == ptarget - 1 ) break;
- } else {
- r = NULL;
- break;
- }
- }
- if ( r != NULL ) break;
- }
-
- if ( i != bound ) {
- term.c.y = i / term.col, term.c.x = i % term.col;
- select_or_drawcursor(selectsearch_mode, type);
- }
+void search(int selectsearch_mode, Rune *target, int ptarget, int incr, int type, TCursor *cu)
+{
+ Rune *r;
+ int i, bound = (term.col * cu->y + cu->x) * (incr > 0) + incr;
+
+ for (i = term.col * term.c.y + term.c.x + incr; i != bound; i += incr) {
+ for (r = target; r - target < ptarget; r++) {
+ if (*r == term.line[(i + r - target) / term.col][(i + r - target) % term.col].u) {
+ if (r - target == ptarget - 1)
+ break;
+ } else {
+ r = NULL;
+ break;
+ }
+ }
+ if (r != NULL)
+ break;
+ }
+
+ if (i != bound) {
+ term.c.y = i / term.col, term.c.x = i % term.col;
+ select_or_drawcursor(selectsearch_mode, type);
+ }
}
-int trt_kbdselect(KeySym ksym, char *buf, int len) {
- static TCursor cu;
- static Rune target[64];
- static int type = 1, ptarget, in_use;
- static int sens, quant;
- static char selectsearch_mode;
- int i, bound, *xy;
-
-
- if ( selectsearch_mode & 2 ) {
- if ( ksym == XK_Return ) {
+int trt_kbdselect(KeySym ksym, char *buf, int len)
+{
+ static TCursor cu;
+ static Rune target[64];
+ static int type = 1, ptarget, in_use;
+ static int sens, quant;
+ static char selectsearch_mode;
+ int i, bound, *xy;
+
+ if (selectsearch_mode & 2) {
+ if (ksym == XK_Return) {
selectsearch_mode ^= 2;
set_notifmode(selectsearch_mode, -2);
- if ( ksym == XK_Escape ) ptarget = 0;
+ if (ksym == XK_Escape)
+ ptarget = 0;
return 0;
- }
- else if ( ksym == XK_BackSpace ) {
- if ( !ptarget ) return 0;
- term.line[term.bot][ptarget--].u = ' ';
- }
- else if ( len < 1 ) {
+ } else if (ksym == XK_BackSpace) {
+ if (!ptarget)
+ return 0;
+ term.line[term.bot][ptarget--].u = ' ';
+ } else if (len < 1) {
return 0;
- }
- else if ( ptarget == term.col || ksym == XK_Escape ) {
- return 0;
- }
- else {
- utf8decode(buf, &target[ptarget++], len);
- term.line[term.bot][ptarget].u = target[ptarget - 1];
+ } else if (ptarget == term.col || ksym == XK_Escape) {
+ return 0;
+ } else {
+ utf8decode(buf, &target[ptarget++], len);
+ term.line[term.bot][ptarget].u = target[ptarget - 1];
}
- if ( ksym != XK_BackSpace )
- search(selectsearch_mode, &target[0], ptarget, sens, type, &cu);
-
- term.dirty[term.bot] = 1;
- drawregion(0, term.bot, term.col, term.bot + 1);
- return 0;
- }
-
- switch ( ksym ) {
- case -1 :
- in_use = 1;
- cu.x = term.c.x, cu.y = term.c.y;
- set_notifmode(0, ksym);
- return MODE_KBDSELECT;
- case XK_s :
- if ( selectsearch_mode & 1 )
- selclear();
- else
- selstart(term.c.x, term.c.y, 0);
- set_notifmode(selectsearch_mode ^= 1, ksym);
- break;
- case XK_t :
- selextend(term.c.x, term.c.y, type ^= 3, i = 0); /* 2 fois */
- selextend(term.c.x, term.c.y, type, i = 0);
- break;
- case XK_slash :
- case XK_KP_Divide :
- case XK_question :
- ksym &= XK_question; /* Divide to slash */
- sens = (ksym == XK_slash) ? -1 : 1;
- ptarget = 0;
- set_notifmode(15, ksym);
- selectsearch_mode ^= 2;
- break;
- case XK_Escape :
- if ( !in_use ) break;
- selclear();
- case XK_Return :
- set_notifmode(4, ksym);
- term.c.x = cu.x, term.c.y = cu.y;
- select_or_drawcursor(selectsearch_mode = 0, type);
- in_use = quant = 0;
- return MODE_KBDSELECT;
- case XK_n :
- case XK_N :
- if ( ptarget )
- search(selectsearch_mode, &target[0], ptarget, (ksym == XK_n) ? -1 : 1, type, &cu);
- break;
- case XK_BackSpace :
- term.c.x = 0;
- select_or_drawcursor(selectsearch_mode, type);
- break;
- case XK_dollar :
- term.c.x = term.col - 1;
- select_or_drawcursor(selectsearch_mode, type);
- break;
- case XK_Home :
- term.c.x = 0, term.c.y = 0;
- select_or_drawcursor(selectsearch_mode, type);
- break;
- case XK_End :
- term.c.x = cu.x, term.c.y = cu.y;
- select_or_drawcursor(selectsearch_mode, type);
- break;
- case XK_Page_Up :
- case XK_Page_Down :
- term.c.y = (ksym == XK_Prior ) ? 0 : cu.y;
- select_or_drawcursor(selectsearch_mode, type);
- break;
- case XK_exclam :
- term.c.x = term.col >> 1;
- select_or_drawcursor(selectsearch_mode, type);
- break;
- case XK_asterisk :
- case XK_KP_Multiply :
- term.c.x = term.col >> 1;
- case XK_underscore :
- term.c.y = cu.y >> 1;
- select_or_drawcursor(selectsearch_mode, type);
- break;
- default :
- if ( ksym >= XK_0 && ksym <= XK_9 ) { /* 0-9 keyboard */
- quant = (quant * 10) + (ksym ^ XK_0);
- return 0;
- }
- else if ( ksym >= XK_KP_0 && ksym <= XK_KP_9 ) { /* 0-9 numpad */
- quant = (quant * 10) + (ksym ^ XK_KP_0);
- return 0;
- }
- else if ( ksym == XK_k || ksym == XK_h )
- i = ksym & 1;
- else if ( ksym == XK_l || ksym == XK_j )
- i = ((ksym & 6) | 4) >> 1;
- else if ( (XK_Home & ksym) != XK_Home || (i = (ksym ^ XK_Home) - 1) > 3 )
- break;
-
- xy = (i & 1) ? &term.c.y : &term.c.x;
- sens = (i & 2) ? 1 : -1;
- bound = (i >> 1 ^ 1) ? 0 : (i ^ 3) ? term.col - 1 : term.bot;
-
- if ( quant == 0 )
- quant++;
-
- if ( *xy == bound && ((sens < 0 && bound == 0) || (sens > 0 && bound > 0)) )
- break;
-
- *xy += quant * sens;
- if ( *xy < 0 || ( bound > 0 && *xy > bound) )
- *xy = bound;
-
- select_or_drawcursor(selectsearch_mode, type);
- }
- quant = 0;
- return 0;
+ if (ksym != XK_BackSpace)
+ search(selectsearch_mode, &target[0], ptarget, sens, type, &cu);
+
+ term.dirty[term.bot] = 1;
+ drawregion(0, term.bot, term.col, term.bot + 1);
+ return 0;
+ }
+
+ switch (ksym) {
+ case -1:
+ in_use = 1;
+ cu.x = term.c.x, cu.y = term.c.y;
+ set_notifmode(0, ksym);
+ return MODE_KBDSELECT;
+ case XK_s:
+ if (selectsearch_mode & 1)
+ selclear();
+ else
+ selstart(term.c.x, term.c.y, 0);
+ set_notifmode(selectsearch_mode ^= 1, ksym);
+ break;
+ case XK_t:
+ selextend(term.c.x, term.c.y, type ^= 3, i = 0); /* 2 fois */
+ selextend(term.c.x, term.c.y, type, i = 0);
+ break;
+ case XK_slash:
+ case XK_KP_Divide:
+ case XK_question:
+ ksym &= XK_question; /* Divide to slash */
+ sens = (ksym == XK_slash) ? -1 : 1;
+ ptarget = 0;
+ set_notifmode(15, ksym);
+ selectsearch_mode ^= 2;
+ break;
+ case XK_Escape:
+ if (!in_use)
+ break;
+ selclear();
+ case XK_Return:
+ set_notifmode(4, ksym);
+ term.c.x = cu.x, term.c.y = cu.y;
+ select_or_drawcursor(selectsearch_mode = 0, type);
+ in_use = quant = 0;
+ return MODE_KBDSELECT;
+ case XK_n:
+ case XK_N:
+ if (ptarget)
+ search(selectsearch_mode, &target[0], ptarget, (ksym == XK_n) ? -1 : 1, type, &cu);
+ break;
+ case XK_BackSpace:
+ term.c.x = 0;
+ select_or_drawcursor(selectsearch_mode, type);
+ break;
+ case XK_dollar:
+ term.c.x = term.col - 1;
+ select_or_drawcursor(selectsearch_mode, type);
+ break;
+ case XK_Home:
+ term.c.x = 0, term.c.y = 0;
+ select_or_drawcursor(selectsearch_mode, type);
+ break;
+ case XK_End:
+ term.c.x = cu.x, term.c.y = cu.y;
+ select_or_drawcursor(selectsearch_mode, type);
+ break;
+ case XK_Page_Up:
+ case XK_Page_Down:
+ term.c.y = (ksym == XK_Prior ) ? 0 : cu.y;
+ select_or_drawcursor(selectsearch_mode, type);
+ break;
+ case XK_exclam:
+ term.c.x = term.col >> 1;
+ select_or_drawcursor(selectsearch_mode, type);
+ break;
+ case XK_asterisk:
+ case XK_KP_Multiply:
+ term.c.x = term.col >> 1;
+ case XK_underscore:
+ term.c.y = cu.y >> 1;
+ select_or_drawcursor(selectsearch_mode, type);
+ break;
+ default:
+ if (ksym >= XK_0 && ksym <= XK_9) { /* 0-9 keyboard */
+ quant = (quant * 10) + (ksym ^ XK_0);
+ return 0;
+ } else if (ksym >= XK_KP_0 && ksym <= XK_KP_9) { /* 0-9 numpad */
+ quant = (quant * 10) + (ksym ^ XK_KP_0);
+ return 0;
+ } else if (ksym == XK_k || ksym == XK_h)
+ i = ksym & 1;
+ else if (ksym == XK_l || ksym == XK_j)
+ i = ((ksym & 6) | 4) >> 1;
+ else if ((XK_Home & ksym) != XK_Home || (i = (ksym ^ XK_Home) - 1) > 3)
+ break;
+
+ xy = (i & 1) ? &term.c.y : &term.c.x;
+ sens = (i & 2) ? 1 : -1;
+ bound = (i >> 1 ^ 1) ? 0 : (i ^ 3) ? term.col - 1 : term.bot;
+
+ if (quant == 0)
+ quant++;
+
+ if (*xy == bound && ((sens < 0 && bound == 0) || (sens > 0 && bound > 0)))
+ break;
+
+ *xy += quant * sens;
+ if (*xy < 0 || ( bound > 0 && *xy > bound))
+ *xy = bound;
+
+ select_or_drawcursor(selectsearch_mode, type);
+ }
+ quant = 0;
+ return 0;
}
\ No newline at end of file