Version 0.13 has been released on 2020-01-01, 18 months after 0.12, bringing many new features and bugfixes.
As usual, prebuilt binaries are offered for most common platforms.
Breaking changes
This release sees a total rewrite of the line editor. As a result, there have been some changes to its API, the
edit:
module:Binding tables no longer support the
default
key for overriding the default behavior of modes. All theedit:<mode>:default
functions have been removed:edit:completion:default
,edit:history:default
,edit:insert:default
,edit:listing:default
andedit:navigation:default
.The
edit:insert-key
andedit:listing:backspace
functions have also been removed. Their functionalities are now baked into the default behavior of the insert and listing modes.The
edit:history:list
function has been removed. Useedit:command history
instead.The
edit:lastcmd:accept-line
function has been removed. Useedit:listing:accept
instead.The
edit:-narrow-read
function and theedit:narrow:
module have been removed. Usededit:listing:start-custom
instead.The
edit:styled
function has been removed. Usedstyled
instead.The
edit:insert:start
function has been removed. Useedit:close-listing
instead.The
edit:location:matcher
variable andedit:location:match-dir-pattern
function have been removed. There is no replacement yet; the location matcher is not customizable now, although it may be made customizable again in a future version.The
edit:completion:trigger-filter
function has been removed. The completion mode now always focuses on the filter, and it is no longer possible to focus on the main buffer during completion.The
edit:history:list
function has been removed. There is no replacement yet.
The names of basic colors used in
styled
has changed to be more standard:The
lightgray
color (ANSI code 37) is now calledwhite
.The
gray
color (ANSI code 90) is now calledbright-black
.The
white
color (ANSI code 97) is now calledbright-white
.All the
lightX
(ANSI codes 90 to 97) colors have been renamed tobright-X
.
Builtin math functions now output values of an explicit
float64
number type instead of strings.
Notable fixes and enhancements
The editor now has a minibuffer, bound to Alt-x by default. The minibuffer allows you to execute editor commands without binding them to a key.
The editor now has an experimental “instant mode” that can be activated with
edit:-instant:start
. It is not bound by default. The instant mode executes the code on the command line every time it changes.WARNING: Beware of unintended consequences when using destructive commands. For example, if you type
sudo rm -rf /tmp/*
in instant mode, Elvish will attempt to executesudo rm -rf /
when you typed so far.The
styled
builtin now supports more color spaces:Colors from the xterm 256-color palette can be specified as
colorN
, such ascolor22
.24-bit RGB colors can be specified as
#RRGGBB
, such as#00ffa0
.
Proper terminal support is required to display those colors.
Elvish can now output results in JSON in compile-only mode, by specifying
-compileonly -json
, thanks to @jiujieti (PR #858) and @sblundy (PR #874).In redirections, the 3 standard file descriptors may be specified as names (
stdin
,stdout
,stderr
) instead of numbers, thanks to @jiujieti (PR #869).Code such as
x = $x
where$x
has not been defined now correctly results in a compilation error, thanks to @jiujieti (PR #872).The
while
special form now supports anelse
clause, thanks to @0x005c (PR #863). This feature was previously documented but missing implementation.The command
%
no longer crashes Elvish when the divisor is 0, thanks to @0x005c (PR #866).Elvish is now resilient against terminal programs that leave the terminal in non-blocking IO state (issue #588 and issue #822).
Wildcard patterns of multiple question marks (like
a??
) are now parsed correctly (issue #848).A new floating-point numeric type has been introduced, and can be constructed with the
float64
builtin function (issue #816).A new
$nil
value has been introduced to represent lack of meaningful values. JSONnull
values are converted to Elvish$nil
.Two new builtins,
only-bytes
andonly-values
have been introduced. They can read a mixture of byte and value inputs and only keep one type and discard the other type.The
use
special form now accepts an optional second argument for renaming the imported module.A new
chr
builtin that converts a number to its corresponding Unicode character has been added.New editor builtin commands
edit:kill-word-right
andedit:kill-word-right
has been added, thanks to @kwshi (PR #721).