1
1
mirror of https://github.com/mawww/kakoune.git synced 2024-09-11 13:00:41 +03:00
Commit Graph

10488 Commits

Author SHA1 Message Date
Michał Kruszewski
8870c7e1f0 rust: Highlight char and byte literals as values
Char and byte literals are values.
There is no point in using fixed colors for them.
2024-04-16 19:19:12 +02:00
Maxime Coste
3d7d0fecca Introduce "local" scope in evaluate-commands
When using `eval` a new scope named 'local' gets pushed for the
whole evaluation, this makes it possible to temporarily set
an option/hook/alias...

Local scopes nest so nested evals do work as expected.

Remove the now trivial with-option command
2024-04-12 15:28:40 +10:00
Maxime Coste
b1c114bf6d Make removing an unknown highlighter an error
Fail instead of silently doing nothing, this makes it easier to
toggle highlighters using a try/catch
2024-04-12 15:28:40 +10:00
Maxime Coste
7f556c1e87 Rotate through strings when pasting instead of repeating the last
This seems like a better overall behaviour.

Closes #5135
2024-04-12 15:28:22 +10:00
Maxime Coste
e34735a350 Add missing <bit> include 2024-04-01 11:41:50 +11:00
Maxime Coste
6626d1cfa6 Fix std::optional used instead of Optional 2024-04-01 11:33:51 +11:00
Maxime Coste
917db454d9 Change mode_info to contain an optional NormalParams
As @topisani pointed out in #5131, it is more user friendly to always
provide a %val{register} and %val{count} regardless of the mode.
2024-04-01 11:03:22 +11:00
Maxime Coste
cc935c8cc6 Merge remote-tracking branch 'm-kru/vhdl' 2024-04-01 10:46:55 +11:00
Maxime Coste
1e80c20a5d Fix MacOS shell expensions in Makefile 2024-03-31 21:42:49 +11:00
Maxime Coste
303d879785 Support exposing some env vars as part of the mode information
This should implement what #5131 proposed in a different way.

Closes #5131
2024-03-31 21:38:51 +11:00
Maxime Coste
7d0f25a99c Merge remote-tracking branch 'topisani/session-client-rename-hooks' 2024-03-31 20:55:21 +11:00
Maxime Coste
dc123e71ae Add redundant $(shell ...) in Makefile to fix builds on MacOS
MacOS uses an old GNU make that does not support the != syntax.

That syntax is not Posix (yet, it is accepted for next standard) but
we really need a way to call the shell from a Makefile. Hopefully we
can remove this soon (not holding my breath though)

Fixes #5117
2024-03-31 20:19:25 +11:00
Johannes Altmanninger
7b93567bb1 Reset SIGINT handler in background processes
In a noninteractive shell, asynchronous commands ignore SIGINT and
SIGQUIT. We typically use such shells to feed fifo buffers which we
do want to cancel them on Control-C.  Make it so.

Same for SIGQUIT; that one is not typically used but I expect that
along the Kakoune server it kills any child processes that (haven't
been daemonized).

Note that for unknown reasons, Bash already doesn't ignore SIGINT in
async processes that use "eval".

Note that Dash has a bug that prevents this from working;
proposed fix is at
https://lore.kernel.org/dash/20240329153905.154792-2-aclopte@gmail.com/

(While at it balance out some parens, to help the m command)
2024-03-31 20:13:35 +11:00
Johannes Altmanninger
5d00b80d1a Revert "Send SIGTERM on <c-c>, to more reliably kill background jobs"
Overloading SIGTERM like that causes issues; specifically if the
editor is invoked (without exec) from a wrapper script.

By sending SIGTERM to whole process group, we kill our parent process
(the wrapper script) which then sends SIGTERM to Kakoune.  By this
time Kakoune has already reset the SIGTERM handler to the default
action and terminates.

We can use a different fix for the problem that some shells don't
cancel "make", see the next patch.

