Commit Graph

673 Commits

Author SHA1 Message Date
43de836b91
degesch: exit with error when arguments are given 2016-09-29 13:40:15 +02:00
16d10f574b
degesch: simplify highlight detection 2016-09-25 14:11:30 +02:00
4cefa5ab1b
degesch: fix highlight detection in colored text 2016-09-23 23:46:26 +02:00
92a4d4b5a7
Better support for the KILL command 2016-09-23 22:50:30 +02:00
483ab39e3c
degesch: die on configuration parse errors
Seems more sensible.
2016-07-23 20:00:40 +02:00
beaf1a1f82
degesch: fix Ctrl-J in Readline 2016-07-23 19:13:55 +02:00
d6a9e1dca1
degesch: customizable date change messages
Now also in the backlog.
2016-04-21 23:50:05 +02:00
c8e4833086
degesch: add a NOWRAP flag to formatter_flush()
--format should work as before now.

It is now also possible to rebind PageUp to show a wrapped backlog.
2016-04-21 23:50:05 +02:00
99595c0d81
degesch: update comments 2016-04-21 23:50:05 +02:00
fa5e005728
degesch: refactor Lua weak objects 2016-04-21 22:09:35 +02:00
a9b77b3206
degesch: expose channels and users to Lua 2016-04-21 22:09:35 +02:00
4665807d09
degesch: expose message parsing to Lua 2016-04-21 22:09:35 +02:00
3a8d70de66 degesch: fix crash on invalid cp1252 characters
We don't even really need iconv here.
2016-04-03 04:05:04 +02:00
8a3144f0ac degesch: update program logo
I've noticed that the old one wasn't very pleasant to look at.
2016-03-28 21:08:04 +02:00
dc71af9c31 degesch: fix two minor issues
- completely new unread markers could be created in active buffers
 - control characters confused word wrapping
2016-03-26 20:59:37 +01:00
f964495d1a degesch: don't wrap lines in pager 2016-03-26 16:41:55 +01:00
550a0419a6 degesch: detect //TRANSLIT support, use cp1252
Now BSDs should have it enabled as well.
2016-03-26 14:27:59 +01:00
9b12c830d1 degesch: remap goto-activity to M-a
weechat appears to use this key binding, so let's not reinvent it.
2016-03-26 13:11:28 +01:00
1e24d1d1b8 degesch: add partial matching /buffer goto 2016-03-26 13:00:10 +01:00
6292114c76 degesch: append message count in /buffer listing 2016-03-26 05:15:11 +01:00
e646afe5ae degesch: retain the unseen marker
Don't erase the message counts immediately.

Also make the marker visible in the pager.
2016-03-26 04:55:46 +01:00
410bcdcd78 degesch: phase 1 of word wrapping implementation 2016-03-26 04:52:05 +01:00
1c9de9291b degesch: cleanup, fix no-tty mode FWIW
Removed the no color mode that couldn't even be enabled.

