mirror of https://github.com/Hilbis/Hilbish
feat: add fuzzy opt for fuzzy history searching
parent
4593a2006c
commit
b98239ac82
2
lua.go
2
lua.go
|
@ -68,7 +68,7 @@ func luaInit() {
|
|||
}
|
||||
|
||||
// Add more paths that Lua can require from
|
||||
err := util.DoString(l, "package.path = package.path .. " + requirePaths)
|
||||
_, err := util.DoString(l, "package.path = package.path .. " + requirePaths)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, "Could not add Hilbish require paths! Libraries will be missing. This shouldn't happen.")
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ setmetatable(hilbish.opts, {
|
|||
|
||||
local function setupOpt(name, default)
|
||||
opts[name] = default
|
||||
require('nature.opts.' .. name)
|
||||
pcall(require, 'nature.opts.' .. name)
|
||||
end
|
||||
|
||||
local defaultOpts = {
|
||||
|
@ -25,7 +25,8 @@ local defaultOpts = {
|
|||
greeting = string.format([[Welcome to {magenta}Hilbish{reset}, {cyan}%s{reset}.
|
||||
The nice lil shell for {blue}Lua{reset} fanatics!
|
||||
]], hilbish.user),
|
||||
motd = true
|
||||
motd = true,
|
||||
fuzzy = false
|
||||
}
|
||||
|
||||
for optsName, default in pairs(defaultOpts) do
|
||||
|
|
7
rl.go
7
rl.go
|
@ -25,7 +25,14 @@ func newLineReader(prompt string, noHist bool) *lineReader {
|
|||
rl: rl,
|
||||
}
|
||||
|
||||
regexSearcher := rl.Searcher
|
||||
rl.Searcher = func(needle string, haystack []string) []string {
|
||||
fz, _ := util.DoString(l, "return hilbish.opts.fuzzy")
|
||||
fuzz, ok := fz.TryBool()
|
||||
if !fuzz || !ok {
|
||||
return regexSearcher(needle, haystack)
|
||||
}
|
||||
|
||||
matches := fuzzy.Find(needle, haystack)
|
||||
suggs := make([]string, 0)
|
||||
|
||||
|
|
|
@ -26,13 +26,14 @@ func SetFieldProtected(module, realModule *rt.Table, field string, value rt.Valu
|
|||
}
|
||||
|
||||
// DoString runs the code string in the Lua runtime.
|
||||
func DoString(rtm *rt.Runtime, code string) error {
|
||||
func DoString(rtm *rt.Runtime, code string) (rt.Value, error) {
|
||||
chunk, err := rtm.CompileAndLoadLuaChunk("<string>", []byte(code), rt.TableValue(rtm.GlobalEnv()))
|
||||
var ret rt.Value
|
||||
if chunk != nil {
|
||||
_, err = rt.Call1(rtm.MainThread(), rt.FunctionValue(chunk))
|
||||
ret, err = rt.Call1(rtm.MainThread(), rt.FunctionValue(chunk))
|
||||
}
|
||||
|
||||
return err
|
||||
return ret, err
|
||||
}
|
||||
|
||||
// DoFile runs the contents of the file in the Lua runtime.
|
||||
|
|
Loading…
Reference in New Issue