]> git.lizzy.rs Git - linenoise.git/commitdiff
Add support for ^W to remove a word on the left
authorSteve Bennett <steveb@workware.net.au>
Thu, 30 Sep 2010 22:32:44 +0000 (08:32 +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 3911a518d15e723995f1c531245ce1bacf83bb06..081246756fc01b1c8c51211bd51c3ab18f912a83 100644 (file)
@@ -366,6 +366,24 @@ process_char:
                 free(history[history_len]);
                 return -1;
             }
+        case 23:    /* ctrl-w */
+            /* eat any spaces on the left */
+            {
+                int n = 0;
+                while (pos > 0 && len > 0 && buf[pos - 1] == ' ') {
+                    pos--;
+                    len--;
+                    n++;
+                }
+                /* now eat any non-spaces on the left */
+                while (pos > 0 && len > 0 && buf[pos - 1] != ' ') {
+                    pos--;
+                    len--;
+                    n++;
+                }
+                memmove(buf+pos,buf+pos+n,len-pos);
+                refreshLine(fd,prompt,buf,len,pos,cols);
+            }
             break;
         case 18:    /* ctrl-r */
             {