Not sure why we still support running without a proper terminal
but let's at least not make it crash for now.
2016-03-13 16:44:06 +01:00
f96fa66168 degesch: add a --format switch 2016-03-12 14:28:17 +01:00
42d88f87f5 degesch: add unbound commands for buffer movement 2016-03-10 00:07:59 +01:00
a1c4a1ef3a degesch: fix binding to our own fns from inputrc 2016-03-10 00:06:28 +01:00
dc248b8840 degesch: add goto activity and highlight 2016-03-08 22:29:40 +01:00
09c7d9a65d degesch: fix mIRC color parsing 2016-03-08 01:59:51 +01:00
0f1fd2eb3a Update NEWS, cleanup 2016-03-07 23:43:47 +01:00
696273558e degesch: rewrite input layer
Now with less #ifdefs.
2016-03-07 22:52:56 +01:00
584d2f0295 degesch: use libffi to unify input callbacks
And fuck you both, Readline and Editline.
2016-03-06 18:12:12 +01:00
17804fa49b degesch: fix +=/-= to null config items 2016-03-05 19:15:40 +01:00
6190733079 degesch: mark a problem 2016-02-29 02:50:41 +01:00
056e0a4765 Resolve tls_ca_{file,path} relative to config dir 2016-02-19 23:46:44 +01:00
06b03d336e degesch: fix segfault on sent messages w/o buffer 2016-02-12 04:04:35 +01:00
11519ee860 degesch: update screen size when terminal resumed
Apparently we don't receive the events when we give up the terminal.
2016-02-10 23:02:33 +01:00
03d5b27398 degesch: use mkstemp() with a safe umask 2016-02-09 13:52:56 +01:00
3315b16f79 degesch: log messages from /quote and plugins
That is, parse back all output messages and log based on that.
2016-02-09 05:10:41 +01:00
333ad2c981 degesch: allow changing the list of used CAPs
Bump liberty.
2016-02-01 21:57:43 +01:00
a850ee45f1 degesch: optimize buffer memory usage
We have approximately 5 formatter_items per buffer_line.  Let's assume
we're on a 64-bit machine.  Then there were (5 * 2) + 3 useless pointers
(104 bytes) as well as 5 * (4 + 4) = 40 bytes of wasted space because
of needless padding.  That's 144 bytes already.  Compared to that, this
change adds 16 bytes of overhead for an array sentinel, i.e. 128B less.

With a limit of 1000 lines per buffer, we've saved ~128kB per buffer
on completely useless data, and code complexity stays roughly the same.

All in all, memory usage for buffers should be about 50% lower.
2016-01-31 21:43:23 +01:00
10a264ec3d kike: add support for IRCv3.2 server-time 2016-01-31 21:43:23 +01:00
f57664ddd0 degesch: add an assertion
It should never fail with current code.
2016-01-18 00:59:43 +01:00
773d14e740 degesch: disable TLS compression 2016-01-18 00:45:20 +01:00
221ae03b5c degesch: Lua: fix memory leak on load failure 2016-01-17 22:57:16 +01:00
588a696c68 degesch: lesser heap fragmentation 2016-01-17 22:15:48 +01:00
fdeb550ee0 degesch: fix backlog limit
It was effectively infinite.
2016-01-15 22:11:05 +01:00
c4a18ec8a7 degesch: fix and simplify screen handling
Now with less madness.
2016-01-15 05:40:20 +01:00
d0db1a6cdc degesch: enforce fullscreen buffers
Probably long overdue.

Now we actually look like something resembling a regular IRC client.
2016-01-15 05:12:03 +01:00
9333081178 degesch: option for fullscreen buffers 2016-01-15 05:09:42 +01:00
b7c9e8ca23 degesch: make backlog limit configurable 2016-01-15 05:09:42 +01:00
f39e2a4bc8 degesch: Lua: add autocomplete hooks 2016-01-15 02:39:10 +01:00
56858a97dd degesch: Lua: allow simulating user input
Also added UTF-8 validation to buffer:log() while I'm at it.
2016-01-14 03:34:29 +01:00
331d1842b9 Bump liberty, shuffle some code 2016-01-14 03:26:02 +01:00
32f719dec7 degesch: Lua: pass hostname to on_connected 2016-01-09 06:19:54 +01:00
0b92e9210c degesch: Lua: set sockets to nonblocking 2016-01-09 05:47:24 +01:00
092e9b5101 Bump liberty 2016-01-09 05:27:45 +01:00
faa0c989f8 degesch: Lua: actually allow filtering out input 2016-01-09 05:05:46 +01:00
53e72dd12d degesch: Lua: provide a traceback on load error 2016-01-09 05:01:50 +01:00
83c14ba264 degesch: Lua: fix plugin configuration names 2016-01-09 05:01:50 +01:00
64143a5957 degesch: Lua: fix luaL_ref() usage 2016-01-09 05:01:50 +01:00
aca153f575 degesch: Lua: fix configuration loading
Not the cleanest solution but it has to do for now.
2016-01-09 05:01:50 +01:00
79f46752d4 degesch: make sure newlines are output correctly 2016-01-08 08:40:40 +01:00
2a180ee084 degesch: Lua: finish implementation of connection 2016-01-07 22:49:53 +01:00
6754c59890 degesch: Lua: avoid resource leak
If a connector's on_success callback fails, we need to destroy the connection.
2016-01-07 22:49:53 +01:00
376bbea249 Factor out socket_io_try_{read,write}()
To be reused in Lua connection API.
2016-01-07 22:49:53 +01:00
a5ac0d24b8 degesch: fix handling of input editor death 2016-01-07 22:49:53 +01:00
1d3910fd8e degesch: fix switching of buffers by command
Readline used to erase the new buffer's contents.

