Commit Graph

66 Commits (35705c9eeb511a61b06fc57b68fba1b738378795)

Author SHA1 Message Date
Curtis McEnroe c06a457461
Add C-n and C-p key bindings to switch windows 2019-02-23 12:24:39 -05:00
Curtis McEnroe facc3aa9a0
Disable terminal flow control
This opens up C-o, C-q and C-s for key bindings without C-v.
2019-02-22 23:31:33 -05:00
Curtis McEnroe e20c64d5d7
Reorganize UI code for the umpteenth time
It's actually in a good state now, I think.
2019-02-22 14:11:50 -05:00
Curtis McEnroe f3db938ded
Replace "view" with "window"
I think originally I didn't want to use the same word as curses WINDOW
but it's really much clearer for the user if they're just called
windows. UI code probably needs yet another rewrite though. Still feels
messy.
2019-02-21 23:17:40 -05:00
Curtis McEnroe c0c59d093f
Remove ROT13
It's just not convenient when it can only do the whole line...
2019-02-21 23:17:40 -05:00
Curtis McEnroe 0b3d927e03
Add M-? to apply ROT13 2018-12-16 17:19:06 -05:00
Curtis McEnroe ef916ddaff
Move base64 back to pls.c 2018-12-16 16:57:43 -05:00
Curtis McEnroe 38b4a53d57
Move base64 to string.c 2018-12-16 16:21:58 -05:00
Curtis McEnroe e84c36a0bd
Factor out ircQuit 2018-12-14 16:43:49 -05:00
Curtis McEnroe 14c60a15bc
Add uint typedef 2018-12-08 13:18:13 -05:00
Curtis McEnroe 2797ac8abf
Rename verbose to raw
And change the format of the sticky tag names again.
2018-12-05 14:46:34 -05:00
Curtis McEnroe 638be4e775
Show error if disconnected unintentionally 2018-12-04 15:56:10 -05:00
Curtis McEnroe e01b03c963
Revert half-working reconnecting stuff 2018-12-04 14:58:14 -05:00
Curtis McEnroe 9106bd61fa
Add -a auth option for unimplemented SASL 2018-12-04 10:39:38 -05:00
Curtis McEnroe a8c30b898c
Implement base64 encoding
Will be used for SASL authentication.
2018-12-03 23:05:01 -05:00
Curtis McEnroe 26db6e6c10
Ignore ~ username prefixes
This simplifies a lot.
2018-12-03 00:08:24 -05:00
Curtis McEnroe 452aeb5ecf
Move host, port, pass, webp to self 2018-12-02 23:22:18 -05:00
Curtis McEnroe 0e1297e068
Add -r option for realname 2018-12-02 23:08:49 -05:00
Curtis McEnroe 5c17393d2b
Crudely handle reconnecting after suspend 2018-12-01 22:05:37 -05:00
Curtis McEnroe 414f928ac5
Handle signals consistently in the event loop 2018-11-30 19:45:34 -05:00
Curtis McEnroe 9d769111ae
Separate ircConnect and ircDisconnect 2018-11-30 18:06:43 -05:00
Curtis McEnroe d7659376d1
Add basic log replay 2018-11-29 18:20:24 -05:00
Curtis McEnroe 85ea911b79
Rename project catgirl
This simplifies things.
2018-11-27 19:13:27 -05:00
Curtis McEnroe 2eaa36a309
Add notification with notify-send 2018-10-28 02:44:09 -04:00
Curtis McEnroe 36ec6cf258
Use const char *argv[] signatures
C is really weird about this stuff, but this makes more sense to me.
2018-10-28 02:14:22 -04:00
Curtis McEnroe 3e2a9c2056
Factor out uiPrompt to call on nick change 2018-09-14 23:37:09 -04:00
Curtis McEnroe 0d7854c0d4
Move color selection to format.c 2018-09-13 16:16:11 -04:00
Curtis McEnroe 9a69869d39
Add IRCDefault to colors enum 2018-09-13 15:17:41 -04:00
Curtis McEnroe 4c4d91b449
Rewrite UI again
The persistent topic is gone and the status line is now at the top. The
status formatting still needs to be reworked. I also want to try showing
the nick in the input window so it really looks like your next message.
2018-09-13 01:03:47 -04:00
Curtis McEnroe b36a134702
Use formatParse split to position input cursor 2018-09-12 22:55:02 -04:00
Curtis McEnroe 872608e5c4
Factor out IRC formatting parsing 2018-09-12 20:23:45 -04:00
Curtis McEnroe 068cff107e
Add urlOpenMatch 2018-09-11 14:36:30 -04:00
Curtis McEnroe 86e80edfcd
Add /man command 2018-09-10 19:18:26 -04:00
Curtis McEnroe bd48cb5e7d
Move event loop to event.c 2018-09-06 00:41:06 -04:00
Curtis McEnroe 240f9ebf84
Use PascalCase for constants
Begone underscores.
2018-09-02 16:13:00 -04:00
Curtis McEnroe e5663d45df
Add aswprintf
The format string won't get checked but I'm not sure I can reasonably
use the same hack.
2018-09-02 01:03:12 -04:00
Curtis McEnroe e5f0c63e7f
Include time.h for time_t in chat.h 2018-09-02 00:09:36 -04:00
Curtis McEnroe b4ca3a5dfc
Don't clobber tab order on /who 2018-08-20 19:11:44 -04:00
Curtis McEnroe 4e4eb0de0f
Add wcsnchr, wcsnrchr, awcsntombs
This eliminates calls to editHead and editTail inside edit.c.

