Powerful scripting language & versatile interactive shell add sylixos support.
Go to file
Qi Xiao 7932f58201 pkg/eval: Add a (*Evaler).Call method for calling a function.
Most of the places that need to directly call a function is in the edit package,
which need to call user-defined callbacks.

This change eliminates most call sites of NewTopFrame (including all call sites
outside the eval package). Remove the function and inline it in the remaining
few call sites.

Remove NewTopFrame means that the eval package no longer offers other packages
a way to construct Frame instances. This is intended: Frame is a relatively
low-level concept, and all code outside the eval package now uses the more
high-level Eval, Call, Check/CheckTree methods of *Evaler. The most notable
exception is packages that implement modules; they may still use Frame to access
the information kept in it, but they never construct Frame instances.

In future, the Frame type can be changed to an interface.
2021-01-03 18:57:11 +00:00
cmd pkg/ui: Add a Concat function for concatenating multiple Text's. 2020-08-25 22:34:19 +01:00
pkg pkg/eval: Add a (*Evaler).Call method for calling a function. 2021-01-03 18:57:11 +00:00
tools Produce actual diffs when running make checkstyle 2020-10-22 15:26:51 +01:00
website website: Remove link to old Matrix room. 2020-12-29 14:38:38 +00:00
.appveyor.yml Include cross-package invocations in test coverage 2021-01-03 02:05:44 +00:00
.cirrus.yml Include cross-package invocations in test coverage 2021-01-03 02:05:44 +00:00
.codecov.yml pkg/eval/evaltest: Move Must* functions to the testutil package. 2020-09-04 21:57:20 +01:00
.dockerignore Update .dockerignore. 2018-10-16 10:19:20 +01:00
.gitattributes Use .gitattributes to filter go sources through goimports 2014-02-10 12:41:16 +08:00
.gitignore Rename coverage file to "cover". 2020-08-16 17:04:02 +01:00
CONTRIBUTING.md Document style guide for the doc comment of unexported types and functions. 2020-08-16 14:00:04 +01:00
Dockerfile Update Dockerfile. 2018-10-22 23:51:09 +01:00
go.mod Replace "kr" package dependency with "creack" 2020-10-10 22:41:09 +01:00
go.sum Replace "kr" package dependency with "creack" 2020-10-10 22:41:09 +01:00
LICENSE Project rename: das -> elvish 2014-01-29 18:44:07 +08:00
main.go Drop the web subprogram from the main program. 2020-04-25 00:26:40 +01:00
Makefile Include cross-package invocations in test coverage 2021-01-03 02:05:44 +00:00
NEXT-RELEASE.md pkg/shell: Print both parse and compile errors when using -compileonly -json. 2021-01-03 16:32:04 +00:00
README.md Bump minimal Go requirement to >= 1.14, now that 1.15 has been released. 2020-08-13 22:41:57 +01:00

Elvish: Friendly Interactive Shell and Expressive Programming Language

Test Status on Linux Test Status on macOS Test Status on FreeBSD Test status on Windows Test Coverage Go Report Card GoDoc Twitter

Elvish is a friendly interactive shell and an expressive programming language. It runs on Linux, BSDs, macOS and Windows. Despite its pre-1.0 status, it is already suitable for most daily interactive use.

Visit the official website https://elv.sh for prebuilt binaries, blog posts, documentation and other resources.

User groups (all connected with matterbridge): Gitter Telegram Group #elvish on freenode #elvish:matrix.org

Building Elvish

Most users can just use prebuilt binaries and do not need to build from source.

To build Elvish from source, you need

  • A supported OS: Linux, {Free,Net,Open}BSD, macOS, or Windows.

    NOTE: Windows support is experimental, and only Windows 10 is supported.

  • Go >= 1.14.

To build Elvish from source, follow these steps:

# 1. Start from any directory you want to store Elvish's source code
# 2. Clone the Git repository
git clone https://github.com/elves/elvish
# 3. Change into the repository
cd elvish
# 4. Build and install Elvish
make get

This will install Elvish to ~/go/bin.

Alternatively, you can also just use go get to install Elvish:

go get -u github.com/elves/elvish

This will clone the Git repository to ~/go/src/github.com/elves/elvish, updating it if already exists, and install Elvish to ~/go/bin. However, Elvish built this way will lack version information, although it is otherwise fully functional.

Some tips on installation:

  • Remember to add $HOME/go/bin to your PATH so that you can run elvish directly.

  • If you want to install Elvish to a different place, follow these steps to set GOPATH, and Elvish will be installed to $GOPATH/bin instead.

Contributing to Elvish

See CONTRIBUTING.md for more notes for contributors.