about summary refs log tree commit diff homepage
path: root/client.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2017-08-08 21:30:41 -0400
committerJune McEnroe <june@causal.agency>2017-08-08 21:30:41 -0400
commitf000caedde4df752b91c861b56b15e05eadb8234 (patch)
tree306a0d4be789d25f16c57d7c24bc90d893a0dfad /client.c
parentRemove MADV_NOSYNC (diff)
downloadtorus-f000caedde4df752b91c861b56b15e05eadb8234.tar.gz
torus-f000caedde4df752b91c861b56b15e05eadb8234.zip
Add put mode
This is what replace mode used to do.
Diffstat (limited to '')
-rwxr-xr-xclient.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/client.c b/client.c
index 2c95468..8761f04 100755
--- a/client.c
+++ b/client.c
@@ -74,6 +74,7 @@ static enum {
     MODE_NORMAL,
     MODE_INSERT,
     MODE_REPLACE,
+    MODE_PUT,
     MODE_DRAW,
 } mode;
 static struct {
@@ -148,6 +149,12 @@ static void readInput(void) {
         return;
     }
 
+    if (mode == MODE_PUT) {
+        if (isprint(c)) clientPut(inputColor, c);
+        mode = MODE_NORMAL;
+        return;
+    }
+
     if (mode == MODE_DRAW && !drawChar) {
         if (c == ESC) mode = MODE_NORMAL;
         if (isprint(c)) {
@@ -166,6 +173,7 @@ static void readInput(void) {
         case 'i': insertMode(1, 0); break;
         case 'I': insertMode(0, 0); break;
         case 'r': mode = MODE_REPLACE; break;
+        case 'p': mode = MODE_PUT; break;
         case 'R': mode = MODE_DRAW; drawChar = 0; break;
         case 'x': clientPut(CH_COLOR(inch()), ' '); break;