This changelog contains major and/or breaking changes to Kakoune between released versions.
-
command and response fifo support (See
:doc expansions command-and-response-fifo
) -
Shell expansions only trim the last trailing newline instead of all of them to make is possible to losslessly pass text through
%sh{…}
. -
set-option -remove
support for subtracting/removing from option values -
Menu completions such as command name completion are now auto-inserted on space
-
write -atomic
was replaced withwrite -method [replace|overwrite]
to make both write methods available explicitly -
write <filename>
will fail if the given filename already exists and is a regular file. Use the-force
switch to override that behaviour.
-
The
repl
andsend-text
aliases have been renamed respectively intorepl-new
andrepl-send-text
. -
Daemon mode (
-d
switch) does not fork anymore. -
Replace NCursesUI with a custom terminal UI implementation
-
Introduce
User
hook support. -
The
bold
anditalic
faces are no longer built-in. Highlighters are expected to use face attributes (+b
and+i
, respectively) to decorate text. -
The
lint-enable
command no longer needs to be called to display linting errors. Thelint-disable
command was renamed intolint-hide-diagnostics
. -
The
+<length>
part of arange-specs
highlighter consistently refers to the length of the target range. -
clients stdin is transferred to the server, making it possible to pipe into
kak -c <session>
-
Faces can have an alpha channel, specified using the
rgba:RRGGBBAA
format. -
replace-ranges highlighter now support empty and multi-lines ranges
-
%val{…}
now expands to list of strings,$kak_quoted_…
now work as expected with these. -
*SetOption
hooks filter string will contain a value only for options of int/str/bool types to avoid performance issue with generating those on more complex option types.
-
Expose history tree through
$kak_history
and$kak_uncommitted_modifications
-
InsertCompletionHide
parameter is the list of inserted ranges
-
Arrow keys and
<home>
,<end>
are not normal mode commands anymore but default key mappings. -
ModeChange
hook parameter now takespush:
orpop:
prefix,InsertBegin
,InsertEnd
,NormalBegin
andNormalEnd
were removed. -
-verbatim
switch inevaluate-commands
for perfect command forwarding to another context. -
WrapMarker
face used bywrap -marker
highlighter -
info
supports markup with the-markup
switch -
rename-buffer
gained-file
and-scratch
switches to support converting buffer types.
-
Re-organized bundled script files directory hierarchy.
-
Introduced helpers to write/read from file in scripts with
%file{…}
expansion andecho -to-file <filename>
. -
Added
ClientCreate
andClientClose
hooks -
edit -scratch
with no buffer name will create a new scratch buffer with a unique autogenerated name. -
info -placement
is nowinfo -style
and supportsmenu
andmodal
additional styles. -
completions
option typedocstring
are now arbitrary kakoune commands that are run on item select. -
InsertCompletionSelect
hook has been removed ascompletions
commands now provides a similar feature. -
Introduced a module system using the
provide-module
andrequire-module
commands that allows for lazily loading language support files with dependency resolution. -
Added a new hook
ModuleLoaded
which is run after a module is loaded, allowing for module specific configuration. -
Shell quoting of lists is not automatic anymore,
$kak_quoted_…
makes it opt-in, and works for all option types. -
Lower case function key syntax is not accepted anymore,
<f1>
should be converted to<F1>
.
-
auto_complete
has been renamed toautocomplete
for more consistency. -
Start of a builtin key parser in the ncurses ui bypassing the ncurses one. Can be favored by setting the ui option
ncurses_builtin_key_parser
totrue
. -
Right clicks extend the current selection, the control modifier allows merging all the selections after extension.
-
The
regex
highlighter now supports named capture groups to ease readability.
-
remove-hooks
<group> argument is now a regex and removes all hooks whose group matches it. -
exclusive
face attribute (e) has been replaced with more granularfinal foreground
(f),final background
(g), andfinal attributes
(a), or the three combined asfinal
(F). Semantics changed slightly as those attributes apply to the existing face as well (a final face will not get modified by a following face if that following face does not have the final attribute itself. -
<a-m>
aka "merge consecutive selections" has been moved to<a-_>
. The new<a-m>
and<a-M>
are now symmetrical withm
andM
. Those commands select (or extend) to the matching char backwards. -
define-command
switches-shell-completion
and-shell-candidates
have been renamed to-shell-script-completion
and-shell-script-candidates
to make way for a new-shell-completion
which completes like the shell (shell command name then filename). -
asciidoc
is not a dependency anymore, the last file that required it (Kakoune’s manpage) has been converted to troff format.
This version contains a significant overhaul of various Kakoune features that can break user configuration. This was a necessary change to make Kakoune command model cleaner and more robust.
-
%sh{…}
strings are not reparsed automatically anymore, they need to go through an explicitevaluate-commands
-
The
-allow-override
switch fromdefine-command
has been renamed-override
. -
The search prompt uses buffer word completion so that fuzzy completion can be used to quickly search for a buffer word.
-
The
wrap
highlighter can accept a new-marker <marker_text>
switch. -
The command line syntax has changed to support robust escaping.
-
%sh{…}
is not expanded to multiple tokens automatically anymore, to evaluate its output as multiple tokens/commands, use theevaluate-commands
command:------------------------------------------------------------- evaluate-commands %sh{ echo "first command; second command" } -------------------------------------------------------------
-
Escaping of
'
in'…'
and"
and%
in"…"
strings is done by doubling up (''
,""
and%%
) instead of using a backslash -
Bare words escaping has been tweaked.
See <<command-parsing#,`:doc command-parsing`>>.
-
-
Various lists (options, registers…) in Kakoune are now written using the command line syntax:
-
set-register
now take an arbitrary number of parameters and sets the register to multiple strings.%reg
expands to a list of strings. -
the
$kak_reg_*
environment variable is now a list,$kak_main_reg_*
provides the previous behaviour. -
%opt
expands list options as list of strings. -
selection descs are whitespaces separated instead of
:
separated
-
-
Highlighters syntax has changed to permit explicit naming and remove highlighter specific name parameters (such as for the group highlighter)
add-highlighter <path>/<name> <type> <params>
is the new syntax. -
Regions highlighters have been overhauled and are now specified with a sequence of commands instead of a single one:
------------------------------------------------------------------ add-highlighter <path>/<name> regions add-highlighter <path>/<name>/<region name> region <begin> <end> \ <type> <params> ------------------------------------------------------------------
The recursion regex is opt-in through a `-recurse <recurse>` flag.
They also are not necessarily groups anymore, a region can directly apply any other highlighter
See <<highlighters#,`:doc highlighters`>>
-
Highlighter type names have been unified, types that used
_
as word separators, such asshow_whitespaces
are now using-
(show-whitespace
). -
a
on end of line is not treated specially anymore, it will start inserting on the next character, which will be the first character of the next line. -
autoshowcompl
options has been renamedauto_complete
and is now aflags(insert|prompt)
option, allowing more granular configuration of when the completions should be displayed automatically. -
Prompt editing shortcuts have been changed to match readline.