feat: add raw input hook (closes #180)

history-searcher
TorchedSammy 2022-07-10 20:34:00 -04:00
parent 83a2ce38ea
commit 08e2951513
Signed by: sammyette
GPG Key ID: 904FC49417B44DCD
4 changed files with 8 additions and 0 deletions

View File

@ -65,6 +65,7 @@ will be ran on startup
- 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,
set `hilbish.opts.motd` to false.
- `hilbish.rawInput` hook for input from the readline library
### Changed
- **Breaking Change:** Upgraded to Lua 5.4.

4
lua.go
View File

@ -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
err := util.DoString(l, "package.path = package.path .. " + requirePaths)
if err != nil {

View File

@ -198,6 +198,8 @@ type Instance struct {
ViModeCallback func(ViMode)
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.

View File

@ -94,6 +94,7 @@ func (rl *Instance) Readline() (string, error) {
rl.skipStdinRead = false
r := []rune(string(b))
rl.RawInputCallback(r[:i])
if isMultiline(r[:i]) || len(rl.multiline) > 0 {
rl.multiline = append(rl.multiline, b[:i]...)