Commit Graph

54 Commits

Author SHA1 Message Date
Přemysl Eric Janouch 1493d9998b
xC: clean up 2022-09-11 19:11:47 +02:00
Přemysl Eric Janouch 4bc2f736f2
xC: make terminal attributes abstract
And translate them for frontends.

This is very long overdue, and a rather significant cleanup.

Bump liberty.
2022-09-11 01:20:18 +02:00
Přemysl Eric Janouch 0015d26dc8
xC/xP: support hiding unimportant messages at all 2022-09-10 19:01:42 +02:00
Přemysl Eric Janouch 7d5e63be1f
xC: deal with so far unexpected multiline messages
And get rid of an outdated unmarked TODO comment.
2022-09-10 18:51:27 +02:00
Přemysl Eric Janouch e7d0f2380e
xC: split Command.BUFFER_INPUT on newlines 2022-09-10 18:51:27 +02:00
Přemysl Eric Janouch 632ac992ab
xC/xP: only send buffer stats in the initial sync
The client and frontends track these separately,
there is no need for hard synchronization.
2022-09-10 17:38:33 +02:00
Přemysl Eric Janouch 3a165a595b
xC: use the relay protocol's RPC for pings 2022-09-08 01:48:46 +02:00
Přemysl Eric Janouch 4ba28c6ed3
xC/xP: mark highlights and buffer activity
And more or less finalize out the protocol for this use case.
2022-09-08 01:28:51 +02:00
Přemysl Eric Janouch a2d5995cf5
xC: don't autoactivate buffers on forced JOINs 2022-09-07 19:10:49 +02:00
Přemysl Eric Janouch 88a7b1a2d9
xP: resolve various issues, mostly in styling 2022-09-07 17:26:43 +02:00
Přemysl Eric Janouch 2341228efd
xP: implement buffer line leakage
Rather than on redisplay, these get cleared on reconnect.
2022-09-07 15:34:52 +02:00
Přemysl Eric Janouch 5fd76ba6f9
xC: add a trivial /relay command
For there is otherwise no way of getting that information.
2022-09-07 13:01:34 +02:00
Přemysl Eric Janouch 41878a587f
xC: use liberty logging less
These messages cannot be relayed to frontends (they could be,
but it's useful to keep them distinct rather than redirected).
2022-09-07 13:01:30 +02:00
Přemysl Eric Janouch 80089a4d65
xC: describe general.editor parse errors 2022-09-07 13:01:29 +02:00
Přemysl Eric Janouch 2d30b6d115
xC: define critical bindings after el_source()
And use ^C rather than ^G.
2022-09-06 17:02:36 +02:00
Přemysl Eric Janouch cf14cb8122
xC: implement buffer completion in the relay
And actually support completion with non-UTF-8 locales.
We used to ignore the encoding conversion result.
2022-09-06 17:02:02 +02:00
Přemysl Eric Janouch 31e9c6d2d5
xC/xP: pass timestamps with millisecond precision
Future-proofing the protocol.
2022-09-06 14:39:01 +02:00
Přemysl Eric Janouch d7b0b447b7
xC/xP: turn the action asterisk into a rendition 2022-09-05 23:22:09 +02:00
Přemysl Eric Janouch 25ad5ae0ec
xC/xP: fix colour values, and render them with CSS 2022-09-05 23:22:09 +02:00
Přemysl Eric Janouch 10f6072da9
xC: also force monospace for RPL_MOTDSTART
It tends to looks inconsistent without.
2022-09-05 23:07:20 +02:00
Přemysl Eric Janouch 1639235a48
Start X11 and web frontends for xC
For this, we needed a wire protocol.  After surveying available options,
it was decided to implement an XDR-like protocol code generator
in portable AWK.  It now has two backends, per each of:

 - xF, the X11 frontend, is in C, and is meant to be the primary
   user interface in the future.

 - xP, the web frontend, relies on a protocol proxy written in Go,
   and is meant for use on-the-go (no pun intended).

They are very much work-in-progress proofs of concept right now,
and the relay protocol is certain to change.
2022-09-05 14:26:00 +02:00
Přemysl Eric Janouch 2160d03794
xC: slightly clean up character encodings 2022-09-02 14:05:03 +02:00
Přemysl Eric Janouch 36f8c7639f
xC: clean up logging
Don't treat rendition as flags, separate the two.

Also treat join and part arrows as rendition.
2022-09-02 12:31:42 +02:00
Přemysl Eric Janouch 3af1765261
xC: make alias creation tolerant to prefixed names
Those would not work, so skip the first forward slash.

Note that liberty can save arbitrary alias names since 6e93119,
making the removed comment about checking outdated.
2022-08-29 15:22:11 +02:00
Přemysl Eric Janouch b454920c81
xC: deal with conflicts when renaming buffers 2022-08-29 15:05:02 +02:00
Přemysl Eric Janouch ef8f25d1dd
xC: deal with any identifier conflicts
Invalid UTF-8 converted to UTF-8 may conflict with that
which was valid UTF-8 in the first place.
2022-08-29 14:41:23 +02:00
Přemysl Eric Janouch 313a65180e
xC: fix some corner cases around terminal handling 2022-08-29 14:05:33 +02:00
Přemysl Eric Janouch 91db8e6e54
xC: use the correct way of resetting libedit
The only remaining major annoyance is incremental search
seemingly not giving back control.
2022-08-29 10:30:45 +02:00
Přemysl Eric Janouch dbe95fa298
xC: make libedit history switching more reliable 2022-08-29 09:20:56 +02:00
Přemysl Eric Janouch 9d5e57a501
xC: improve libedit multiline input handling 2022-08-29 08:31:44 +02:00
Přemysl Eric Janouch 4ed6693f57
xC: erase remaining mentions of a "backlog helper" 2022-08-29 08:22:09 +02:00
Přemysl Eric Janouch bea8d13227
xC: don't autosave when nothing changed 2022-08-29 08:22:09 +02:00
Přemysl Eric Janouch 57597bf8a2
xC: move TEXT_* constants where they belong 2022-08-27 15:06:28 +02:00
Přemysl Eric Janouch c0996fcbe7
xC: normalize BSD Editline's history behaviour
Now it's a realistically useful frontend.
2022-08-27 15:06:27 +02:00
Přemysl Eric Janouch 03d8ea4c5a
xC: general.save_on_quit -> general.autosave
Power outages and similar situations make the former unreliable,
so get rid of any false promise it might seem to give.
2022-08-27 09:15:38 +02:00
Přemysl Eric Janouch dc002a2db4
xC: revise configuration options
This commit constitutes a breaking change to old configurations.

All behaviour.* options have now become general.*, with the following
few renames as exceptions:

 - editor_command -> editor
 - backlog_helper -> pager
 - backlog_helper_strip_formatting -> pager_strip_formatting
2022-08-27 09:15:37 +02:00
Přemysl Eric Janouch a32916ffcf
xC: label code sections better
Introduce tildes as a new sublevel of markers.
2022-08-27 09:15:37 +02:00
Přemysl Eric Janouch f7be510d26
xC: make fancy-prompt.lua alignment more reliable
And generally clean up that script.
2022-08-27 09:15:37 +02:00
Přemysl Eric Janouch c50c959f4d
Bump copyright years 2022-08-17 18:27:52 +02:00
Přemysl Eric Janouch 0750096827
xC: expand behaviour.editor_command examples 2022-08-14 20:27:30 +02:00
Přemysl Eric Janouch 49d9980662
xC: improve backlog helper capabilities
Snippets now receive positional parameters in the form of the buffer's
name in the locale encoding, and a filename if applicable
(we keep passing stdin along with the filename, which happens to
work out well for less(1)).

The default value of the configuration option also no longer uses
the "long prompt", which used to unhelpfully tell position in terms
of lines, but rather sets its own prompt that counts pages,
and makes sure to indicate the source buffer.

The main motivation behind this change is to make the 'v' command
work in less(1).  LESSSECURE must be omitted from the snippet
for this to work.

Bump liberty to receive a config parser that allows for less
convoluted escaping.
2022-08-14 18:52:26 +02:00
Přemysl Eric Janouch 60d52ad479
xC, xD: add basic WALLOPS support 2022-02-04 22:48:54 +01:00
Přemysl Eric Janouch 5165f76b7c
xC: quote text coming from a bracketed paste
Not having this has caused me much annoyance over the years.
2021-10-30 09:27:32 +02:00
Přemysl Eric Janouch 92ac13f3c6
xC: allow passing the cursor position to editors
Add a configuration option to set a custom editor command,
different from EDITOR or VISUAL--those remain as defaults.

Implement substitutions allowing to convey cursor information
to VIM and Emacs (the latter of which is fairly painful to cater to),
and put usage hints in the configuration option's description.

This should make the editing experience a bit more seamless
for users, even though the position is carried over in one way only.

No sophisticated quoting capabilities were deemed necessary,
it is a lot of code already.  The particular syntax is inspired
by .desktop files and systemd.

["/bin/sh", "-c", "vim +$2go \"$1\"", filename, position, line, column]
would be a slightly simpler but cryptic way of implementing this.
2021-10-30 09:02:35 +02:00
Přemysl Eric Janouch df4ca74580
xC: make libedit autocomplete less miserable
Omitting even this hack was a huge hit to overall usability.
2021-10-30 08:29:16 +02:00
Přemysl Eric Janouch ce3976e1ec
xC: normalize ^J behaviour to follow Readline
For some reason Editline inserts it verbatim,
but in a more broken manner than it has with ^V^J.
2021-10-28 08:49:01 +02:00
Přemysl Eric Janouch e5ed89646b
xC: fix newer libedit (2021-08-29) 2021-10-28 08:23:52 +02:00
Přemysl Eric Janouch cb480b4c71
xC: show orphan outcoming actions differently
It's hard to think of anything actually good here.

This would be an exceptionally rare thing to do, anyway.
2021-09-05 02:51:05 +02:00
Přemysl Eric Janouch 59cc423694
xC: abandon Freenode, embrace IRCnet
You're not fucking supposed to require a fucking registration
on fucking IRC networks.
2021-08-29 15:18:20 +02:00
Přemysl Eric Janouch 9323089d66
xC: mIRC didn't invent all IRC formatting
So let's not confuse ourselves.
2021-08-29 12:12:52 +02:00