Go Other
Latest commit 085fe8b Jan 5, 2018 @xiaq xiaq eval: Add a Source type for exposing source info.
A builtin src has been provided to expose this info. This fixes #327.
Permalink
Failed to load latest commit information.
build Fix more package docstrings. Dec 31, 2017
daemon Cosmetics. Jan 1, 2018
edit eval: Add a Source type for exposing source info. Jan 5, 2018
eval eval: Add a Source type for exposing source info. Jan 5, 2018
getopt Cosmetics. Jan 1, 2018
glob Fix minor issues found by gofmt, go vet, and misspell. Dec 14, 2017
parse tt: Improve API. Jan 3, 2018
program eval: Add a Source type for exposing source info. Jan 5, 2018
runtime eval: Move daemon_ns to eval/daemon. Jan 3, 2018
store Define a common interface for store.Store and daemon.Client. Dec 28, 2017
sys Fix sys.IsATTY, and enable Editor on windows (broken for now) Dec 14, 2017
tt tt: Improve API. Jan 3, 2018
util Cosmetics. Jan 1, 2018
vendor Update deps Jan 5, 2018
.appveyor.yml Re-enable sending coverage to coveralls. Dec 26, 2017
.gitattributes Use .gitattributes to filter go sources through goimports Feb 10, 2014
.gitignore Updated .gitignore (#303) Jan 12, 2017
.travis.yml On TravisCU, don't build with go 1.8 on macOS Dec 15, 2017
.vsts.sh Fix .vsts.sh again. Dec 7, 2017
CONTRIBUTING.md CONTRIBUTING: Document all codegen deps. Jan 1, 2018
Dockerfile update Dockerfile Feb 9, 2016
Gopkg.lock Update deps Jan 5, 2018
Gopkg.toml Update dep constraints. Jan 5, 2018
LICENSE Project rename: das -> elvish Jan 29, 2014
Makefile Makefile: Disable PR coverage on AppVeyor. Dec 29, 2017
README.md Improve contributing doc. Jan 1, 2018
build-and-upload.elv build script: Build for Windows 386; fix indent Dec 21, 2017
main.go New title and description. Dec 31, 2017

README.md

Elvish: Friendly and Expressive Shell

logo

Elvish is a cross-platform shell, supporting Linux, BSDs and Windows. It features an expressive programming language, with features like namespacing and anonymous functions, and a fully programmable user interface with friendly defaults. It is suitable for both interactive use and scripting.

... which is not 100% true yet. Elvish is already suitable for most daily interactive use, but it is neither complete nor stablized. Contributions are more than welcome!

This README documents the development aspect of Elvish. Other information is to be found on the website.

Build Status on Travis Build status on AppVeyor Build Status on VSTS Code Coverage on codecov.io Code Coverage on coveralls.io Go Report Card GoDoc License

Gitter Telegram Group #elvish on freenode Gitter for Developers Telegram Group for Developers #elvish-dev on freenode Twitter

Building Elvish

To build Elvish, you need

  • Go >= 1.8.

  • Linux, {Free,Net,Open}BSD, macOS, or Windows (Windows support is experimental).

If you would like to contribute code to Elvish, please read CONTRIBUTING.md.

The Correct Way

Elvish is a go-gettable package. To build Elvish, first set up your Go workspace according to How To Write Go Code, and then run

go get github.com/elves/elvish

The Lazy Way

Here is something you can copy-paste into your terminal:

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
mkdir -p $GOPATH

go get github.com/elves/elvish

for f in ~/.bashrc ~/.zshrc; do
    printf 'export %s=%s\n' GOPATH '$HOME/go' PATH '$PATH:$GOPATH/bin' >> $f
done

The scripts sets up the Go workspace and runs go get for you. It assumes that you have a working Go installation and currently use bash or zsh.

The Homebrew Way

Users of macOS can build Elvish using Homebrew:

brew install --HEAD elvish

Name

In roguelikes, items made by the elves have a reputation of high quality. These are usually called elven items, but I chose "elvish" because it ends with "sh", a long tradition of Unix shells. It also rhymes with fish, one of the shells that influenced the philosophy of Elvish.

The word "Elvish" should be capitalized like a proper noun. However, when referring to the elvish command, use it in lower case with fixed-width font.

Whoever practices the Elvish way by either contributing to it or simply using it is called an Elf. (You might have guessed this from the name of the GitHub organization.) The official adjective for Elvish (as in "Pythonic" for Python, "Rubyesque" for Ruby) is Elven.