ref: 77dbcd42082c97825bef9d5c962b0ae619f3ca1f
dir: /readline.go/
//go:build !plan9
package main
import (
"os"
"io"
native "github.com/ergochat/readline"
)
type readline struct {
*native.Instance
}
var (
ErrInterrupt = native.ErrInterrupt
)
type Config = native.Config
const (
CharCtrlJ = native.CharCtrlJ
CharInterrupt = native.CharInterrupt
CharEnter = native.CharEnter
)
func NewReadline(config *Config) (*readline, error) {
instance, err := native.NewEx(config)
if err != nil {
return nil, err
}
return &readline{instance}, nil
}
func enablePipeHack(rl *readline) {
//Horrible io pipe hack
//Replaces system stdout with the readline one
r, w, _ := os.Pipe()
os.Stdout = w
go func() {
io.Copy(rl.Stdout(), r)
}()
}