Commit Graph

885 Commits (3e0b38e48e923ea147e4ecd23dab24166e7f3ce2)

Author SHA1 Message Date
C. McEnroe d6b4aed4df Split /exec lines by \r as well as \n
This fixes local rendering of /exec toilet --irc, which outputs \r\n
line endings.
2020-11-24 19:15:57 -05:00
C. McEnroe e4aa21d788 Add topic diffing to notable features 2020-11-11 13:27:22 -05:00
C. McEnroe a1dece3df9 Use wmemcpy/wmemmove 2020-11-08 16:21:34 -05:00
C. McEnroe ded0455d3e Remove static buffer from colorMentions 2020-11-08 15:16:25 -05:00
C. McEnroe a8264f31e0 Remove static buffer from capList 2020-11-08 15:07:13 -05:00
C. McEnroe a0abd6582e Highlight changed portion of topic
"%.*ls" is useless.
2020-11-08 12:42:01 -05:00
C. McEnroe 59006d18bb Avoid eating C-c while connecting
Split UI initialization into two steps either side of the call to
connect, so that C-c works as interrupt while it's blocked.
2020-10-12 19:25:08 -04:00
C. McEnroe 53f23942a4 Clear wrapping point at alignment tab
This fixes odd wrapping when a nick contains a hyphen and there are no
further wrapping points.
2020-10-09 22:52:44 -04:00
C. McEnroe 1cc61723c9 Strip formatting from URLs
Notably this fixes opening URLs from litterbox queries where part of the
URL is highlighted.
2020-10-09 19:15:25 -04:00
C. McEnroe c48672313b Factor out styleStrip 2020-10-09 18:45:52 -04:00
C. McEnroe f7f5acbbe2 Double up /help for server help
While the automatic search via LESS is neat, I don't think it's very
useful. Just always open the manual to the COMMANDS section, and fix it
to append to LESS rather than replace it.
2020-10-02 19:38:37 -04:00
C. McEnroe f3a56b0d01 Use WHO for /ops
Accumulate names in a buffer and show away status.
2020-09-30 19:21:34 -04:00
C. McEnroe 3e67bf6557 Add /ops command
It's pretty awkward with large channels since NAMES isn't sorted by
prefixes or anything... But having it accumulate names across many
replies would require more reworking.
2020-09-30 17:52:39 -04:00
C. McEnroe dce6c11cf6 Allow 2-param form of /whois, count comma-separated nicks
I do not feel like documenting the 2-param form of /whois because it is
weird, but it should work for those who already know about it.
2020-09-18 18:26:13 -04:00
C. McEnroe 2b8a45779d Switch back to checking for server by nick with '.'
This fixes a bug where if you send a private message before joining any
channels, your message will be routed to the <network> window. That
happens because without a JOIN, self.user remains unset, which means
that require will copy self.nick (set by echoMessage) to self.host. The
easiest solution is to go back to checking for '.' and add a '.' to the
default nick, so now if a server sends a NOTICE with no origin it will
look like -*.*- which is kinda cute.
2020-09-18 18:13:09 -04:00
C. McEnroe b2de129e3f Copy style from wrapping point
This fixes a bug when wrapping on a word with style changes inside it,
where the copied style would be different depending on the width of the
terminal.
2020-09-11 19:12:42 -04:00
C. McEnroe ef59e235eb Silence set-but-unused warning
getyx is so annoying this way.
2020-09-09 18:04:41 -04:00
C. McEnroe 9513542c6d Include DEL in characters ncurses will print in ^A form 2020-09-08 14:54:51 -04:00
C. McEnroe cf42595515 Add blank line to unread if there are already unread
This fixes the inconsistent M-u behaviour when catgirl is restarting and
reconnecting to pounce, for example.
2020-09-07 22:21:41 -04:00
C. McEnroe 4ca49debb1 Call uiWrite to insert blank lines
It only used to use different code to avoid adding the blank line to the
soft buffer.
2020-09-07 22:13:09 -04:00
C. McEnroe 172d01a668 Let wrapped lines use the last column 2020-09-07 17:51:09 -04:00
C. McEnroe 05f94f1b8b Handle non-alignment tabs in line wrapping 2020-09-06 22:43:50 -04:00
C. McEnroe f0fe44f355 Add C-r, C-s for basic scrollback search 2020-09-06 20:40:29 -04:00
C. McEnroe 49e626b2f3 Add M-n, M-p to jump to highlights 2020-09-03 16:37:31 -04:00
C. McEnroe dbc0c3ef40 Fix M-u behaviour difference before and after reflow 2020-09-03 15:50:39 -04:00
C. McEnroe 0968a8ac7c Recalculate unreadHard on reflow 2020-09-02 21:29:03 -04:00
C. McEnroe a46fbea0ec Give blank lines timestamps
Otherwise the zero timestamps totally break save data loading! Bad!
2020-09-02 19:31:05 -04:00
C. McEnroe 96386adac3 Hide ignored messages at the soft -> hard buffer layer
This restores normal scrolling behaviour.
2020-09-02 18:51:07 -04:00
C. McEnroe e229931253 Don't call completeTouch for ignored messages 2020-09-02 17:51:51 -04:00
C. McEnroe 16737d4edc Preserve style after alignment
This makes wrapping text with background colour look much better.
2020-09-02 17:08:21 -04:00
C. McEnroe 99612ad8eb Still add ignored lines to unreadHard
Scrolling is still affected by hidden lines (which I'm not sure yet is
good or not), so for M-u to work it needs to count ignored lines.
2020-09-02 16:52:57 -04:00
C. McEnroe d00b3d3b70 Actually insert blank lines in the soft buffer
So they can be preserved forever!
2020-09-02 16:29:38 -04:00
C. McEnroe 9679c7474e Reimplement split scrolling 2020-09-02 16:06:34 -04:00
C. McEnroe a0c8a46c75 Fix inserting blank lines BEFORE the new message 2020-09-02 15:57:36 -04:00
C. McEnroe 6fe5368ec7 Only call windowUpdate when the shown window needs updating 2020-09-02 15:50:13 -04:00
C. McEnroe 1563eb7d56 Don't consider the alignment tab a wrapping point 2020-09-02 15:48:47 -04:00
C. McEnroe 17898622e3 Call wclear on resize
Otherwise artefects can appear when resizing to smaller width with wide
characters at the right edge of the window.
2020-09-02 02:18:04 -04:00
C. McEnroe a84c9cdda7 Fix line wrapping in various ways
Never split a codepoint, don't set wrapping point unless we're not
already wrapping, wrap on any unicode whitespace, only clear rest of
line if still on the same line...
2020-09-02 01:57:51 -04:00
C. McEnroe 149cafc5ab Render one main window from buffers
Still missing: split scrolling and preserving a blank on reflow either
from resize or ignore toggling.

