From: Christian Heller Date: Mon, 27 Oct 2025 06:40:14 +0000 (+0100) Subject: Adapt indent, highlight nicknames in chat windows, add line formattings test. X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/%7B%7Bprefix%7D%7D/do_day?a=commitdiff_plain;h=3f3b39ba61a5142a2088af6e098afd8fa293b823;p=ircplom Adapt indent, highlight nicknames in chat windows, add line formattings test. --- diff --git a/src/ircplom/client_tui.py b/src/ircplom/client_tui.py index fd5e8aa..92806d5 100644 --- a/src/ircplom/client_tui.py +++ b/src/ircplom/client_tui.py @@ -359,8 +359,10 @@ class _TuiClientDb(_UpdatingNode, SharedClientDbFields): 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)] diff --git a/src/ircplom/tui_base.py b/src/ircplom/tui_base.py index 6828580..2aecdec 100644 --- a/src/ircplom/tui_base.py +++ b/src/ircplom/tui_base.py @@ -24,7 +24,7 @@ LOG_FMT_ATTRS: dict[str, tuple[str, ...]] = { LOG_FMT_ALERT: ('bold', 'bright_red'), _LOG_PREFIX_DEFAULT: ('bright_cyan',), } -_WRAP_INDENT = 3 +_WRAP_INDENT = 2 _MIN_HEIGHT = 4 _MIN_WIDTH = 32 diff --git a/src/tests/pingpong.test b/src/tests/pingpong.test index 8423880..d2eb6fd 100644 --- a/src/tests/pingpong.test +++ b/src/tests/pingpong.test @@ -17,7 +17,7 @@ log 1 >.. NICK :foo 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 diff --git a/src/tests/test.test b/src/tests/test.test index d0cc2a3..729808d 100644 --- a/src/tests/test.test +++ b/src/tests/test.test @@ -23,11 +23,11 @@ log 1 >.. NICK :foo × 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 @@ -103,7 +103,7 @@ loggedservermsg 0 1 <.. :foo1 MODE foo1 :+Ziw 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 @@ -133,7 +133,7 @@ log 4 $.. residents: bar, foo1 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'))] @@ -170,16 +170,16 @@ log 1 $.. me 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 diff --git a/src/tests/tui_draw.test b/src/tests/tui_draw.test index b3eb39c..b0aca13 100644 --- a/src/tests/tui_draw.test +++ b/src/tests/tui_draw.test @@ -157,9 +157,9 @@ line 21 on_black,bright_red,bold #!. §§:§§:§§ invalid prompt command: /6 u 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§§ @@ -187,9 +187,9 @@ line 18 on_black,bright_green >.. §§:§§:§§ NICK :foo§§ 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 diff --git a/src/tests/tui_line_formattings.test b/src/tests/tui_line_formattings.test new file mode 100644 index 0000000..fbf3ade --- /dev/null +++ b/src/tests/tui_line_formattings.test @@ -0,0 +1,76 @@ +> /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§