Oh god I'm sorry for following libc naming conventions for this stuff.
2018-08-20 18:43:16 -04:00
Curtis McEnroe e049d5a2d7
Name project chatte 2018-08-20 15:35:00 -04:00
Curtis McEnroe 9469db993c
Add logging
The reason logFmt takes a timestamp as a parameter is to support IRCv3
server-time in the future to accurately log the znc buffer. Hopefully.
2018-08-17 21:50:45 -04:00
Curtis McEnroe 38fc42f03d
Add UI "heat" for status/messages/pings
Bring back the beeps! Allow pings from notices. Also factor out
dequoting of part/quit messages.
2018-08-17 14:00:08 -04:00
Curtis McEnroe 11d445b672
Add termTitle 2018-08-13 22:54:02 -04:00
Curtis McEnroe 2ae5b6b9ab
Add /query, /part and /close
Closing a channel before parting it is a bit weird, but if I send a PART
on /close, it would get reopened again to show the part message.
2018-08-13 13:49:03 -04:00
Curtis McEnroe 1232ce451d
Factor out input param and add tagFind
So that /view can't just invent tags.
2018-08-12 23:55:12 -04:00
Curtis McEnroe 19464369c3
Fix /open ranges by passing all URLs to open(1)
This is going to be incompatible with xdg-open since it takes only one
URL at a time. Write a wrapper script.
2018-08-12 23:44:58 -04:00
Curtis McEnroe a281f89592
Rework UI code for multi-channel
Tags are now permanently assigned (and I'm betting on never needing more
than 256 of them) and the UI maps tags to a linked list of views for
easy reordering and removal. Currently, views can only be added. Views
don't have a topic window until they need one. All UI code wants to be
functional reactive.

Beeping is temporarily removed until message priorities (status,
message, ping) can be added to the UI. At that point spawning
notify-send should also be possible. Priorities will also help with
unnecessary markers, which will not appear for status messages.

The tab system is now used to send QUIT and NICK messages to all the
relevant tags. Verbose output now goes to its own tag, and sending to
it sends raw IRC.

IRC colors are now listed in chat.h and handler functions for numeric
replies have real names. The color algorithm now uses a real hash
function for hopefully better results. QUIT, PART and KICK messages are
scanned for URLs.
2018-08-11 20:02:03 -04:00
Curtis McEnroe 461bfca378
Add term.c for extra terminal features
Look at the cute little state machine!
2018-08-11 15:49:39 -04:00
Curtis McEnroe 07c750d25c
Become multi-channel
There's a lot of UI missing for it, but it technically works.
2018-08-10 23:31:20 -04:00
Curtis McEnroe e9793b4bce
Move process spawning onto the event loop
Child processes weren't being reaped before, either. I wanted to have a
function called readEmAndReap but the reaping should actually happen in
a signal handler.
2018-08-10 13:36:00 -04:00