| Age | Commit message (Collapse) | Author |
|
<memory> is a costly header we can avoid by just implementing
UniquePtr ourselves, which is a pretty straightforward in modern
C++, this saves around 10% of the compilation time here.
|
|
|
|
If the current buffer is locked, it means we are in the middle of
creating the client or already changing the buffer, error out in this
case instead of getting into an inconsistent state.
Fixes #5338
|
|
`kak -n -E 'hook global WinCreate .* %{ delete-buffer }'` was crashing
because we would delete the buffer during window construction, which
would not be able to delete the window as it was not fully constructed
and registered yet. This led to a window referencing a deleted buffer.
Fixing this by deleting the window later on failed because we can enter
an infinite loop where we constantly create a new *scratch* buffer, then
a window to display it, which deletes that buffer.
Make it an error to try to delete a buffer while a new window is
being setup by adding a Locked flag to buffers and checking that in
BufferManager::delete_buffer
Fixes #5311
|
|
|
|
Having to manually clear the scratch was never really nice and hopefully
this will be less annoying and as helpful to newcomers.
|
|
This was mostly redundant with Client::force_redraw.
|
|
Commit 933e4a599 (Load buffer in command line order, 2022-12-06)
introduced a regression: the command
$ kak /boot/grub/grub.cfg
Fatal error: no such buffer '/boot/grub/grub.cfg'
quits with no indication of the underlying error.
Prior to 933e4a599, it would open the *scratch* buffer instead,
and show an error in the status line, pointing to the debug buffer,
which would contain:
error while opening file '/boot/grub/grub.cfg':
/boot/grub/grub.cfg: Permission denied
Let's fix this scenario by matching the old behavior.
|
|
Pass the first buffer on the the command line explicitely to client
creation. This ensure the buffer list matches the command line, which
makes buffer-next/buffer-previous a bit more useful.
Fixes #2705
|
|
Fix atom text at display time, allow tabs/eol/etc... in display
atoms and escape them just-in-time
Fixes #4293
|
|
|
|
|
|
Fixes #3025
|
|
|
|
Fixes #2975
|
|
Closes #2849
|
|
clear the client manager in the to be converted process without
sending exit messages as the forked server will still be there.
Fixes #2847
|
|
|
|
As discussed in #2830.
Closes #2500.
|
|
Fixes #2830
|
|
|
|
std::remove_if is not std::partition, it makes no guarantees on
the state of the objects past the new end (they usually are in a
moved-from state).
|
|
|
|
Hooks are now an enum class instead of passing strings around.
|
|
|
|
set-face now takes a scope argument, and faces can be overridden on
a buffer or window basis.
colorscheme apply on global scope, which should be good enough for
now.
Fixes #1411
|
|
|
|
|
|
|
|
Session/Client/User modes names are now requiered to be "identifiers"
they must be in [a-zA-Z0-9_-]. Option names are the same except they
do not allow '-' as they need to be made available through the env vars
and '-' is not supported there.
Fixes #1946
|
|
When Kakoune forked the sever to background, the newly converted
to client process (the original client/server process) was not
preserving its previous client name.
|
|
Handle next event should never block if we have already accumulated
input that we want to process. As we can accumulate new input in
lots of places (everytime we run a shell process for example, we
might end up reading input keys. That can be triggered during the
mode line generation which takes place during display of the window)
Fixes #1804
|
|
|
|
|
|
As requested in #1414
|
|
The current client exit status can be specified as an optional
parameter, is nothing is given the exit status will be 0.
Fixes #1230
|
|
|
|
|
|
The SelectionList already has a timestamp.
|
|
Fix a crash on daemon quit as well.
|
|
Do not implicitely change new clients selections to target coordinates
when the user did not specify them, so that we can re-use the selections
from the found free window, which is the generally desired behaviour.
|
|
|
|
Fixes #944
|
|
We were not handling keys that could have been generated while handling
other keys (like during a shell evaluation).
|
|
This round trip through an input callback expected to call
is_key_available and get_key was overcomplicated, just send the
keys as they arrive, the client is already buffering due to urgent
event mode.
|
|
|
|
Fixes #850
|
|
Fixes #852
Closes #856
|
|
Client quitting no longer immediately unwinds, client is just pushed
for deletion until we get back to the main loop, similarly to what
happens for buffer and window deletion.
|
|
Avoid WinResize hooks while redrawing, ensure window resize only
take place while handling user input.
Fixes #672
|