mirror of
https://github.com/Hilbis/Hilbish
synced 2025-07-01 08:42:04 +00:00
this is the only way i could think of to be able to push go functions to lua on the clua side. this may or may not need adjustments on golua side though...
101 lines
2.4 KiB
Lua
101 lines
2.4 KiB
Lua
-- Prelude initializes everything else for our shell
|
|
print(require 'hilbish')
|
|
print('hilbitch type', type(hilbish))
|
|
print(hilbish.prompt)
|
|
print(hilbish.ver)
|
|
--[[
|
|
local _ = require 'succulent' -- Function additions
|
|
local bait = require 'bait'
|
|
--local fs = require 'fs'
|
|
|
|
package.path = package.path .. ';' .. hilbish.dataDir .. '/?/init.lua'
|
|
.. ';' .. hilbish.dataDir .. '/?/?.lua' .. ";" .. hilbish.dataDir .. '/?.lua'
|
|
|
|
if not hilbish.midnightEdition then
|
|
hilbish.module.paths = '?.so;?/?.so;'
|
|
.. hilbish.userDir.data .. 'hilbish/libs/?/?.so'
|
|
.. ";" .. hilbish.userDir.data .. 'hilbish/libs/?.so'
|
|
|
|
table.insert(package.searchers, function(module)
|
|
local path = package.searchpath(module, hilbish.module.paths)
|
|
if not path then return nil end
|
|
|
|
-- it didnt work normally, idk
|
|
return function() return hilbish.module.load(path) end, path
|
|
end)
|
|
end
|
|
|
|
require 'nature.commands'
|
|
require 'nature.completions'
|
|
require 'nature.opts'
|
|
require 'nature.vim'
|
|
require 'nature.runner'
|
|
require 'nature.hummingbird'
|
|
|
|
local shlvl = tonumber(os.getenv 'SHLVL')
|
|
if shlvl ~= nil then
|
|
os.setenv('SHLVL', tostring(shlvl + 1))
|
|
else
|
|
os.setenv('SHLVL', '0')
|
|
end
|
|
|
|
do
|
|
local virt_G = { }
|
|
|
|
setmetatable(_G, {
|
|
__index = function (_, key)
|
|
local got_virt = virt_G[key]
|
|
if got_virt ~= nil then
|
|
return got_virt
|
|
end
|
|
|
|
if type(key) == 'string' then
|
|
virt_G[key] = os.getenv(key)
|
|
end
|
|
return virt_G[key]
|
|
end,
|
|
|
|
__newindex = function (_, key, value)
|
|
if type(value) == 'string' then
|
|
os.setenv(key, value)
|
|
virt_G[key] = value
|
|
else
|
|
if type(virt_G[key]) == 'string' then
|
|
os.setenv(key, '')
|
|
end
|
|
virt_G[key] = value
|
|
end
|
|
end,
|
|
})
|
|
end
|
|
|
|
do
|
|
local startSearchPath = hilbish.userDir.data .. '/hilbish/start/?/init.lua;'
|
|
.. hilbish.userDir.data .. '/hilbish/start/?.lua'
|
|
|
|
local ok, modules = pcall(fs.readdir, hilbish.userDir.data .. '/hilbish/start/')
|
|
if ok then
|
|
for _, module in ipairs(modules) do
|
|
local entry = package.searchpath(module, startSearchPath)
|
|
if entry then
|
|
dofile(entry)
|
|
end
|
|
end
|
|
end
|
|
|
|
package.path = package.path .. ';' .. startSearchPath
|
|
end
|
|
|
|
bait.catch('error', function(event, handler, err)
|
|
print(string.format('Encountered an error in %s handler\n%s', event, err:sub(8)))
|
|
end)
|
|
|
|
bait.catch('command.not-found', function(cmd)
|
|
print(string.format('hilbish: %s not found', cmd))
|
|
end)
|
|
|
|
bait.catch('command.not-executable', function(cmd)
|
|
print(string.format('hilbish: %s: not executable', cmd))
|
|
end)
|
|
]]--
|