2
2
mirror of https://github.com/Hilbis/Hilbish synced 2025-07-03 01:32:03 +00:00

Compare commits

...

2 Commits

5 changed files with 36 additions and 8 deletions

View File

@ -76,3 +76,8 @@ of an exact match.
#### Default: `true`
If this is enabled, when a background job is finished,
a [notification](../notifications) will be sent.
### `processorSkipList`
#### Value: `table`
#### Default: `{}`
A table listing the names of command processors to skip.

View File

@ -1,6 +1,7 @@
local fs = require 'fs'
hilbish.processors.add {
name = 'hilbish.autocd',
func = function(path)
if hilbish.opts.autocd then
local ok, stat = pcall(fs.stat, path)

View File

@ -15,7 +15,8 @@ The nice lil shell for {blue}Lua{reset} fanatics!
fuzzy = false,
notifyJobFinish = true,
crimmas = true,
tips = true
tips = true,
processorSkipList = {}
}
for optsName, default in pairs(defaultOpts) do

View File

@ -6,6 +6,10 @@ hilbish.processors = {
}
function hilbish.processors.add(processor)
if not processor.name then
error 'processor is missing name'
end
if not processor.func then
error 'processor is missing function'
end
@ -14,17 +18,32 @@ function hilbish.processors.add(processor)
table.sort(hilbish.processors.list, function(a, b) return a.priority < b.priority end)
end
local function contains(search, needle)
for _, p in ipairs(search) do
if p == needle then
return true
end
end
return false
end
--- Run all command processors, in order by priority.
--- It returns the processed command (which may be the same as the passed command)
--- and a boolean which states whether to proceed with command execution.
function hilbish.processors.execute(command)
function hilbish.processors.execute(command, opts)
opts = opts or {}
opts.skip = opts.skip or {}
local continue = true
for _, processor in ipairs(hilbish.processors.list) do
local processed = processor.func(command)
if processed.command then command = processed.command end
if not processed.continue then
continue = false
break
if not contains(opts.skip, processor.name) then
local processed = processor.func(command)
if processed.command then command = processed.command end
if not processed.continue then
continue = false
break
end
end
end

View File

@ -123,7 +123,9 @@ end
-- @param priv bool
function hilbish.runner.run(input, priv)
bait.throw('command.preprocess', input)
local input, continue = hilbish.processors.execute(input)
local input, continue = hilbish.processors.execute(input, {
skip = hilbish.opts.processorSkipList
})
if not continue then
finishExec(0, '', true)
return