change cbreak functions to panic rather than return an error on failure

This commit is contained in:
Justin Overfelt 2019-05-01 18:25:45 -04:00
parent 6ea5754e57
commit 27c1e0572a
3 changed files with 18 additions and 35 deletions

View File

@ -57,10 +57,7 @@ func moveCursorToward(dir string, amount int) {
func Exit() { func Exit() {
moveCursorToward("down", 500) moveCursorToward("down", 500)
moveCursorToward("right", 500) moveCursorToward("right", 500)
err := SetLineMode() SetLineMode()
if err != nil {
panic(err)
}
fmt.Print("\n") fmt.Print("\n")
fmt.Print("\033[?25h") fmt.Print("\033[?25h")
@ -126,10 +123,7 @@ func Getch() rune {
} }
func GetLine() (string, error) { func GetLine() (string, error) {
err := SetLineMode() SetLineMode()
if err != nil {
return "", err
}
reader := bufio.NewReader(os.Stdin) reader := bufio.NewReader(os.Stdin)
fmt.Print(": ") fmt.Print(": ")
@ -138,30 +132,28 @@ func GetLine() (string, error) {
return "", err return "", err
} }
err = SetCharMode() SetCharMode()
if err != nil {
return "", err
}
return text[:len(text)-1], nil return text[:len(text)-1], nil
} }
func SetCharMode() error { func SetCharMode() {
cmd := exec.Command("stty", "cbreak", "-echo") cmd := exec.Command("stty", "cbreak", "-echo")
cmd.Stdin = os.Stdin cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout cmd.Stdout = os.Stdout
err := cmd.Run() err := cmd.Run()
if err != nil { if err != nil {
return err panic(err)
} }
_, err = fmt.Print("\033[?25l") fmt.Print("\033[?25l")
return err
} }
func SetLineMode() error { func SetLineMode() {
cmd := exec.Command("stty", "-cbreak", "echo") cmd := exec.Command("stty", "-cbreak", "echo")
cmd.Stdin = os.Stdin cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout cmd.Stdout = os.Stdout
return cmd.Run() err := cmd.Run()
if err != nil {
panic(err)
}
} }

View File

@ -142,7 +142,7 @@ func (s *Screen) GetSize() {
// NewScreen is a constructor function that returns a pointer // NewScreen is a constructor function that returns a pointer
// to a Screen struct // to a Screen struct
func NewScreen() (*Screen, error) { func NewScreen() *Screen {
if screenInit { if screenInit {
fmt.Println("Fatal error: Cannot create multiple screens") fmt.Println("Fatal error: Cannot create multiple screens")
os.Exit(1) os.Exit(1)
@ -152,12 +152,10 @@ func NewScreen() (*Screen, error) {
for i := 0; i < s.Height; i++ { for i := 0; i < s.Height; i++ {
fmt.Println() fmt.Println()
} }
err := SetCharMode()
if err != nil { SetCharMode()
return nil, err
}
Clear("screen") Clear("screen")
screenInit = true screenInit = true
return &s, nil return &s
} }

13
main.go
View File

@ -8,6 +8,7 @@ import (
"regexp" "regexp"
"strconv" "strconv"
"strings" "strings"
"tildegit.org/sloum/bombadillo/cmdparse" "tildegit.org/sloum/bombadillo/cmdparse"
"tildegit.org/sloum/bombadillo/config" "tildegit.org/sloum/bombadillo/config"
"tildegit.org/sloum/bombadillo/cui" "tildegit.org/sloum/bombadillo/cui"
@ -403,16 +404,8 @@ func displayError(err error) {
func initClient() error { func initClient() error {
history.Position = -1 history.Position = -1
var err error screen = cui.NewScreen()
screen, err = cui.NewScreen() cui.SetCharMode()
if err != nil {
return err
}
err = cui.SetCharMode()
if err != nil {
return err
}
screen.AddWindow(2, 1, screen.Height-2, screen.Width, false, false, true) screen.AddWindow(2, 1, screen.Height-2, screen.Width, false, false, true)
screen.Windows[0].Active = true screen.Windows[0].Active = true