v0.8
Pre-releaseThis is another pre-release, for no particular reason other than lack of pre-releases for a long time.
As always, binaries are on https://dl.elvish.io.
Breaking changes
-
The
unpack
builtin is now known asexplode
, for more excitement. -
Mode-specific editor commands now reside in mode-specific subnamespaces of
le:
(they used to be all directly underle:
). For instance, navigation-related builtins are now to be found inle:nav:
. For example,le:nav-left
has becomele:nav:left
.Names of most builtins undergo a simple mechanical transformation like in the example. Notable exceptions are:
-
le:start-xxx
builtins that are nowle:xxx:start
. -
le:navigation-default
is nowle:nav:default
, in consistency with other navigation-mode commands. -
Commands like
le:move-dot-left
are still in thele:
namespace; they are not considered to be insert-mode-specific.
-
Notable fixes and enhancements
-
Test coverage has increased to almost 50%.
-
The
edit
package has seen some cleanups and refactors. -
It is now possible to pin and hide directories in location mode, using
$le:loc-pinned
and$le:loc-hidden
respectively (#326 #342). -
Matching in location mode is now more sensible (#338).
-
Special builtins
and
andor
have been added, with similar semantics as Python.~> and $true $false ▶ $false ~> and $false ?(echo 233) ▶ $false ~> and $true 1 ▶ 1
-
A
not
builtin has been added that negates boolean values. -
Pressing
Ctrl-V
will now put Elvish into "raw mode" that causes the next key press to be read literally, like in other shells (#182). However, the implementation is now buggy (#350). -
An
embedded:readline-binding
module has been added. Adduse embedded:readline-binding
to get a (partial) readline-esque binding (#339). -
An experimental
-match
builtin for regular expression matching was added. -
A
repr
builtin for printing the representation of objects has been added. -
Elvish per-se no longer depends on cgo for compiling (#345). However, Elvish still uses sqlite, which requires cgo to compile.
-
When completing a variable in a namespace, e.g.
put $le:lo<Tab>
, the candidate menu now only shows the variable names (likeloc-pinned
) instead of the whole qualified name (like$le:loc-pinned
). Under the hood, the definition of what is being matched against candidates, as well as the candidates themselves, have changed. When using the default prefix matcher, this has only consequence on how candidates are displayed. However, for other matchers this will make a difference. -
An experimental variable
$le:-use-subseq-matcher
has been introduced. If it is set to$true
, Elvish matches completion candidates using a subsequence matching algorithm. Using the example in the previous bullet, input $le:lo<Tab>
,lo
is used to match againstloc-pinned
instead of the entire$le:lo
, becauseloc-pinned
instead of$le:loc-pinned
is now considered the candidate.