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() {
moveCursorToward("down", 500)
moveCursorToward("right", 500)
err := SetLineMode()
if err != nil {
panic(err)
}
SetLineMode()
fmt.Print("\n")
fmt.Print("\033[?25h")
@ -126,10 +123,7 @@ func Getch() rune {
}
func GetLine() (string, error) {
err := SetLineMode()
if err != nil {
return "", err
}
SetLineMode()
reader := bufio.NewReader(os.Stdin)
fmt.Print(": ")
@ -138,30 +132,28 @@ func GetLine() (string, error) {
return "", err
}
err = SetCharMode()
if err != nil {
return "", err
}
SetCharMode()
return text[:len(text)-1], nil
}
func SetCharMode() error {
func SetCharMode() {
cmd := exec.Command("stty", "cbreak", "-echo")
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
err := cmd.Run()
if err != nil {
return err
panic(err)
}
_, err = fmt.Print("\033[?25l")
return err
fmt.Print("\033[?25l")
}
func SetLineMode() error {
func SetLineMode() {
cmd := exec.Command("stty", "-cbreak", "echo")
cmd.Stdin = os.Stdin
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
// to a Screen struct
func NewScreen() (*Screen, error) {
func NewScreen() *Screen {
if screenInit {
fmt.Println("Fatal error: Cannot create multiple screens")
os.Exit(1)
@ -152,12 +152,10 @@ func NewScreen() (*Screen, error) {
for i := 0; i < s.Height; i++ {
fmt.Println()
}
err := SetCharMode()
if err != nil {
return nil, err
}
SetCharMode()
Clear("screen")
screenInit = true
return &s, nil
return &s
}

13
main.go
View File

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