[wiki] [sites] [st][patch][blinking_cursor] Add updated patch || Steve Ward

From: <git_AT_suckless.org>
Date: Mon, 01 Jun 2020 04:54:34 +0200

commit fa4617a6d3057134446dc77e48a2f00fa8412f86
Author: Steve Ward <planet36_AT_gmail.com>
Date: Sun May 31 22:53:11 2020 -0400

    [st][patch][blinking_cursor] Add updated patch

diff --git a/st.suckless.org/patches/blinking_cursor/index.md b/st.suckless.org/patches/blinking_cursor/index.md
index d828e034..b36b512a 100644
--- a/st.suckless.org/patches/blinking_cursor/index.md
+++ b/st.suckless.org/patches/blinking_cursor/index.md
_AT_@ -6,25 +6,26 @@ Description
 This patch allows the use of a blinking cursor.
 
 To demonstrate the available cursor styles, try these commands:
- echo -e -n "\x1b[\x30 q" # blinking block
- echo -e -n "\x1b[\x31 q" # blinking block (default)
- echo -e -n "\x1b[\x32 q" # steady block
- echo -e -n "\x1b[\x33 q" # blinking underline
- echo -e -n "\x1b[\x34 q" # steady underline
- echo -e -n "\x1b[\x35 q" # blinking bar
- echo -e -n "\x1b[\x36 q" # steady bar
+ echo -e -n "\x1b[\x30 q" # Blinking block
+ echo -e -n "\x1b[\x31 q" # Blinking block (default)
+ echo -e -n "\x1b[\x32 q" # Steady block
+ echo -e -n "\x1b[\x33 q" # Blinking underline
+ echo -e -n "\x1b[\x34 q" # Steady underline
+ echo -e -n "\x1b[\x35 q" # Blinking bar
+ echo -e -n "\x1b[\x36 q" # Steady bar
+ echo -e -n "\x1b[\x37 q" # Blinking st cursor
+ echo -e -n "\x1b[\x38 q" # Steady st cursor
 
 When drawing is triggered, the cursor does not blink.
 
 Notes
 -----
-* Only cursor styles 0, 1, 3, and 5 blink. Set `cursorstyle` accordingly.
+* Only cursor styles 0, 1, 3, 5, and 7 blink. Set `cursorstyle` accordingly.
 * Cursor styles are defined [here](https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81).
 
 Download
 --------
-* [st-blinking\_cursor-20200511-914fb82.diff](st-blinking_cursor-20200511-914fb82.diff)
-* [st-blinking\_cursor-20200515-045a0fa.diff](st-blinking_cursor-20200515-045a0fa.diff)
+* [st-blinking\_cursor-20200531-a2a7044.diff](st-blinking_cursor-20200531-a2a7044.diff)
 
 Authors
 -------
