zettelkasten.nvim/lua/zettelkasten/options.lua
Marty Oehme 1742b74d5a
Refactor restricted option sets
Added utility function must_contain which will crawl through a set and
emit an error if the value is not contained in it.
2020-10-30 19:08:52 +01:00

44 lines
1.4 KiB
Lua

local Opt = {}
-- setting defaults
local ZETTEL_EXTENSION = ".md"
local ZETTEL_LINK_STYLE = "markdown"
local ANCHOR_SEPARATOR = "_"
-- TODO zettel_root = vim.g["zettel_root"] or vim.b["zettel_root"] or "~/documents/notes",
-- TODO zettel_anchor_pattern = regex? -> needs custom creation function in `create_anchor`
-- constricted option sets
local ZETTEL_LINK_STYLE_OPTIONS = {markdown = true, wiki = true}
local function must_contain(set, value, name)
if type(set) ~= "table" then return false end
if not set[value] then
local allvalues = ""
for n, _ in pairs(set) do allvalues = n .. ", " .. allvalues end
error((name or "value") .. " " .. value .. " must be one of " ..
allvalues:sub(1, -3))
end
end
function Opt.zettel()
local options = {}
options.extension =
vim.g["zettel_extension"] or vim.b["zettel_extension"] or
ZETTEL_EXTENSION
options.link_style = vim.g["zettel_link_style"] or
vim.b["zettel_link_style"] or ZETTEL_LINK_STYLE
must_contain(ZETTEL_LINK_STYLE_OPTIONS, options.link_style,
"zettel_link_style")
return options
end
function Opt.anchor()
local options = {}
options.separator = vim.g["zettel_anchor_separator"] or
vim.b["zettel_anchor_separator"] or ANCHOR_SEPARATOR
return options
end
return Opt