ref: 68d69528bd1009b26ef0d01e38f271d22133031a
parent: 49075757a7eb606af381a341cda24df578817c55
author: Ori Bernstein <ori@eigenstate.org>
date: Thu Jun 8 09:20:18 EDT 2017
Fix typographic issues.
--- a/irc.myr
+++ b/irc.myr
@@ -18,6 +18,8 @@
user : byte[:]
nick : byte[:]
input : byte[:]
+ hist : byte[:][:]
+ histidx : std.size
;;
type server = struct
@@ -39,7 +41,7 @@
topic : byte[:]
users : byte[:][:]
stale : bool
- gutter : int
+ gutter : std.size
;;
const main = {@@ -96,11 +98,12 @@
| "376": srvmsg(cli, args)
| "NOTICE": srvmsg(cli, args)
| "332": topic(cli, srv, args)
- | "353": names(cli, srv, args)
+ | "353": addnames(cli, srv, args)
+ | "366": shownames(cli, [][:])
| "PRIVMSG": recievemsg(cli, srv, src, args)
| "PING": send(cli, srv, "PONG :{}\r\n", args[0])| "JOIN": joinchan(cli, srv, src, args, ln)
- | "PART": joinchan(cli, srv, src, args, ln)
+ //| "PART": joinchan(cli, srv, src, args, ln)
| c:
status(cli, "unknown server command {}\n", ln);;
@@ -136,7 +139,7 @@
chanmsg(cli, c, src, args[1])
}
-const names = {cli, srv, args+const addnames = {cli, srv, argsvar c
if args.len != 4
@@ -145,7 +148,7 @@
c = name2chan(srv, args[2])
for n in std.bysplit(args[3], " ")
std.slpush(&c.users, std.sldup(n))
- c.gutter = std.max(c.gutter, n.len + 4)
+ c.gutter = std.max(c.gutter, n.len + 1)
;;
}
@@ -269,6 +272,7 @@
match sp[0]
| "connect": connect(cli, sp[1:])
| "join": join(cli, sp[1:])
+ | "names": shownames(cli, sp[1:])
| "leave": leave(cli, sp[1:])
| "chan": switch(cli, sp[1:])
| "win": switch(cli, sp[1:])
@@ -320,6 +324,22 @@
;;
}
+const shownames = {cli, args+ var s, c
+
+ if args.len == 0
+ c = curchan(cli)
+ elif args.len == 1
+ -> status(cli, "names: invalid arguments: {j= }\n", args)+ ;;
+ c = curchan(cli)
+ if c != cli.self
+ s = std.fmt("{j= }", c.users)+ chanstatus(cli, c, s)
+ std.slfree(s)
+ ;;
+}
+
const handshake = {cli, srv send(cli, srv, "NICK {}\r\n", srv.nick) send(cli, srv, "USER {} 8 * :{}\r\n", srv.user, srv.user)@@ -504,8 +524,7 @@
match termdraw.event(cli.term)
| `termdraw.Kc '\n':
do(cli, cli.input)
- std.slfree(cli.input)
- cli.input = ""
+ done(cli)
| `termdraw.Kc c:
s = std.fmt("{}", c)std.sljoin(&cli.input, s)
@@ -522,6 +541,8 @@
| `termdraw.Ctrl 'u':
std.slfree(cli.input)
cli.input = ""
+ | `termdraw.Kup:
+ | `termdraw.Kdown:
| r:
s = std.fmt("{}\n", r)std.sljoin(&cli.self.buf, s)
@@ -529,6 +550,11 @@
;;
}
+const done = {cli+ std.slpush(&cli.hist, cli.input)
+ cli.input = ""
+}
+
const redraw = {clivar c, x, y, w, h
@@ -757,6 +783,12 @@
chan.stale = true
;;
+}
+
+const chanstatus = {cli, chan, msg+ std.sljoin(&chan.buf, "~~= ")
+ std.sljoin(&chan.buf, msg)
+ std.sljoin(&chan.buf, " =~~\n")
}
const writeall = {fd, buf--
⑨