ref: b465166bc3093d1a8f998bf78113ccd68ade0019
dir: /readline.go/
//go:build !plan9
package main
import (
native "github.com/ergochat/readline"
"io"
"os"
)
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)
}()
}