Compare commits

...

3 Commits

Author SHA1 Message Date
TorchedSammy 4e8aa7ed1d
fix(readline): use invert for completion highlight instead of hardcoded colors 2022-04-17 23:39:53 -04:00
TorchedSammy 919a52a630
fix: handle syntax error in aliased command
if an alias is something which isn't valid syntax,
specifically if hilbish cant split up the input
properly to execute, it will report the error to
the user. the previous behaviour was a panic since
on error the args slice will be of length 0

this is basically an edge case and fixes a bug
which shouldnt happen normally
2022-04-17 22:58:29 -04:00
TorchedSammy b0c950a96a
fix: make sure user input is saved to history without alias expansion (4th same regression woo) 2022-04-17 22:57:31 -04:00
6 changed files with 13 additions and 7 deletions

1
api.go
View File

@ -325,6 +325,7 @@ func hlprompt(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) {
return nil, err return nil, err
} }
typ := "left" typ := "left"
// optional 2nd arg
if len(c.Etc()) != 0 { if len(c.Etc()) != 0 {
ltyp := c.Etc()[0] ltyp := c.Etc()[0]
var ok bool var ok bool

12
exec.go
View File

@ -42,13 +42,13 @@ func runInput(input string, priv bool) {
cmdFinish(0, input, priv) cmdFinish(0, input, priv)
return return
} }
input, exitCode, err = handleSh(cmdString) input, exitCode, err = handleSh(input)
if err != nil { if err != nil {
fmt.Fprintln(os.Stderr, err) fmt.Fprintln(os.Stderr, err)
} }
cmdFinish(exitCode, input, priv) cmdFinish(exitCode, input, priv)
case "hybridRev": case "hybridRev":
_, _, err = handleSh(cmdString) _, _, err = handleSh(input)
if err == nil { if err == nil {
cmdFinish(0, input, priv) cmdFinish(0, input, priv)
return return
@ -65,7 +65,7 @@ func runInput(input string, priv bool) {
} }
cmdFinish(exitCode, input, priv) cmdFinish(exitCode, input, priv)
case "sh": case "sh":
input, exitCode, err = handleSh(cmdString) input, exitCode, err = handleSh(input)
if err != nil { if err != nil {
fmt.Fprintln(os.Stderr, err) fmt.Fprintln(os.Stderr, err)
} }
@ -220,7 +220,11 @@ func execHandle(bg bool) interp.ExecHandlerFunc {
// If alias was found, use command alias // If alias was found, use command alias
argstring = aliases.Resolve(argstring) argstring = aliases.Resolve(argstring)
args, _ = shell.Fields(argstring, nil) var err error
args, err = shell.Fields(argstring, nil)
if err != nil {
return err
}
} }
// If command is defined in Lua then run it // If command is defined in Lua then run it

View File

@ -85,6 +85,7 @@ const (
seqBold = "\x1b[1m" seqBold = "\x1b[1m"
seqUnderscore = "\x1b[4m" seqUnderscore = "\x1b[4m"
seqBlink = "\x1b[5m" seqBlink = "\x1b[5m"
seqInvert = "\x1b[7m"
) )
// Text colours // Text colours

View File

@ -121,7 +121,7 @@ func (g *CompletionGroup) writeGrid(rl *Instance) (comp string) {
} }
if (x == g.tcPosX && y == g.tcPosY) && (g.isCurrent) { if (x == g.tcPosX && y == g.tcPosY) && (g.isCurrent) {
comp += seqCtermFg255 + seqFgBlackBright comp += seqInvert
} }
comp += fmt.Sprintf("%-"+cellWidth+"s %s", g.Suggestions[i], seqReset) comp += fmt.Sprintf("%-"+cellWidth+"s %s", g.Suggestions[i], seqReset)

View File

@ -188,7 +188,7 @@ func (g *CompletionGroup) writeList(rl *Instance) (comp string) {
// function highlights the cell depending on current selector place. // function highlights the cell depending on current selector place.
highlight := func(y int, x int) string { highlight := func(y int, x int) string {
if y == g.tcPosY && x == g.tcPosX && g.isCurrent { if y == g.tcPosY && x == g.tcPosX && g.isCurrent {
return seqCtermFg255 + seqFgBlackBright return seqInvert
} }
return "" return ""
} }

View File

@ -101,7 +101,7 @@ func (g *CompletionGroup) writeMap(rl *Instance) (comp string) {
// Highlighting function // Highlighting function
highlight := func(y int) string { highlight := func(y int) string {
if y == g.tcPosY && g.isCurrent { if y == g.tcPosY && g.isCurrent {
return seqCtermFg255 + seqFgBlackBright return seqInvert
} }
return "" return ""
} }