Defer processing.
2016-01-07 22:49:49 +01:00
a259e96405 degesch: Lua: fix a resource leak 2016-01-06 00:23:54 +01:00
a7be2bf160 degesch: refactor Lua
And fix handling of nil returns from filter callbacks.
2016-01-05 23:19:28 +01:00
e1c7b8dcaf degesch: Lua: halfplement a connector wrapper
You can't do anything reasonable with the socket now.
2016-01-05 22:12:22 +01:00
e9b39a1ef7 degesch: Lua: allow arbitrary userdata properties 2016-01-04 23:14:38 +01:00
a227060383 degesch: Lua: use references for hook callbacks
Don't associate the callback with the full userdata object,
we'll need this for something else.
2016-01-04 22:24:05 +01:00
4832a99461 degesch: add basic autocomplete for /topic 2016-01-04 22:06:29 +01:00
aeb047260f Bump liberty, enable TLS SNI
Involves some rewrites to fit the new APIs.

SNI has been implemented Mostly just because we can, I don't think it's
widely in use and kike doesn't support this feature of the protocol either.
2016-01-04 01:12:42 +01:00
1a73f1f1d7 degesch: fix a memory leak under libedit 2016-01-01 02:00:02 +01:00
8564297e2a degesch: fix segfault on /quit under libedit 2015-12-31 23:42:43 +01:00
74bed4bc02 degesch: Alt-Tab switch to the last buffer 2015-12-31 05:07:28 +01:00
8f229f41e1 degesch: avoid fileno() after fork()
It's not guaranteed to be async-signal-safe, which may matter once
we start using threads. And it's also cleaner to just pass the FD.
2015-12-31 05:07:28 +01:00
b4d6decc06 degesch: typos 2015-12-31 03:57:09 +01:00
04f87b7587 degesch: enable configuration in Lua plugins 2015-12-28 04:08:45 +01:00
b7dd384048 degesch: little step towards localisation
We don't use LC_MESSAGES, though, so it doesn't really matter as of now.

liberty currently isn't prepared for non-ASCII errors or filenames,
and just silently expects everything to be in the same all-compatible
encoding.  degesch further expects the encoding to be UTF-8.

All strings should ideally be converted to UTF-8 as soon as possible.
2015-12-25 21:36:56 +01:00
e101afab38 degesch: allow launching an editor for input
Useful for editing multiline text (such as making it single-line).

Some refactoring and cleanup.
2015-12-25 05:20:50 +01:00
37e9165548 degesch: better handling of terminal suspension 2015-12-25 05:03:02 +01:00
25bb7a978d degesch: refactoring 2015-12-25 05:02:58 +01:00
7d531a9bbf Bump liberty 2015-12-13 22:44:27 +01:00
1c009f394a Bump liberty 2015-12-11 03:01:25 +01:00
620418fa3b degesch: add a test for configuration 2015-12-10 21:26:17 +01:00
28e4bc1399 degesch: add more tests, bump liberty
The UTF-8 common prefix test discovered a bug in UTF-8 parsing.

