Author: dumbbell
Date: Sun May 20 14:21:20 2018
New Revision: 333925
URL: https://svnweb.freebsd.org/changeset/base/333925

Log:
  teken, vt(4): Parse the "Cursor style" escape sequence
  
  The escape sequence (e.g. `^[[2 q`) was unsupported before and the
  letter `q` was displayed as a typed character. The sequence is used by
  Neovim for instance.
  
  Now, it is properly parsed. However, it is ignored, so it won't change
  the cursor style.
  
  Because the escape sequence contains a space character, the
  `gensequences` script had to be modified to support that. In the
  `sequences` file, a space is represented as the string `SP`.

Modified:
  head/sys/teken/gensequences
  head/sys/teken/sequences
  head/sys/teken/teken_subr.h

Modified: head/sys/teken/gensequences
==============================================================================
--- head/sys/teken/gensequences Sun May 20 06:14:12 2018        (r333924)
+++ head/sys/teken/gensequences Sun May 20 14:21:20 2018        (r333925)
@@ -35,10 +35,19 @@ function die(msg) {
 function cchar(str) {
        if (str == "^[")
                return "\\x1B";
+       if (str == "SP")
+               return " ";
 
        return str;
 }
 
+function csequence(str) {
+       if (str == "SP")
+               return " ";
+
+       return str;
+}
+
 BEGIN {
 FS = "\t+"
 
@@ -57,7 +66,7 @@ while (getline > 0) {
        prefix = "";
        l_prefix_name[""] = "teken_state_init";
        for (i = 1; i < nsequences; i++) {
-               n = prefix sequence[i];
+               n = prefix csequence(sequence[i]);
                l_prefix_parent[n] = prefix;
                l_prefix_suffix[n] = sequence[i];
                if (!l_prefix_name[n])

Modified: head/sys/teken/sequences
==============================================================================
--- head/sys/teken/sequences    Sun May 20 06:14:12 2018        (r333924)
+++ head/sys/teken/sequences    Sun May 20 14:21:20 2018        (r333925)
@@ -48,6 +48,7 @@ CUF   Cursor Forward                          ^[ [ a          
n
 CUP    Cursor Position                         ^[ [ H          n n
 CUP    Cursor Position                         ^[ [ f          n n
 CUU    Cursor Up                               ^[ [ A          n
+CS     Cursor style                            ^[ [ SP q       r
 DA1    Primary Device Attributes               ^[ [ c          r
 DA2    Secondary Device Attributes             ^[ [ > c        r
 DC     Delete character                        ^[ [ P          n

Modified: head/sys/teken/teken_subr.h
==============================================================================
--- head/sys/teken/teken_subr.h Sun May 20 06:14:12 2018        (r333924)
+++ head/sys/teken/teken_subr.h Sun May 20 14:21:20 2018        (r333925)
@@ -372,6 +372,25 @@ teken_subr_cursor_up(teken_t *t, unsigned int nrows)
 }
 
 static void
+teken_subr_cursor_style(teken_t *t, unsigned int style)
+{
+
+       /* TODO */
+
+       /*
+        * CSI Ps SP q
+        *   Set cursor style (DECSCUSR), VT520.
+        *     Ps = 0  -> blinking block.
+        *     Ps = 1  -> blinking block (default).
+        *     Ps = 2  -> steady block.
+        *     Ps = 3  -> blinking underline.
+        *     Ps = 4  -> steady underline.
+        *     Ps = 5  -> blinking bar (xterm).
+        *     Ps = 6  -> steady bar (xterm).
+        */
+}
+
+static void
 teken_subr_delete_character(const teken_t *t, unsigned int ncols)
 {
        teken_rect_t tr;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to