This reverts commit ec44d98347.
2024-03-31 20:13:35 +11:00
Tobias Pisani
a1880a5441 Add SessionRenamed hook 2024-03-27 17:59:05 +01:00
Tobias Pisani
5515383ae4 Add ClientRenamed hook 2024-03-27 17:59:05 +01:00
Maxime Coste
9faad8c023 Slight code cleanup in the DynamicRegexHighlighter 2024-03-27 22:10:04 +11:00
Maxime Coste
2f7568485f Merge remote-tracking branch 'topisani/indent-guides' 2024-03-27 21:56:25 +11:00
Maxime Coste
390bff3435 Do not make cursor visible when not dragging
Fixes #5130
2024-03-27 19:07:09 +11:00
Tobias Pisani
b9c60e2578 Add -indent option to show-whitespace highlighter
A couple of semi-opinionated choices were made in this implementation:

 1. The guide is hidden in the first column.
 2. The indent guides are highlighted using a new `WhitespaceIndent` face.
 3. Nothing is done to continue the guide through empty lines. I believe this to be the correct approach,
    at least as long as it is kept as a part of the show-whitespaces highlighter. However some people's
    oppinion may differ, and if so, that could be implemented.
 4. The guides default to on, like the other show-whitespace options. Default character is "│".
 5. Spaces between the indent guides are currently highlighted as other spaces.
    Other reasonable options would be no replacement, -tabpad, or a similar -indentpad.
 6. Guides are disabled by passing `-indent ""`.
 7. Indent guides are separate from tab highlighting.

Additionally, we could consider adding a separate face for the "current" indent level as many editors do,
but this is a bit harder in kakoune because of multiple selections.

Closes #2323
2024-03-27 04:07:12 +01:00
Michał Kruszewski
928f405fde vhdl: Highlight integer_vector type and work library 2024-03-25 14:01:39 +01:00
Maxime Coste
610d4114a9 Merge remote-tracking branch 'm-kru/tcl' 2024-03-23 21:10:07 +11:00
Maxime Coste
84be263321 Re-change how compiler detection is done
Turns out GCC does not appear in many gcc version, go back to
checking `g++` and assume `c++` means `g++`

Fixes #5119
2024-03-23 21:09:27 +11:00
Maxime Coste
eb09d737ef Fix flaky test 2024-03-23 20:53:02 +11:00
Michał Kruszewski
c6c7fca03f tcl: Add tcl.kak for Tcl highlighting 2024-03-23 10:12:36 +01:00
Maxime Coste
699c70ac91 Add some missing ScopedEdition and fix redo
tabs <-> space conversion functions did not create a ScopedEdition
leading to uncommited modifications. Fixing this did fix the
interactive error, but that error still existed in non interactive
context so redo now considers there there is no redo child if there
are uncommited modifiations (which is correct as this means we are
currently creating a new leaf in the undo tree)

Fixes #5124
2024-03-23 20:07:41 +11:00
Maxime Coste
6e4bb5fbc5 Refactor last insert recording logic
Only record non-synthetized insertions, removing the need to
re-record on replay and fixing the last replay getting dropped by
macro execution.

Fixes #5122
2024-03-23 16:29:03 +11:00
Maxime Coste
71b003b684 Try to fix flaky test 2024-03-23 11:40:44 +11:00
Maxime Coste
d4e93b6f47 Merge branch 'patch-1' of https://github.com/jbrains/kakoune 2024-03-22 22:11:13 +11:00
Maxime Coste
6598d7b1b2 Fix invalid access when recording keys
<c-n>/<c-p> handling in insert was always dropping the last key in
the last_insert() vector (in order to replace it with the actual
completion text inserted), this was not valid for synthetized keys
that are not added to that vector in the first place.

Take the opportunity to merge insert completion handling code between
<c-n>/<c-p> and direct menu selection.

Fixes #5120
2024-03-22 22:06:11 +11:00
Maxime Coste
d5f7cbad87 Do not generate more lines to display than window size
The wrap highlighter was pulling all lines until the cursor, regardless
of whether the cursor was going to be made visible, this could lead to
a display buffer containing much more lines than the actual viewport
which eventually could lead to menu being anchored out of view that
was leading to past-the-end buffer accesses.

Fix the wrap higlighter not to pull lines up to the cursor when it
is not tasked with making the cursor visible, and always trim the
eventual extra lines after highlighting.