Anecdata: on one of my instances of catgirl, RAM usage of the previous
release was ~30M, RAM usage of this commit was ~12M.
2020-09-02 00:27:16 -04:00
C. McEnroe 4dc87ab9cd Implement buffer line wrapping
Not yet rendered in the UI! Just done in parallel.
2020-09-01 22:54:26 -04:00
C. McEnroe 8d1d758053 Invert meaning of unreadHard/unreadSoft to match new buffer code
Not sure why I had named them this way. Hard means hard-wrapped.
2020-09-01 20:56:09 -04:00
C. McEnroe ded2b6afb6 Factor buffer out of ui
In preparation for doing line wrapping outside of ncurses.
2020-09-01 20:36:50 -04:00
C. McEnroe a98fd70aac Move styleParse out of ui 2020-09-01 18:05:17 -04:00
C. McEnroe 8190d76086 Use a static buffer for base directory paths 2020-08-21 16:49:10 -04:00
C. McEnroe 1abeece988 Document how cert/priv are searched for
This has always been how it works, but it was previously undocumented.
2020-08-20 21:22:29 -04:00
C. McEnroe d9a0364cb4 Use configPath to load TLS cert/priv 2020-08-20 14:56:13 -04:00
C. McEnroe f432bd72fa Refactor base dir functions to iterate over paths 2020-08-20 14:08:51 -04:00
C. McEnroe b06470294d Match mentions case-sensitively
The mention coloring code already matches case-sensitively, and any
proper ping should be using tab-complete anyway so there's no reason for
differing case. And the month of June should not ping me.
2020-08-18 21:26:17 -04:00
C. McEnroe 1891c77535 Preserve colon from previous tab-complete
This fixes the case when pinging multiple nicks and one of them needs to
be cycled through.
2020-08-18 10:09:54 -04:00
C. McEnroe 10e953b8b5 Set origin fields to "*" if missing
Also determine if a message is from the server by if the host field has
been copied from the nick field.

EFNet sends NOTICEs with no origin during registration.

RFC 1459 has this to say:

> If the prefix is missing from the message, it is assumed to have
> originated from the connection from which it was received.

I suppose a more correct implementation would be to set the origin to
the hostname of the server, but we don't store that globally, so this
is good enough.
2020-08-16 22:52:01 -04:00