From 16b39fe157f72984af21f4c1bcb50b4da45b7960 Mon Sep 17 00:00:00 2001 From: sammyette Date: Fri, 19 Apr 2024 07:54:46 -0400 Subject: [PATCH] fix: call highlighter and hinter from global table (closes #289) --- api.go | 11 ++++++++++- rl.go | 13 ++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/api.go b/api.go index 9470709..b8e62b3 100644 --- a/api.go +++ b/api.go @@ -712,5 +712,14 @@ func hlhinter(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) { // #example // #param line string func hlhighlighter(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) { - return c.Next(), nil + if err := c.Check1Arg(); err != nil { + return nil, err + } + + line, err := c.StringArg(0) + if err != nil { + return nil, err + } + + return c.PushingNext1(t.Runtime, rt.StringValue(line)), nil } diff --git a/rl.go b/rl.go index 7d5ed89..231d04b 100644 --- a/rl.go +++ b/rl.go @@ -70,11 +70,8 @@ func newLineReader(prompt string, noHist bool) *lineReader { hooks.Emit("hilbish.vimAction", actionStr, args) } rl.HintText = func(line []rune, pos int) []rune { - if hinter == nil { - return []rune{} - } - - retVal, err := rt.Call1(l.MainThread(), rt.FunctionValue(hinter), + hinter := hshMod.Get(rt.StringValue("hinter")) + retVal, err := rt.Call1(l.MainThread(), hinter, rt.StringValue(string(line)), rt.IntValue(int64(pos))) if err != nil { fmt.Println(err) @@ -89,10 +86,8 @@ func newLineReader(prompt string, noHist bool) *lineReader { return []rune(hintText) } rl.SyntaxHighlighter = func(line []rune) string { - if highlighter == nil { - return string(line) - } - retVal, err := rt.Call1(l.MainThread(), rt.FunctionValue(highlighter), + highlighter := hshMod.Get(rt.StringValue("highlighter")) + retVal, err := rt.Call1(l.MainThread(), highlighter, rt.StringValue(string(line))) if err != nil { fmt.Println(err)