diff --git a/st.suckless.org/patches/blinking_cursor/st-blinking_cursor-20200531-a2a7044.diff b/st.suckless.org/patches/blinking_cursor/st-blinking_cursor-20200531-a2a7044.diff
new file mode 100644
index 00000000..d544f743
--- /dev/null
+++ b/st.suckless.org/patches/blinking_cursor/st-blinking_cursor-20200531-a2a7044.diff
_AT_@ -0,0 +1,150 @@
+From bff176133618854676bbdc74c0099f184d3da365 Mon Sep 17 00:00:00 2001
+From: Steve Ward <planet36_AT_gmail.com>
+Date: Sun, 31 May 2020 22:48:25 -0400
+Subject: [PATCH] Allow blinking cursor
+
+---
+ config.def.h | 19 +++++++++++++------
+ x.c | 42 ++++++++++++++++++++++++++++++++----------
+ 2 files changed, 45 insertions(+), 16 deletions(-)
+
+diff --git a/config.def.h b/config.def.h
+index 6f05dce..3dbe915 100644
+--- a/config.def.h
++++ b/config.def.h
+_AT_@ -133,13 +133,20 @@ static unsigned int defaultcs = 256;
+ static unsigned int defaultrcs = 257;
+
+ /*
+- * Default shape of cursor
+- * 2: Block ("█")
+- * 4: Underline ("_")
+- * 6: Bar ("|")
+- * 7: Snowman ("☃")
++ * https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81
++ * Default style of cursor
++ * 0: Blinking block
++ * 1: Blinking block (default)
++ * 2: Steady block ("█")
++ * 3: Blinking underline
++ * 4: Steady underline ("_")
++ * 5: Blinking bar
++ * 6: Steady bar ("|")
++ * 7: Blinking st cursor
++ * 8: Steady st cursor
+ */
+-static unsigned int cursorshape = 2;
++static unsigned int cursorstyle = 1;
++static Rune stcursor = 0x2603; /* snowman (U+2603) */
+
+ /*
+ * Default columns and rows numbers
+diff --git a/x.c b/x.c
+index 210f184..bd80a5e 100644
+--- a/x.c
++++ b/x.c
+_AT_@ -253,6 +253,7 @@ static char *opt_name = NULL;
+ static char *opt_title = NULL;
+
+ static int oldbutton = 3; /* button event on startup: 3 = release */
++static int cursorblinks = 0;
+
+ void
+ clipcopy(const Arg *dummy)
+_AT_@ -1526,16 +1527,19 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og)
+ /* draw the new one */
+ if (IS_SET(MODE_FOCUSED)) {
+ switch (win.cursor) {
+- case 7: /* st extension */
+- g.u = 0x2603; /* snowman (U+2603) */
++ case 0: /* Blinking block */
++ case 1: /* Blinking block (default) */
++ if (IS_SET(MODE_BLINK))
++ break;
+ /* FALLTHROUGH */
+- case 0: /* Blinking Block */
+- case 1: /* Blinking Block (Default) */
+- case 2: /* Steady Block */
++ case 2: /* Steady block */
+ xdrawglyph(g, cx, cy);
+ break;
+- case 3: /* Blinking Underline */
+- case 4: /* Steady Underline */
++ case 3: /* Blinking underline */
++ if (IS_SET(MODE_BLINK))
++ break;
++ /* FALLTHROUGH */
++ case 4: /* Steady underline */
+ XftDrawRect(xw.draw, &drawcol,
+ borderpx + cx * win.cw,
+ borderpx + (cy + 1) * win.ch - \
+_AT_@ -1543,12 +1547,23 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og)
+ win.cw, cursorthickness);
+ break;
+ case 5: /* Blinking bar */
++ if (IS_SET(MODE_BLINK))
++ break;
++ /* FALLTHROUGH */
+ case 6: /* Steady bar */
+ XftDrawRect(xw.draw, &drawcol,
+ borderpx + cx * win.cw,
+ borderpx + cy * win.ch,
+ cursorthickness, win.ch);
+ break;
++ case 7: /* Blinking st cursor */
++ if (IS_SET(MODE_BLINK))
++ break;
++ /* FALLTHROUGH */
++ case 8: /* Steady st cursor */
++ g.u = stcursor;
++ xdrawglyph(g, cx, cy);
++ break;
+ }
+ } else {
+ XftDrawRect(xw.draw, &drawcol,
+_AT_@ -1690,9 +1705,12 @@ xsetmode(int set, unsigned int flags)
+ int
+ xsetcursor(int cursor)
+ {
+- if (!BETWEEN(cursor, 0, 7)) /* 7: st extension */
++ if (!BETWEEN(cursor, 0, 8)) /* 7-8: st extensions */
+ return 1;
+ win.cursor = cursor;
++ cursorblinks = win.cursor == 0 || win.cursor == 1 ||
++ win.cursor == 3 || win.cursor == 5 ||
++ win.cursor == 7;
+ return 0;
+ }
+
+_AT_@ -1936,6 +1954,10 @@ run(void)
+ if (FD_ISSET(ttyfd, &rfd) || xev) {
+ if (!drawing) {
+ trigger = now;
++ if (IS_SET(MODE_BLINK)) {
++ win.mode ^= MODE_BLINK;
++ }
++ lastblink = now;
+ drawing = 1;
+ }
+ timeout = (maxlatency - TIMEDIFF(now, trigger)) \
+_AT_@ -1946,7 +1968,7 @@ run(void)
+
+ /* idle detected or maxlatency exhausted -> draw */
+ timeout = -1;
+- if (blinktimeout && tattrset(ATTR_BLINK)) {
++ if (blinktimeout && (cursorblinks || tattrset(ATTR_BLINK))) {
+ timeout = blinktimeout - TIMEDIFF(now, lastblink);
+ if (timeout <= 0) {
+ if (-timeout > blinktimeout) /* start visible */
+_AT_@ -1982,7 +2004,7 @@ main(int argc, char *argv[])
+ {
+ xw.l = xw.t = 0;
+ xw.isfixed = False;
+- xsetcursor(cursorshape);
++ xsetcursor(cursorstyle);
+
+ ARGBEGIN {
+ case 'a':
+--
+2.20.1
+
Received on Mon Jun 01 2020 - 04:54:34 CEST

This archive was generated by hypermail 2.3.0 : Mon Jun 01 2020 - 05:00:46 CEST