/gore

Yet another Go REPL that works nicely. Featured with line editing, code completion, and more.

Primary LanguageGoMIT LicenseMIT

gore Build Status

Yet another Go REPL that works nicely. Featured with line editing, code completion, and more.

Screencast

(Screencast taken with cho45/KeyCast)

Usage

gore

After a prompt is shown, enter any Go expressions/statements or commands described below.

To quit the session, type Ctrl-D.

Features

  • Line editing with history

  • Multiline inputs

  • Package importing with completion

  • Evaluates any expressions or statements

  • No "evaluated but not used"

  • Code completion (requires gocode)

  • Pretty printing (pp or spew recommended)

  • Showing documents (requires godoc)

  • Auto-importing

REPL Commands

Some functionalities are provided as colon-commands:

:import <package path>  Import package
:print                  Show current source
:write [<filename>]     Write out current source to file
:doc <expr or pkg>      Show document (requires godoc)
:help                   List commands
:quit                   Quit the session

Installation

gore uses Go toolchains, so I don’t provide binaries.

go get -u github.com/motemen/gore

Make sure $GOPATH/bin is in your $PATH.

Also recommended:

go get -u github.com/nsf/gocode
go get -u github.com/k0kubun/pp # or github.com/davecgh/go-spew
go get -u golang.org/x/tools/cmd/godoc

FAQ/Caveats

  • If you see too many arguments in call to mainScope.LookupParent while installing gore, run go get -u golang.org/x/tools/go/types.

  • gore runs code using go run for each input. If you have entered time-consuming code, gore will run it for each input and take some time.

TODO

  • Undoing input

  • Configuration

  • :write completion

  • Direct editing of code

  • Using external sources

  • API

License

Author

motemen <motemen@gmail.com>