Files
nvim/lua/conf/plugins/neorg.lua

136 lines
3.8 KiB
Lua

-- WARNING: neorg does some pretty stupid stuff when it comes to the plugins it
-- wants (using luarocks), in order to get around all that bullshit I've
-- manually added it's dependencies. Because I don't want this to randomly break
-- I've also pinned neorg to the latest working version that I've messed around
-- with.
--
-- NOTE: for my future self to update this thingy while not breaking
-- dependencies take a look at the build.lua for versioning info. Also make sure
-- to check the release notes on github for info on breaking changes.
local workspace_cache = vim.fs.joinpath(vim.fn.stdpath("data"), "neorg-workspace-cache.lua")
--- populate neorg workspaces from path or cache
---@param path string path to populate workspaces from
---@param cache boolean? if true will re populate the cache from the fs
---@return table workspaces
local function populate_workspaces(path, cache)
local workspaces = {}
cache = cache or false
if vim.fn.filereadable(workspace_cache) == 1 and not cache then
local ok, ret = pcall(dofile, workspace_cache)
if ok and type(ret) == "table" then
return ret
end
end
-- loop through all files in path if path is not empty
if vim.fn.empty(vim.fn.glob(path)) == 0 then
for n, t in vim.fs.dir(path) do
if string.sub(n, 1, 1) == "." or (t ~= "directory" and t ~= "link") then
goto continue
end
-- make sure this still works if the last charachter in the path isn't a '/'
workspaces[n] = (string.sub(path, #path, #path) == "/") and path..n or path.."/"..n
::continue::
end
end
-- write data to cachefile
local f = io.open(workspace_cache, "w+")
if not f then
return workspaces
end
f:write("return")
local ret = vim.inspect(workspaces)
if type(ret) == "string" then
f:write(ret)
else
f:write("false")
end
f:close()
return workspaces
end
return { 'nvim-neorg/neorg',
disable = vim.version.lt(vim.version(), { 0, 10, 0 }),
branch = 'v9.1.1',
requires = {
'nvim-lua/plenary.nvim',
'nvim-treesitter/nvim-treesitter',
'folke/zen-mode.nvim',
'hrsh7th/nvim-cmp',
{ 'nvim-neorg/neorg-telescope',
requires = 'nvim-telescope/telescope.nvim'
},
-- NOTE: these are usually installed by neorg via luarocks, the versions
-- were picked based on the build.lua found in the root of the neorg repo
{ 'nvim-neotest/nvim-nio',
branch = 'v1.7.0'
},
{ 'nvim-neorg/lua-utils.nvim',
branch = 'v1.0.2'
},
{ 'MunifTanjim/nui.nvim',
branch = '0.3.0'
},
{ 'pysan3/pathlib.nvim',
branch = 'v2.2.2'
}
},
function()
local wsphome = (os.getenv("XDG_DOCUMENTS_DIR") or
(os.getenv("HOME").."/Documents")).."/notes/"
require('neorg').setup {
load = {
-- not sure how to sort the modules so ima just put the empty ones first
["core.defaults"] = {},
["core.export"] = {},
["core.export.markdown"] = {},
["core.integrations.telescope"] = {},
["core.summary"] = {},
["core.ui.calendar"] = {},
["core.completion"] = {
config = {
engine = "nvim-cmp"
}
},
["core.concealer"] = {
config = {
folds = false
}
},
["core.dirman"] = {
config = {
-- a list of available workspaces are generated at runtime >:)
workspaces = populate_workspaces(wsphome)
}
},
["core.esupports.metagen"] = {
config = {
type = "auto"
}
},
["core.presenter"] = {
config = {
zen_mode = "zen-mode"
}
},
["core.qol.toc"] = {
config = {
close_after_use = true
}
}
}
}
end
}