ref: 995307348c9d76513e09b520d55d0d4d0997813a
parent: 85e0e28baed5b6e97319aaaae564491f62af33b5
author: Ori Bernstein <ori@eigenstate.org>
date: Sun Nov 19 11:59:06 EST 2017
Do nick highlighting.
--- a/irc.myr
+++ b/irc.myr
@@ -35,7 +35,7 @@
nick : byte[:]
ds : byte[:]
buf : byte[512]
- off : std.size
+ nbuf : std.size
chan : chan#[:]
focus : std.size
live : bool
@@ -107,9 +107,9 @@
srv = fd2srv(irc, fd)
- match std.read(srv.fd, srv.buf[srv.off:])
+ match std.read(srv.fd, srv.buf[srv.nbuf:])
| `std.Ok 0: closed(irc, srv, "eof")
- | `std.Ok n: srv.off += n
+ | `std.Ok n: srv.nbuf += n
| `std.Err e: closed(irc, srv, "error reading")
;;
@@ -271,11 +271,11 @@
const nextln = {irc, srvvar r
- match std.strfind(srv.buf[:srv.off], "\r\n")
+ match std.strfind(srv.buf[:srv.nbuf], "\r\n")
| `std.Some i:
r = std.sldup(srv.buf[:i])
- std.slcp(srv.buf[:srv.off - i - 2], srv.buf[i + 2:srv.off])
- srv.off = srv.off - i - 2
+ std.slcp(srv.buf[:srv.nbuf - i - 2], srv.buf[i + 2:srv.nbuf])
+ srv.nbuf = srv.nbuf - i - 2
-> `std.Some r
| `std.None:
-> `std.None
@@ -899,7 +899,7 @@
margin = 0
match h
| `Msg (m, ln):
- margin = c.gutter + termdraw.strwidth(t, " > ")
+ margin = c.gutter + termdraw.strwidth(t, " | ")
width = termdraw.strwidth(t, ln)
| `Join user:
margin = termdraw.strwidth(t, "#joined: ")
@@ -932,10 +932,14 @@
for (tm, h) : c.hist[c.hist.len - c.scroll - count:]
match h
| `Msg (m, ln):
+ termdraw.setattr(t, termdraw.Bold)
+
x = std.clamp(x0 + c.gutter - termdraw.strwidth(t, m) - 3, 0, dx)
(x, y) = draw(t, m, x, y, x1, y1)
- (x, y) = draw(t, " > ", x, y, x1, y1)
+ (x, y) = draw(t, " | ", x, y, x1, y1)
+ termdraw.setattr(t, lineattr(irc, ln[off:]))
(x, y) = draw(t, ln[off:], x, y, x1, y1)
+ termdraw.setattr(t, termdraw.Normal)
| `Join user:
(x, y) = draw(t, "#joined ", x0, y, x1, y1)
(x, y) = draw(t, user[off:], x, y, x1, y1)
@@ -1016,6 +1020,17 @@
termdraw.put(t, "{}{}", chan, ln)termdraw.cursorpos(t, cx, y0)
std.slfree(ln)
+}
+
+const lineattr = {irc, ln+ match cursrv(irc)
+ | `std.None: -> termdraw.Normal
+ | `std.Some srv:
+ match std.strfind(ln, srv.nick)
+ | `std.Some _: -> termdraw.Italic
+ | `std.None: -> termdraw.Normal
+ ;;
+ ;;
}
const inputstr = {irc, chan, dx--
⑨