is_server_msg = not (update.value.sender or update.value.target)
brackets = '()' if update.value.is_notice else '[]'
toks = [f':{brackets[0]}']
+ toks += ['RAW:{bold|']
toks += [f':{update.value.sender}' if update.value.sender
else (':server' if is_server_msg else 'NICK:me')]
+ toks += ['RAW:}']
toks += [f':{brackets[1]} {update.value.content}']
update.results += [
(_LogScope.SERVER if is_server_msg else _LogScope.CHAT, toks)]
LOG_FMT_ALERT: ('bold', 'bright_red'),
_LOG_PREFIX_DEFAULT: ('bright_cyan',),
}
-_WRAP_INDENT = 3
+_WRAP_INDENT = 2
_MIN_HEIGHT = 4
_MIN_WIDTH = 32
insert trigger-ping : +0
loggedservermsg 0 1 <.. :*.?.net PONG *.?.net :what's up?
loggedservermsg 0 1 <.. :*.?.net NOTICE * :*** Looking up your ident...
-log 2 <.. (server) *** Looking up your ident...
+log 2 <.. ({bold|server}) *** Looking up your ident...
# another timeout instead of pong? disconnect
insert trigger-ping : +0
servermsg 0 timeout
× conn_init_1
# expect some NOTICE and PING to process/reply during initiation
loggedservermsg 0 1 <.. :*.?.net NOTICE * :*** Looking up your ident...
-log 2 <.. (server) *** Looking up your ident...
+log 2 <.. ({bold|server}) *** Looking up your ident...
loggedservermsg 0 1 <.. :*.?.net NOTICE * :*** Looking up your hostname...
-log 2 <.. (server) *** Looking up your hostname...
+log 2 <.. ({bold|server}) *** Looking up your hostname...
loggedservermsg 0 1 <.. :*.?.net NOTICE * :*** Found your hostname (baz.bar.foo)
-log 2 <.. (server) *** Found your hostname (baz.bar.foo)
+log 2 <.. ({bold|server}) *** Found your hostname (baz.bar.foo)
loggedservermsg 0 1 <.. PING :?
log 1 >.. PONG :?
# handle 433
log 1 $.. users:me:modes set to: [+Ziw]
# handle bot query NOTICE
loggedservermsg 0 1 <.. :SaslServ!SaslServ@services.bar.baz NOTICE foo1 :Last login from ~foobarbaz@foo.bar.baz on Jan 1 22:00:00 2021 +0000.
-log 3 <.. (SaslServ) Last login from ~foobarbaz@foo.bar.baz on Jan 1 22:00:00 2021 +0000.
+log 3 <.. ({bold|SaslServ}) Last login from ~foobarbaz@foo.bar.baz on Jan 1 22:00:00 2021 +0000.
× during_conn
# test recoverable 432
loggedservermsg 0 1 <.. :bar!~bar@bar.bar PRIVMSG #test :hi there
log 1 $.. users:1:user set to: [~bar]
log 1 $.. users:1:host set to: [bar.bar]
-log 4 <.. [bar] hi there
+log 4 <.. [{bold|bar}] hi there
# check _changing_ TOPIC message is communicated to channel window, as long as either content or who change
loggedservermsg 0 1 <.. :bar!~bar@bar.bar TOPIC #test :foo bar baz
log 1 $.. channels:#test:topic set to: [Topic(what='foo bar baz', who=NickUserHost(nick='bar', user='~bar', host='bar.bar'))]
log 5 $.. residents: baz, foo1
# handle query window with known user
loggedservermsg 0 1 <.. :baz!~baz@baz.baz PRIVMSG foo1 :hi there
-log 6 <.. [baz] hi there
+log 6 <.. [{bold|baz}] hi there
> /privmsg baz hello, how is it going
log 1 >.. PRIVMSG baz :hello, how is it going
-log 6 >.. [foo1] hello, how is it going
+log 6 >.. [{bold|foo1}] hello, how is it going
loggedservermsg 0 1 <.. :baz!~baz@baz.baz PRIVMSG foo1 :fine!
-log 6 <.. [baz] fine!
+log 6 <.. [{bold|baz}] fine!
# handle failure to query absent user
> /privmsg barbar hello!
log 1 >.. PRIVMSG barbar :hello!
-log 7 >.. [foo1] hello!
+log 7 >.. [{bold|foo1}] hello!
loggedservermsg 0 1 <.. :*.?.net 401 foo1 barbar :No such nick/channel
log 7 $!. barbar not online
# handle non-self renaming
line 22 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /7 unknown§§
line 23 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /foo_0123456789_0123456789_01234567 unknown§§
line 24 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /foo_0123456789_0123456789_012345678§§
-line 25 on_black,bright_red,bold unknown§§
+line 25 on_black,bright_red,bold unknown§§
line 26 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /bar_0123456789_0123456789_012345678§§
-line 27 on_black,bright_red,bold unknown§§
+line 27 on_black,bright_red,bold unknown§§
line 28 on_black,bright_cyan #.. §§:§§:§§ windows available via /window:§§
line 29 on_black,bright_cyan #.. §§:§§:§§ 0) :start§§
line 30 on_black,bright_cyan #.. §§:§§:§§ 1) foo.bar.baz:debug§§
line 19 on_black,bright_white <.. §§:§§:§§ PING :?
line 20 on_black,bright_green >.. §§:§§:§§ PONG :?
line 21 on_black,bright_white <.. §§:§§:§§ PING :123456789 123456789 123456789 123456789 123456789 123456789§§
-line 22 on_black,bright_white 123456789 123456789§§
+line 22 on_black,bright_white 123456789 123456789§§
line 23 on_black,bright_green >.. §§:§§:§§ PONG :123456789 123456789 123456789 123456789 123456789 123456789§§
-line 24 on_black,bright_green 123456789 123456789§§
+line 24 on_black,bright_green 123456789 123456789§§
line 25 on_black,bright_white <.. §§:§§:§§ PING :foo
line 26 on_black,bright_green >.. §§:§§:§§ PONG :foo
line 27 on_black,bright_white <.. §§:§§:§§ PING :bar
--- /dev/null
+> /connect foo.bar.baz foo bar:baz
+log 1 $.. isupport cleared
+log 1 $.. isupport:CHANTYPES set to: [#&]
+log 1 $.. isupport:PREFIX set to: [(ov)@+]
+log 1 $.. isupport:USERLEN set to: [10]
+log 1 $.. caps cleared
+log 1 $.. users cleared
+log 1 $.. channels cleared
+log , $.. DISCONNECTED
+log 1 $.. hostname set to: [foo.bar.baz]
+log 1 $.. port set to: [-1]
+log 1 $.. nick_wanted set to: [foo]
+log 1 $.. user_wanted set to: [baz]
+log 1 $.. realname set to: [bar]
+log 1 $.. port set to: [6697]
+log 1 $.. connection_state set to: [connecting]
+log 1 $.. connection_state set to: [connected]
+log , $.. CONNECTED
+log 1 >.. CAP LS :302
+log 1 >.. USER baz 0 * :bar
+log 1 >.. NICK :foo
+> /window 1
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :Welcome to the foo.bar.baz network
+log 1 $.. users:me:nick set to: [?]
+log 1 $.. users:me:nick set to: [foo]
+
+# check full line not wrapped
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 12345678 0
+line 21 on_black,bright_white <.. §§:§§:§§ :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 12345678 0§§
+
+# check wrap if last space-separated item one char too long
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 12345678 01
+line 20 on_black,bright_white <.. §§:§§:§§ :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 12345678§§
+line 21 on_black,bright_white 01§§
+
+# check wrap if item starts right after width-final space
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 123456789 1
+line 20 on_black,bright_white <.. §§:§§:§§ :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 123456789§§
+line 21 on_black,bright_white 1§§
+
+# check wrap if item starts right after space after item extending to end of width
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 1234567890 2
+line 20 on_black,bright_white <.. §§:§§:§§ :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 1234567890§§
+line 21 on_black,bright_white 2§§
+
+# check wrap if item starts right after double-space after item extending to end of width
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 1234567890 3
+line 20 on_black,bright_white <.. §§:§§:§§ :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 1234567890§§
+line 21 on_black,bright_white 3§§
+
+# check wrap on item too large to fit into screen width minus indent
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_2345678
+line 19 on_black,bright_white <.. §§:§§:§§ :foo.bar.baz 001 foo§§
+line 20 on_black,bright_white :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_234567§§
+line 21 on_black,bright_white 8
+
+# check wrapping calculation on double-width character (tbh not much of a test since the tester itself counts specifically this char as two, so it's pretty much the same as above testing with a sequence of two ASCII chars; mostly just ensures that the wrapping code relies on Terminal.length_to_term)
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 1234567 💓
+line 21 on_black,bright_white <.. §§:§§:§§ :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 1234567 💓§§
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 12345678 💓
+line 20 on_black,bright_white <.. §§:§§:§§ :foo.bar.baz 001 foo :6789 123456789 123456789 123456789 12345678§§
+line 21 on_black,bright_white 💓§§
+loggedservermsg 0 1 <.. :foo.bar.baz 001 foo :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_23456💓
+line 19 on_black,bright_white <.. §§:§§:§§ :foo.bar.baz 001 foo§§
+line 20 on_black,bright_white :2345678_1_2345678_2_2345678_3_2345678_4_2345678_5_2345678_6_2345678_7_23456§§
+line 21 on_black,bright_white 💓§§
+
+# check interpretation and escape of formatting characters
+servermsg 0 :*.?.net NOTICE * :*** checking {esc|ape}s, formatting not counting into wrap
+log 1 <.. :*.?.net NOTICE * :*** checking {{esc|ape{}s, formatting not counting into wrap
+log 2 <.. ({bold|server}) *** checking {{esc|ape{}s, formatting not counting into wrap
+line 20 on_black,bright_white <.. §§:§§:§§ :*.?.net NOTICE * :*** checking {esc|ape}s, formatting not counting§§
+line 21 on_black,bright_white into wrap§§
+> /window 2
+line 21 on_black,bright_white <.. §§:§§:§§ (§§§§§§) *** checking {esc|ape}s, formatting not counting into wrap§§
+line 21 on_black,bright_white,bold §§§§§§§§§§§§§§server§