ref: c54c921e3df50784fd308fa6d6c7032b36991b52
parent: 64dd8d564b576f9b64b1e676ddef4d74c2375b3a
author: Ori Bernstein <ori@eigenstate.org>
date: Sat Nov 11 21:58:29 EST 2017
Implement 'ctrl+w'
--- a/irc.myr
+++ b/irc.myr
@@ -780,7 +780,6 @@
const input = {irc, evvar b
-
match ev
| `termdraw.Khome: irc.off = 0
| `termdraw.Ctrl 'a': irc.off = 0
@@ -810,10 +809,24 @@
std.slfree(irc.cmd)
irc.cmd = b
irc.off += irc.yank.len
+ | `termdraw.Ctrl 'w':
+ while irc.off > 0
+ if !std.isspace(irc.cmd[irc.off - 1])
+ break
+ ;;
+ irc.off--
+ ;;
+ while irc.off > 0
+ if std.isspace(irc.cmd[irc.off - 1])
+ break
+ ;;
+ std.sldel(&irc.cmd, irc.off - 1)
+ irc.off--
+ ;;
| `termdraw.Kbksp:
if irc.off > 0
- std.sldel(&irc.cmd, irc.off)
irc.off--
+ std.sldel(&irc.cmd, irc.off)
;;
| _:
-> false
@@ -928,7 +941,7 @@
(x, y) = draw(t, user[off:], x, y, x1, y1)
| `Part user:
(x, y) = draw(t, "#parted ", x0, y, x1, y1)
- (x, y) = draw(t, user[off:], x, y, y, y1)
+ (x, y) = draw(t, user[off:], x, y, x1, y1)
| `Status msg:
(x, y) = draw(t, "! ", x0, y, x1, y1)
(x, y) = draw(t, msg[off:], x, y, x1, y1)
--
⑨