Just like in xW recently. It is unlikely that the user would want
to use these keys to move the cursor. Ctrl+Home/End still work,
as does holding Up/Down arrows.
Also stop using the deprecated and somewhat cryptic keyCode.
This has been more of an exercise. The performance of Msftedit.dll
is rather abysmal, and its interface isn't the most accomodating.
That said, the frontend is quite usable, at least on Windows 10+.
So far Go applications remain independent to handle Nix's inability
to easily combine them with the CMake part.
There is also no "install" target, because any packagers will want to
adjust installation paths manually, and there is no configure step.
xC: advance unread message counters even with leaked messages,
and don't unnecessarily set the highlighted flag. Plus clean up.
xP: make leaked non-unimportant messages advance the counter
for unimportant messages, so that the buffer doesn't get emboldened.
There seem to be only a few things it could bring to the table,
compared to xP, making it barely worth the effort:
- saner keyboard controls,
- GVIM integration,
- slightly improved resource usage.
The autocomplete for /set used to be extremely annoying,
and menu-complete-display-prefix also prevents mistaken highlights.
One downside is that using plain Tab in channels no longer
just inserts the last-talking nickname, one needs to press it twice.
Even with one forward function declaration down,
it was possible to move most code to a more convenient location.
Most logging has thus been fixed to go to buffers.
And batch event messages together as much as possible.
JSON has proven itself to be really slow
(for example, encoding/json.Marshaler is a slow interface),
and browsers have significant overhead per WS message.
Commands are still sent as JSON, sending them in binary
would be a laborious rewrite without measurable merits.
The xP server now only prints debug output when requested,
because that was another source of major slowdowns.
M-a and M-! should iterate, rather than keep jumping back
to the same buffers.
The current item wasn't visible enough,
and it jumped around in my 1.5-scale Firefox.
Currently it only goes for the longest common prefix.
Refactor WebSocket handling into an abstraction for our protocol.
The Go code generater finally needed fixing.
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.
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.
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
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.
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.
By default it's a mere thousand connections, which is unnecessarily
crippling our advertised ability to handle lots of them.
Thanks for the advice, Lennart.
First, we indexed the colour array without a required offset.
Second, the data type was too small and overflowed negative.
Detected during a refactor, which this is a part of.
I'm not entirely sure, but it looks like some people might not like
jokes about the Holocaust.
On a more serious note, the project has become more serious over
the 7 or so years of its existence.
With IRCv3.2 echo-message, each successfully sent message would
move us to the front of the list used for chanuser autocomplete.
Such behaviour seems useless.
Also abandon the idea of bumping on other kinds of messages.
Replaces the inaccurate Rec. 709 luma we used to use before.
This is the first feature here that requires libm, which doesn't
seem to be a particularly great sacrifice.
Moreover, I've rectified that the input isn't linear in sRGB,
and then was even normalized wrong for the luma formula.
It didn't make sense to have these unimplemented,
though perhaps += shouldn't enforce a set.
Sadly, autocomplete is fairly difficult for -= of multiple items.
So far it's only been mentioned in the NEWS file,
which is definitely not sufficient.
It would be good to move this kind of stuff out from README.adoc.
It improves the code significantly over explicit int64 conversions.
Despite carrying unnecessary timezone information, time.Time also
carries a monotonic reading of time, which allows for more precise
measurement of time differences.