Fixes #5118
2024-03-22 21:44:37 +11:00
Maxime Coste
a1e6799aa9 Fix DisplayLines not tracking their buffer range correctly
After extracting the whole buffer content, a line can end up with
only non-range highlgihters pending which makes its range become
0.0,0.0, after running highlighting on the extracted range it gets
re-inserted but taking the min of existing range and inserted range
wrongly returns 0.0. Avoid this by detecting that the 0.0,0.0 range
does not actually mean anything when we have no ranged atoms.

Fixes #5001
2024-03-22 21:03:58 +11:00
Maxime Coste
7e75c9a1df Match Op declaration order in switches 2024-03-22 20:05:43 +11:00
Maxime Coste
2dd69b3d96 Make CompiledRegex not a RefCountable
Keep this closer to the point of use, avoid pull ref_ptr.hpp into
regex_impl.hpp
2024-03-22 19:54:25 +11:00
Maxime Coste
794e7ce51c Fix Makefile dist file generation 2024-03-22 17:30:43 +11:00
Maxime Coste
ca7471c25d Compute StartDesc with an offset to effective start
This means `.{2,4}foo` will now consider 4 or less before f as
a start candidate instead of every characters
2024-03-21 19:18:20 +11:00
Maxime Coste
ee364d911f Only push a first instruction thread when on a potential start
There is no need to push threads for each codepoint when we know
they will fail as the current codepoint is not a start candidate.
2024-03-21 18:09:00 +11:00
Maxime Coste
c3856ad3d9 Make src/kak a .PHONY target to always set the symlink
This ensures `make debug=yes`, `make debug=no` always update the
symlink even if the binary was already built.
2024-03-21 18:06:43 +11:00
J. B. Rainsberger
c65eda3d8a
Update README to match new make install command
It appears that the command to specify the `PREFIX` variable to the makefile has changed.

I had to run `make PREFIX=$HOME/.local install` in order to override the hardcoded `PREFIX` value in the makefile. I infer that the instructions need to be changed for those who don't know. (TIL. ;) )
2024-03-20 10:31:54 -03:00
Maxime Coste
f6762724ea Revert "Always allocate saves"
This crashes in unit tests

This reverts commit cde5f5a258.
2024-03-15 22:03:52 +11:00
Johannes Altmanninger
24d719bf13 Fix off-by-two error in max size of frameless infoboxes
Framed info boxes need one cell for the border and one for inner
space padding.  That's 4 extra columns when counting both sides.
Frameless boxes have neither border nor padding so 0 columns here.

Closes #5106
2024-03-15 21:54:59 +11:00
Johannes Altmanninger
bdca6760fe Fail "define-command -menu" unless a completer is given
The "define-command -menu" flag does not do anything unless there is
a completer flag.  Let's reject it.
2024-03-15 21:54:26 +11:00
Johannes Altmanninger
4d8de48ec3 rc tools doc: use menu behavior for completion again
Commit e43c7d6ab (Use complete-command for the :doc command,
2022-10-19) forgot to carry over the "-menu" flag, which means that
:doc completions are no longer auto-selected, even though they are
the only valid inputs.

Fix that.

Closes #4790
2024-03-15 21:54:16 +11:00
Maxime Coste
cde5f5a258 Always allocate saves
This sometimes allocates saves too eagerly, but it removes a branch
in release saves that executes on every thread failing which seems
slightly better.
2024-03-15 21:53:17 +11:00
Maxime Coste
83f12fc8e9 Avoid clearing iterator buffer on saves allocation
When creating a new save, we had to clear all iterators to have valid
values. This operation is relatively costly because it gets optimized
to a memset whose call overhead is pretty high (as we usually have
less than 32 bytes to clear). Bypass this by storing a bitmap of
valid iterators.
2024-03-13 23:45:51 +11:00
Maxime Coste
c4df0fac52 Simplify and accelerate start desc map
Store values for all possible bytes and fill utf8 multi byte start
values when necessary.
2024-03-13 17:29:05 +11:00
Maxime Coste
c956413046 Fix quantifier parsing bug 2024-03-13 07:14:33 +11:00
Maxime Coste
b06834bf47 Small cleanup 2024-03-12 21:15:30 +11:00
Maxime Coste
6264b049d9 Simplify Quantifier logic in regex parsing
Remove redundant type enum
2024-03-12 20:39:39 +11:00
Maxime Coste
e06acd3dc8 Simplify Split regex op handling by swapping target 2024-03-11 21:47:14 +11:00