mirror of https://github.com/Hilbis/Hilbish
feat: add raw input hook (closes #180)
parent
83a2ce38ea
commit
08e2951513
|
@ -65,6 +65,7 @@ will be ran on startup
|
||||||
- Message of the day on startup (`hilbish.motd`), mainly intended as quick
|
- Message of the day on startup (`hilbish.motd`), mainly intended as quick
|
||||||
small news pieces for releases. It is printed by default. To disable it,
|
small news pieces for releases. It is printed by default. To disable it,
|
||||||
set `hilbish.opts.motd` to false.
|
set `hilbish.opts.motd` to false.
|
||||||
|
- `hilbish.rawInput` hook for input from the readline library
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- **Breaking Change:** Upgraded to Lua 5.4.
|
- **Breaking Change:** Upgraded to Lua 5.4.
|
||||||
|
|
4
lua.go
4
lua.go
|
@ -48,6 +48,10 @@ func luaInit() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
lr.rl.RawInputCallback = func(r []rune) {
|
||||||
|
hooks.Em.Emit("hilbish.rawInput", string(r))
|
||||||
|
}
|
||||||
|
|
||||||
// Add more paths that Lua can require from
|
// Add more paths that Lua can require from
|
||||||
err := util.DoString(l, "package.path = package.path .. " + requirePaths)
|
err := util.DoString(l, "package.path = package.path .. " + requirePaths)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -198,6 +198,8 @@ type Instance struct {
|
||||||
|
|
||||||
ViModeCallback func(ViMode)
|
ViModeCallback func(ViMode)
|
||||||
ViActionCallback func(ViAction, []string)
|
ViActionCallback func(ViAction, []string)
|
||||||
|
|
||||||
|
RawInputCallback func([]rune) // called on all input
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewInstance is used to create a readline instance and initialise it with sane defaults.
|
// NewInstance is used to create a readline instance and initialise it with sane defaults.
|
||||||
|
|
|
@ -94,6 +94,7 @@ func (rl *Instance) Readline() (string, error) {
|
||||||
|
|
||||||
rl.skipStdinRead = false
|
rl.skipStdinRead = false
|
||||||
r := []rune(string(b))
|
r := []rune(string(b))
|
||||||
|
rl.RawInputCallback(r[:i])
|
||||||
|
|
||||||
if isMultiline(r[:i]) || len(rl.multiline) > 0 {
|
if isMultiline(r[:i]) || len(rl.multiline) > 0 {
|
||||||
rl.multiline = append(rl.multiline, b[:i]...)
|
rl.multiline = append(rl.multiline, b[:i]...)
|
||||||
|
|
Loading…
Reference in New Issue