mirror of https://github.com/Hilbis/Hilbish
67 lines
1.5 KiB
Lua
67 lines
1.5 KiB
Lua
-- Prelude initializes everything else for our shell
|
|
local _ = require 'succulent' -- Function additions
|
|
local fs = require 'fs'
|
|
|
|
package.path = package.path .. ';' .. hilbish.dataDir .. '/?/init.lua'
|
|
.. ';' .. hilbish.dataDir .. '/?/?.lua' .. ";" .. hilbish.dataDir .. '/?.lua'
|
|
|
|
require 'nature.commands'
|
|
require 'nature.completions'
|
|
require 'nature.opts'
|
|
require 'nature.vim'
|
|
require 'nature.runner'
|
|
|
|
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
|