C. McEnroe
965b6987a9
Use Warm heat for manually inserted blank lines
...
Oops, forgot about these.
2021-01-19 10:50:55 -05:00
C. McEnroe
06683aa4e3
Use Warm heat for blank lines
...
So they're not hidden by M-+.
2021-01-17 00:35:59 -05:00
C. McEnroe
1a1fe1fb7a
Save and load window visibility thresholds
2021-01-16 13:09:55 -05:00
C. McEnroe
43b1dba720
Restore toggling ignore with M--
...
So that pressing M-- repeatedly maintains the previous behavior.
2021-01-16 13:05:01 -05:00
C. McEnroe
d05872303e
Generalize ignore toggling to visibility threshold
2021-01-16 12:58:16 -05:00
C. McEnroe
51c92f94ff
Save and load the URL ring in the save file
2021-01-11 18:05:22 -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
c48672313b
Factor out styleStrip
2020-10-09 18:45:52 -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
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
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
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
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
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
814c36223a
Say "OpenSSL" in additional permission notices
...
LibreSSL is "a modified version of that library".
2020-08-04 12:19:14 -04:00
C. McEnroe
4c1b1fc6a3
Replace catf with something that tracks len
...
Also the old catf would be broken with -DNDEBUG oops!
2020-07-30 14:37:46 -04:00
C. McEnroe
ed7d5c0f34
Initialize numHot, numWarm
...
For some reason gcc thinks that numWarm might be used uninitialized.
It's fine with numHot though, strangely.
2020-07-23 00:22:36 -04:00
C. McEnroe
787771bebb
Keep scrolled up windows in status line
2020-07-12 09:38:52 -04:00
C. McEnroe
e8f1b928b7
Call static_assert by _Static_assert
...
OpenBSD assert.h does not #define static_assert, and this is the only
thing that prevents catgirl from compiling without any issues there.
2020-06-11 15:33:59 -04:00
C. McEnroe
721c3a9ee6
Add additional permission for linking with LibreSSL
...
https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs
2020-06-08 17:48:07 -04:00
C. McEnroe
88e2197a8f
Don't send zero-width characters to ncurses
2020-05-26 15:18:55 -04:00
C. McEnroe
b352f5965b
Define constants for window geometry
...
Also fixes uiDraw so that the split lines and marker don't overlap the
main window, although that wasn't causing any real problems.
2020-05-25 13:51:09 -04:00
C. McEnroe
53f206f7e0
Tweak status line formatting
2020-05-24 12:34:23 -04:00
C. McEnroe
d8ef021506
Fix page scrolling distance for SplitLines
2020-05-14 16:56:07 -04:00
C. McEnroe
a632ee741b
Don't clobber windows.swap in else of showAuto
2020-04-20 16:12:02 -04:00
C. McEnroe
2f5ff45db0
Save last user-selected window to switch back to from M-a
2020-04-19 21:13:02 -04:00
C. McEnroe
98cbb44c0d
Add M-= to mute windows
2020-04-15 16:18:09 -04:00
C. McEnroe
470dee97c3
Add status indicator for showing ignored messages
2020-04-15 15:54:55 -04:00
C. McEnroe
9bc52d7238
Add M-< and M-> for scroll to top and bottom
...
Mirrored by S-Home and S-End but I guess I'm not documenting those...
2020-04-07 14:09:29 -04:00
C. McEnroe
7d62762609
Revert "Add C-o as alias of M-/"
...
This reverts commit 3a156540b8
.
Decided I don't like having two keys do the same thing (other than
"special" keys).
2020-04-07 13:59:54 -04:00
C. McEnroe
83a2fb0d34
Reset unreadSoft only on first unreadHard
...
Also rename unread{,Lines} to be maybe more clear and disambiguate with
buffer lines.
2020-04-07 11:06:29 -04:00
C. McEnroe
e3f7362241
Add M-q to collapse whitespace
2020-04-07 10:48:44 -04:00
C. McEnroe
241fefd976
Add scroll position to status line
2020-04-06 14:34:32 -04:00
C. McEnroe
62a3e3699c
Implement split scrolling
2020-04-06 13:46:35 -04:00
C. McEnroe
75a6aa9258
Use gnu-case-range and gnu-conditional-omitted-operand extensions
...
I'm sad to do this but I just can't stand writing (foo ? foo : bar)
anymore.
2020-04-03 17:10:52 -04:00
C. McEnroe
a0f012c614
Do not add an extra blank line on uiLoad
...
Adding one for the last unread position now, so this is mostly
redundant, I think.
2020-04-02 11:00:05 -04:00
C. McEnroe
9063c656d5
Preserve the last blank line on reflow
2020-04-02 10:56:33 -04:00
C. McEnroe
6333b63224
Switch to windows with ascending unread counts on M-a
2020-04-02 10:47:17 -04:00
C. McEnroe
ca751a1cdc
Hide filtered messages
2020-03-31 14:31:10 -04:00
C. McEnroe
fcb6e2909f
Save and load buffer line heat
2020-03-31 14:12:43 -04:00
C. McEnroe
bfa106b9a0
Store line heat in buffer
2020-03-31 14:07:21 -04:00
C. McEnroe
ff78362826
Replace some declaration; while loops with for loops
...
I should have been using this for getopt loops already but the call here
is slightly too long to fit on one line as a for loop.
2020-03-30 19:44:45 -04:00
C. McEnroe
a0dde10cb6
Add text macros
2020-03-30 14:56:26 -04:00
C. McEnroe
ef6518a627
Add M-Enter to insert a newline
2020-03-23 15:03:55 -04:00
C. McEnroe
60b189200e
Handle bracketed paste, including newlines
2020-03-23 14:55:43 -04:00
C. McEnroe
8570a62235
Implement the causal.agency/consumer capability
2020-02-29 01:03:46 -05:00
C. McEnroe
d5c4e7e371
Apply word wrapping to tabs before setting align
...
This fixes long URLs right after the initial \t being wrapped and line
counted incorrectly.
2020-02-19 20:31:29 -05:00
C. McEnroe
ab94728913
Remove bad continues in styleParse loops
...
Since we're sometimes manually doing spaces that need the right styling.
2020-02-19 02:11:17 -05:00
C. McEnroe
026a8ca979
Various small cleanup in ui.c
2020-02-19 01:18:09 -05:00
C. McEnroe
6be9aa9901
Increase buffer size to 1024
2020-02-17 23:06:37 -05:00
C. McEnroe
079bbda246
Accept Shift-M-0 through Shift-M-9 as well
...
This mostly just to accommodate my inverted keyboard layout.
2020-02-17 12:27:07 -05:00
C. McEnroe
cf83e95114
Only scroll after reflow if necessary
...
If we've already filled up every line of the window, there is no need to
scroll.
2020-02-17 11:57:29 -05:00
C. McEnroe
fa29c37911
Scroll the window only once during reflow
...
ncurses implements scrolling as a memmove of the array of lines
pointers, which happens each time a line is added to the bottom of the
window, causing a scroll. This would get noticeably slow if WindowLines
were increased to just 1024. Should've used a ring buffer, I think.
2020-02-17 11:49:56 -05:00
C. McEnroe
b20be7cbad
Various small cleanups
...
Haven't really gone through ui.c yet.
2020-02-16 23:05:43 -05:00
C. McEnroe
ba524ed804
Replace a lot of snprintf with a catf implementation
2020-02-16 19:12:19 -05:00
C. McEnroe
700b5d5870
Replace small integers in size_t with uint
2020-02-15 22:19:55 -05:00
C. McEnroe
42d106260b
Separate network info from self
2020-02-15 04:54:53 -05:00
C. McEnroe
0d23f8f1b8
Save heat, unreadTotal, unreadWarm
2020-02-14 05:20:22 -05:00
C. McEnroe
fbdfb36085
Track unreadTotal and unreadWarm separately
...
Otherwise reflow's calculation of unreadLines is always going to be
wrong if there were Cold lines interspersed.
2020-02-14 05:19:33 -05:00
C. McEnroe
3b257a55c3
Set hidden to true initially
...
Otherwise uiShow in uiInit does nothing, of course.
2020-02-13 22:32:35 -05:00
C. McEnroe
4405b89f6c
Only uiShow if hidden and only uiHide if shown
2020-02-13 22:09:25 -05:00
C. McEnroe
1e226593ef
Rename procPipe to utilPipe
2020-02-13 21:57:55 -05:00
C. McEnroe
a6bc2ea7c3
Set swap correctly when closing a window
...
I knew I missed something.
2020-02-13 05:10:55 -05:00
C. McEnroe
92ccabaafd
Refactor windows into array and add /move
...
Oof.
2020-02-13 05:05:53 -05:00
C. McEnroe
180bbc7b38
Add -N flag for notifications
2020-02-12 20:12:34 -05:00
C. McEnroe
4198f67aa2
Mark and unmark on uiHide, uiShow
2020-02-12 19:40:55 -05:00
C. McEnroe
7285906298
Hide debug prompt if buffer starts with /
2020-02-12 19:36:26 -05:00
C. McEnroe
14ae13f781
Add C-t transpose
...
Also in emacs, weechat.
2020-02-12 01:16:40 -05:00
C. McEnroe
aab9f76fa0
Add C-v and M-v
...
I figure there should be some way to scroll without keypad, and
apparently this is what emacs offers...
2020-02-12 01:00:39 -05:00
C. McEnroe
8d873c71ed
Support monochromatic terminals
...
Oops, division by zero!
2020-02-11 23:01:38 -05:00
C. McEnroe
907d4b4605
Exit focus and paste modes on err exit
2020-02-11 21:56:29 -05:00
C. McEnroe
7783d89448
Call completeClear when closing a window
2020-02-11 18:18:48 -05:00
C. McEnroe
c9590bab06
Use time_t for save signature
...
It's actually more likely to be 64-bit than size_t anyway, and it
eliminates some helper functions.
Also don't error when reading an empty save file.
2020-02-11 18:01:50 -05:00
C. McEnroe
cc80fae758
Set self.nick to * initially
...
Allows removing a bunch of checks that self.nick is set, and it's what
the server usually calls you before registration.
Never highlight notices as mentions.
2020-02-11 17:52:55 -05:00
C. McEnroe
2771863299
Define ColorCap instead of hardcoding 100
2020-02-11 17:43:36 -05:00
C. McEnroe
86fac7caad
Cast towupper to wchar_t
...
For some reason it takes and returns wint_t...
2020-02-11 03:48:50 -05:00
C. McEnroe
b855ec6210
Cast set but unused variables to void
2020-02-11 03:47:30 -05:00
C. McEnroe
2404e15e72
Check if VDSUSP exists
2020-02-11 03:42:06 -05:00
C. McEnroe
bf86a4749f
Invalidate title on uiShow
2020-02-10 22:05:02 -05:00
C. McEnroe
66fe89b84b
Only write out title if it has changed
2020-02-10 21:34:23 -05:00
C. McEnroe
90eff04eda
Only write out title on uiDraw
2020-02-10 21:24:30 -05:00
C. McEnroe
47a0bf7fc2
Manually raise SIGINT from C-c
...
This allows it to still work, but makes C-z C-c insert the color code
rather than exit, and in the future, will allow pasting in text with
color codes.
2020-02-10 21:09:32 -05:00
C. McEnroe
2c2839e6c1
Replace alignment tabs with spaces in bufferList
2020-02-10 20:54:17 -05:00
C. McEnroe
3a156540b8
Add C-o as alias of M-/
...
M-/ is from weechat. C-o is like in vim.
2020-02-10 20:29:19 -05:00
C. McEnroe
99480a42e5
Factor out XDG base directory code
...
And add warnings to configOpen, since that's the only way to be accurate
if a weird error occurs.
2020-02-10 19:57:10 -05:00
C. McEnroe
e6c18403e2
Leave a blank line after loaded buffer
2020-02-10 19:44:35 -05:00