Made $[1-9] in aliases insert nothing if there's no argument at that index.
2015-12-10 20:04:26 +01:00
86d7b7aed5 degesch: add a unit test for message wrapping algo 2015-12-09 21:07:01 +01:00
07201b7bdc degesch: compactify word wrapping algorithm 2015-12-08 23:24:40 +01:00
2ae916fc1a degesch: clarify text wrapping algorithm 2015-12-08 22:11:11 +01:00
2ba8908024 degesch: fix timer hook resource leak 2015-11-29 17:55:35 +01:00
4a287a724e degesch: Lua: add a "server" property to buffers 2015-11-24 21:52:31 +01:00
87e1236b30 degesch: Lua: add a "buffer" property to servers 2015-11-24 21:42:08 +01:00
e921a619b0 degesch: readline fixups
When a new buffer was created automatically (channel was joined),
we didn't bother to erase the current line buffer.
2015-11-24 03:04:14 +01:00
25282cfe23 degesch: fix a segfault-inducing typo in hooks 2015-11-24 02:32:11 +01:00
79140c3abc degesch: make auto-away less spammy 2015-11-23 08:33:58 +01:00
4d11be0b85 degesch: implement auto-away 2015-11-22 23:12:18 +01:00
f69edd6606 degesch: optimize prompt changes
We used to do lots of unnecessary redisplays.
2015-11-22 17:49:27 +01:00
385de6f4fe degesch: better terminal suspension
Don't print date changes while something else is using the terminal.
2015-11-22 16:43:21 +01:00
0fdffa0e50 degesch: fix hook debug logs
Obviously we can receive back the same pointer with different contents.

I just didn't think of that.
2015-11-22 03:01:38 +01:00
36c59ff375 Enable TCP_NODELAY 2015-11-22 02:12:52 +01:00
d135728424 degesch: pop() the Lua error in timer dispatch 2015-11-21 21:29:56 +01:00
02c7c6dcd6 degesch: export timers to Lua 2015-11-21 19:48:15 +01:00
364eb009ca degesch: hook implementation cleanup 2015-11-21 19:00:56 +01:00
d4cbc576e2 degesch: typos, cleanups 2015-11-21 19:00:56 +01:00
cd8e3d6d41 degesch: make Ctrl-L also fix window size 2015-11-21 14:09:34 +01:00
fa965a85e4 degesch: make /buffer with no arguments print list 2015-11-21 14:09:34 +01:00
59a4c356dd degesch: export input and IRC hooks 2015-11-21 14:09:34 +01:00
c912726f49 degesch: add ability to hook IRC and user input
We're going to make this available to the Lua API soon.
2015-11-21 14:09:34 +01:00
fbfe0ba18a degesch: add a stubbed Lua plugin loader 2015-11-21 14:09:33 +01:00
5ee210a5b7 degesch: stubplement plugins 2015-11-21 14:09:33 +01:00
5d55d7f6de degesch: refcountify "struct {buffer,server}" 2015-11-19 19:11:35 +01:00
b952fc1f6d degesch: extend weak pointers 2015-11-18 23:03:21 +01:00
89065e4d34 degesch: fix highlights 2015-11-17 00:06:48 +01:00
281ef2e93e degesch: split input text at newlines
This makes pasting multiline text possible again.
2015-11-15 15:56:33 +01:00
9b22d72fd1 Extend split_str() for multiple split chars 2015-11-15 15:56:10 +01:00
f11635ed7f degesch: better SIGTSTP handling 2015-11-15 15:36:03 +01:00
a1e47ca4c9 degesch: cleanup
Unnecessary oneliner function.
2015-11-15 01:48:10 +01:00
6c7a2ce3c8 degesch: unseen PMs show up as highlights
I used to miss them.
2015-11-15 01:43:00 +01:00
153d8c55d9 degesch: don't spam with all unseen messages
On high-traffic channels, it has shown to take quite some time.
2015-11-15 01:32:49 +01:00
d14bc2df53 degesch: have just one input buffer 2015-11-15 01:23:32 +01:00
d8299a1231 degesch: enable and use bracketed paste mode
urxvt, xterm and maybe others support quoting text pasted by the user
from clipboard, which prevents leading tabs from changing into
highlights.

