ref: 95834e68cadf21039fb697bb2259485057957b50
dir: /readline.go/
//go:build !plan9
package main
import (
"io"
"os"
"fmt"
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)
}()
}
func (rl *readline) setWindowTitle(title string) {
fmt.Printf("\033]2;%s\007", title)
}