# sol-repl
a REPL to provide instant feedback for Solidity snippets
[Any bug reports or feature requests](https://github.com/eagr/sol-repl/issues/new) are appreciated.
## Features
* language
* [x] constant
* [x] contract
* [x] enum
* [x] function
* [x] import
* [x] interface
* [x] library
* [x] struct
* [x] type
* REPL
* [x] Node-like REPL interactions
* [x] cursor/delete shortcuts
* [x] history traversing
* [x] history filtering
* [x] `.session` print formatted Solidity source
* [ ] `.editor` editor mode
## Install
```sh
npm i -g sol-repl
```
## Usage
```sh
$ sol
Welcome to Solidity v0.8.13!
Type ".help" for more information.
> .help
.exit Exit the REPL
.help Print this message
.session Print current session
> enum Abc { a, b, c }
> type(Abc).max
2
> Abc c = Abc.c
2
> contract C {}
> msg.sender
0x4B6F0b9546487B1a184ADc43e0b17299cCdf8648
```
## Shortcuts
**cursor**
* Alt+Left Cursor to previous word start
* Alt+Right Cursor to next word end
* Fn+Left Cursor to line start
* Fn+Right Cursor to line end
**delete**
* Alt+Del Delete to previous word bound from cursor
* Ctrl+W Alias of Alt+Del
* Ctrl+U Delete to line start from cursor
**interrupt**
* Ctrl+C Clear line; signal an exit
* Ctrl+D Immediately terminate REPL
## License
[MIT](./LICENSE)