The handling isn't perfect so far, just wrong in a different way, as
we mishandle newlines.
2015-11-15 01:07:12 +01:00
465c2e4082 degesch: mv input_insert{_c,}() 2015-11-15 01:07:09 +01:00
2a97c01215 degesch: make the libedit backend work again 2015-11-15 01:07:05 +01:00
152ba0847d Add a CMake target for clang-tidy 2015-11-13 09:22:48 +01:00
fe88e30bf5 degesch: fix beeping on "unimportant" PM events
Which in practice means stop beeping on quits in PM buffers.
2015-10-30 23:49:43 +01:00
a8a852d4b3 degesch: fix reconnect delays 2015-10-28 03:46:41 +01:00
e41f503202 degesch: add an /oper command
Mostly just because bitlbee suggested it to me and it didn't work.
2015-10-01 21:39:47 +02:00
762aaffecf degesch: make text attributes toggle formatting
Instead of just setting it on.

Fixes bitlbee.
2015-10-01 21:06:34 +02:00
bc54bf520d degesch: add Meta-H to open the full log file
As opposed to just the visible backlog.
2015-09-24 16:16:31 +02:00
11aaf1b325 degesch: fix logging of outgoing status messages
"/msg @#test test" would log "MSG(): test"
2015-09-24 15:41:39 +02:00
5ca07656a1 degesch: fix handling of status messages
That is, messages using the STATUSMSG feature.
2015-09-24 15:41:39 +02:00
f20c6fb28e degesch: fix logging of RPL_INVITING 2015-09-24 15:41:39 +02:00
1613e75a48 mv 'struct config_item'{_,}
Finally we can get rid of the trailing underscore.
2015-08-17 00:13:05 +02:00
4ae95be9db degesch: add self to completion in server buffers 2015-08-13 00:23:56 +02:00
328bf9af1e degesch: display ERROR messages
So that the user knows he was killed.
2015-08-12 23:21:11 +02:00
ce83f8244c degesch: don't ignore data right before an EOF 2015-08-12 23:20:46 +02:00
8a8ff11887 degesch: don't use black for nicks on 256-color
Except for self.
2015-08-11 21:38:28 +02:00
131aee6f08 degesch: update comments 2015-08-10 23:24:57 +02:00
07f6d0b350 degesch: enable bright backgrounds on 8-color terms 2015-08-10 23:07:05 +02:00
1cc8656368 degesch: precompute the filtered color cube 2015-08-10 07:53:03 +02:00
4c81112840 degesch: show CTCPs to channels as such 2015-08-10 07:39:43 +02:00
5dda5661ae degesch: send after-connect joins more cleverly 2015-08-10 07:35:42 +02:00
628facf286 degesch: properly flush the read marker 2015-08-10 00:09:43 +02:00
7225b68f74 degesch: safer defaults for backlog helper 2015-08-09 15:05:49 +02:00
e188de5501 degesch: don't show joins etc. as new activity
It's mostly just spam that shouldn't get your attention.
2015-08-08 21:19:25 +02:00
cdf6544c94 degesch: use formatting in the backlog
It's a rather crude solution to just pipe the raw terminfo strings
to less but hey, it works.
2015-08-08 20:44:24 +02:00
a28528d260 degesch: add backlog/scrollback functionality
Finally!  I went with possibly the simplest solution, which is to
run less, instead of badly reimplementing its functionality.
2015-08-08 20:44:24 +02:00
d207c90577 degesch: properly flush formatting resets 2015-08-06 23:58:42 +02:00