mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-23 17:28:39 +02:00
plugins/obsidian: init
This commit is contained in:
parent
a40a0c679c
commit
bd6a6776dd
3 changed files with 825 additions and 0 deletions
207
tests/test-sources/plugins/utils/obsidian.nix
Normal file
207
tests/test-sources/plugins/utils/obsidian.nix
Normal file
|
@ -0,0 +1,207 @@
|
|||
{
|
||||
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("", display_name, link_path)
|
||||
end
|
||||
'';
|
||||
};
|
||||
yamlParser = "native";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue