]> git.lizzy.rs Git - linenoise.git/commitdiff
Highlight control characters
authorSteve Bennett <steveb@workware.net.au>
Thu, 30 Sep 2010 22:23:28 +0000 (08:23 +1000)
committerSteve Bennett <steveb@workware.net.au>
Fri, 8 Apr 2011 01:37:19 +0000 (11:37 +1000)
Signed-off-by: Steve Bennett <steveb@workware.net.au>
linenoise.c

index 081246756fc01b1c8c51211bd51c3ab18f912a83..c496841e46405eb6c31596a6c29846ad745d62de 100644 (file)
  *    Sequence: ESC [ 2 J
  *    Effect: clear the whole screen
  * 
+ * For highlighting control characters, we also use:
+ * SO (enter StandOut)
+ *    Sequence: ESC [ 7 m
+ *    Effect: Uses some standout mode such as reverse video
+ *
+ * SE (Standout End)
+ *    Sequence: ESC [ 0 m
+ *    Effect: Exit standout mode
  */
 
 #include <termios.h>
@@ -210,9 +218,8 @@ static void refreshLine(int fd, const char *prompt, char *buf, size_t len, size_
         if (buf[i] < ' ') {
             write(fd, buf + p, i - p);
             p = i + 1;
-            seq[0] = '^';
-            seq[1] = buf[i] + '@';
-            write(fd, seq, 2);
+            snprintf(seq,64,"\033[7m^%c\033[0m", buf[i] + '@');
+            if (write(fd,seq,strlen(seq)) == -1) return;
             if (i < pos) {
                 extra++;
             }