nix-community.nixvim/tests/test-sources/plugins/utils/obsidian.nix

208 lines
6 KiB
Nix
Raw Normal View History

2023-12-30 20:49:19 +01:00
{
empty = {
plugins.obsidian.enable = true;
};
example = {
plugins = {
nvim-cmp.enable = true;
obsidian = {
enable = true;
dir = null;
workspaces = [
{
name = "personal";
path = "~/vaults/personal";
}
{
name = "work";
path = "~/vaults/work";
overrides = {
notesSubdir = "notes";
};
}
];
detectCwd = false;
logLevel = "info";
notesSubdir = "notes";
templates = {
# We cannot set this as it doesn't exist in the testing environment
# subdir = "templates";
dateFormat = "%Y-%m-%d";
timeFormat = "%H:%M";
substitutions = {};
};
noteIdFunc = ''
function(title)
-- Create note IDs in a Zettelkasten format with a timestamp and a suffix.
-- In this case a note with the title 'My new note' will be given an ID that looks
-- like '1657296016-my-new-note', and therefore the file name '1657296016-my-new-note.md'
local suffix = ""
if title ~= nil then
-- If title is given, transform it into valid file name.
suffix = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower()
else
-- If title is nil, just add 4 random uppercase letters to the suffix.
for _ = 1, 4 do
suffix = suffix .. string.char(math.random(65, 90))
end
end
return tostring(os.time()) .. "-" .. suffix
end
'';
followUrlFunc = ''
function(url)
-- Open the URL in the default web browser.
vim.fn.jobstart({"open", url}) -- Mac OS
-- vim.fn.jobstart({"xdg-open", url}) -- linux
end
'';
noteFrontmatterFunc = ''
function(note)
-- This is equivalent to the default frontmatter function.
local out = { id = note.id, aliases = note.aliases, tags = note.tags }
-- `note.metadata` contains any manually added fields in the frontmatter.
-- So here we just make sure those fields are kept in the frontmatter.
if note.metadata ~= nil and not vim.tbl_isempty(note.metadata) then
for k, v in pairs(note.metadata) do
out[k] = v
end
end
return out
end
'';
disableFrontmatter = false;
backlinks = {
height = 10;
wrap = true;
};
completion = {
nvimCmp = true;
minChars = 2;
newNotesLocation = "current_dir";
prependNoteId = true;
prependNotePath = false;
usePathOnly = false;
};
mappings = {
gf = {
action = "require('obsidian').util.gf_passthrough";
opts = {
noremap = false;
expr = true;
buffer = true;
};
};
"<leader>ch" = {
action = "require('obsidian').util.toggle_checkbox";
opts.buffer = true;
};
};
dailyNotes = {
folder = "notes";
dateFormat = "%Y-%m-%d";
aliasFormat = "%B %-d, %Y";
template = "daily.md";
};
useAdvancedUri = false;
openAppForeground = false;
finder = "telescope.nvim";
sortBy = "modified";
sortReversed = true;
openNotesIn = "current";
ui = {
enable = true;
updateDebounce = 200;
checkboxes = {
" " = {
char = "󰄱";
hlGroup = "ObsidianTodo";
};
"x" = {
char = "";
hlGroup = "ObsidianDone";
};
">" = {
char = "";
hlGroup = "ObsidianRightArrow";
};
"~" = {
char = "󰰱";
hlGroup = "ObsidianTilde";
};
};
externalLinkIcon = {
char = "";
hlGroup = "ObsidianExtLinkIcon";
};
referenceText = {
hlGroup = "ObsidianRefText";
};
highlightText = {
hlGroup = "ObsidianHighlightText";
};
tags = {
hlGroup = "ObsidianTag";
};
hlGroups = {
ObsidianTodo = {
bold = true;
fg = "#f78c6c";
};
ObsidianDone = {
bold = true;
fg = "#89ddff";
};
ObsidianRightArrow = {
bold = true;
fg = "#f78c6c";
};
ObsidianTilde = {
bold = true;
fg = "#ff5370";
};
ObsidianRefText = {
underline = true;
fg = "#c792ea";
};
ObsidianExtLinkIcon = {
fg = "#c792ea";
};
ObsidianTag = {
italic = true;
fg = "#89ddff";
};
ObsidianHighlightText = {
bg = "#75662e";
};
};
};
attachments = {
imgFolder = "assets/imgs";
imgTextFunc = ''
function(client, path)
---@type string
local link_path
local vault_relative_path = client:vault_relative_path(path)
if vault_relative_path ~= nil then
-- Use relative path if the image is saved in the vault dir.
link_path = vault_relative_path
else
-- Otherwise use the absolute path.
link_path = tostring(path)
end
local display_name = vim.fs.basename(link_path)
return string.format("![%s](%s)", display_name, link_path)
end
'';
};
yamlParser = "native";
};
};
};
}