mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-bin-mirb: add README with tab completion documentation
Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# mruby-bin-mirb
|
||||
|
||||
mirb (mruby interactive) is an interactive Ruby shell for mruby.
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
mirb [options]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
- `-v` - print version and exit
|
||||
- `-d` - set `$DEBUG` to true
|
||||
- `-r library` - load the library before executing
|
||||
- `--verbose` - verbose mode
|
||||
|
||||
## Tab Completion
|
||||
|
||||
mirb supports context-aware tab completion when built with a readline library.
|
||||
|
||||
### Supported Completions
|
||||
|
||||
- **Methods on objects**: Type an expression followed by `.` and press Tab
|
||||
|
||||
```
|
||||
> "hello".up<Tab>
|
||||
upcase upcase! upto
|
||||
```
|
||||
|
||||
- **Local variables**: Variables defined in the session
|
||||
|
||||
```
|
||||
> my_var = 123
|
||||
> my<Tab>
|
||||
my_var
|
||||
```
|
||||
|
||||
- **Global variables**: Press Tab after `$`
|
||||
|
||||
```
|
||||
> $std<Tab>
|
||||
$stdout $stderr $stdin
|
||||
```
|
||||
|
||||
- **Constants and classes**: Capital letter followed by Tab
|
||||
|
||||
```
|
||||
> Str<Tab>
|
||||
String Struct
|
||||
```
|
||||
|
||||
- **Ruby keywords**: At the start of expressions
|
||||
|
||||
```
|
||||
> cla<Tab>
|
||||
class
|
||||
```
|
||||
|
||||
### Readline Library Support
|
||||
|
||||
Tab completion works with:
|
||||
|
||||
- **GNU readline** (default on Linux)
|
||||
- **libedit** (default on macOS/BSD)
|
||||
- **linenoise** (lightweight alternative)
|
||||
|
||||
### Configuration
|
||||
|
||||
The readline library can be configured via the `MRUBY_MIRB_READLINE` environment variable:
|
||||
|
||||
```bash
|
||||
# Auto-detect (default)
|
||||
rake
|
||||
|
||||
# Force specific library
|
||||
MRUBY_MIRB_READLINE=readline rake # GNU readline
|
||||
MRUBY_MIRB_READLINE=libedit rake # libedit
|
||||
MRUBY_MIRB_READLINE=linenoise rake # linenoise
|
||||
|
||||
# Disable readline (plain input mode)
|
||||
MRUBY_MIRB_READLINE=none rake
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
- Completion evaluates receiver expressions to determine available methods
|
||||
- Only simple receivers (variable names, constants) are evaluated for safety
|
||||
- Complex expressions like `obj.method().` are not completed to avoid side effects
|
||||
- File path completion in `require`/`load` statements is planned for future versions
|
||||
|
||||
## License
|
||||
|
||||
MIT License - see the mruby LICENSE file.
|
||||
Reference in New Issue
Block a user