shithub: irc.myr

Download patch

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, ev
 	var 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)
--