mirror of
https://github.com/nix-community/nixvim.git
synced 2025-11-09 03:56:05 +01:00
plugins/obsidian: drop settings options declarations
This commit is contained in:
parent
1c3c90e85c
commit
a830246ed9
2 changed files with 3 additions and 636 deletions
|
|
@ -1,65 +1,14 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
helpers,
|
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib;
|
|
||||||
lib.nixvim.plugins.mkNeovimPlugin {
|
lib.nixvim.plugins.mkNeovimPlugin {
|
||||||
name = "obsidian";
|
name = "obsidian";
|
||||||
package = "obsidian-nvim";
|
package = "obsidian-nvim";
|
||||||
description = "Neovim plugin for writing and navigating Obsidian vaults.";
|
description = "Neovim plugin for writing and navigating Obsidian vaults.";
|
||||||
|
|
||||||
maintainers = [ maintainers.GaetanLepage ];
|
maintainers = [ lib.maintainers.GaetanLepage ];
|
||||||
|
|
||||||
settingsOptions =
|
|
||||||
let
|
|
||||||
opts = import ./settings-options.nix { inherit lib; };
|
|
||||||
in
|
|
||||||
{
|
|
||||||
dir = helpers.mkNullOrOption types.str ''
|
|
||||||
Alternatively to `workspaces` - and for backwards compatibility - you can set `dir` to a
|
|
||||||
single path instead of `workspaces`.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
```nix
|
|
||||||
dir = "~/vaults/work";
|
|
||||||
```
|
|
||||||
'';
|
|
||||||
|
|
||||||
workspaces =
|
|
||||||
helpers.defaultNullOpts.mkNullable
|
|
||||||
(
|
|
||||||
with types;
|
|
||||||
listOf (
|
|
||||||
types.submodule {
|
|
||||||
options = {
|
|
||||||
name = mkOption {
|
|
||||||
type = with lib.types; maybeRaw str;
|
|
||||||
description = "The name for this workspace";
|
|
||||||
};
|
|
||||||
|
|
||||||
path = mkOption {
|
|
||||||
type = with lib.types; maybeRaw str;
|
|
||||||
description = "The path of the workspace.";
|
|
||||||
};
|
|
||||||
|
|
||||||
overrides = opts;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
|
||||||
[ ]
|
|
||||||
''
|
|
||||||
A list of vault names and paths.
|
|
||||||
Each path should be the path to the vault root.
|
|
||||||
If you use the Obsidian app, the vault root is the parent directory of the `.obsidian`
|
|
||||||
folder.
|
|
||||||
You can also provide configuration overrides for each workspace through the `overrides`
|
|
||||||
field.
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
// opts;
|
|
||||||
|
|
||||||
settingsExample = {
|
settingsExample = {
|
||||||
workspaces = [
|
workspaces = [
|
||||||
|
|
@ -82,14 +31,14 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
||||||
extraConfig = cfg: {
|
extraConfig = cfg: {
|
||||||
warnings = lib.nixvim.mkWarnings "plugins.obsidian" [
|
warnings = lib.nixvim.mkWarnings "plugins.obsidian" [
|
||||||
{
|
{
|
||||||
when = (cfg.settings.completion.nvim_cmp == true) && (!config.plugins.cmp.enable);
|
when = ((cfg.settings.completion.nvim_cmp or false) == true) && (!config.plugins.cmp.enable);
|
||||||
message = ''
|
message = ''
|
||||||
You have enabled `completion.nvim_cmp` but `plugins.cmp.enable` is `false`.
|
You have enabled `completion.nvim_cmp` but `plugins.cmp.enable` is `false`.
|
||||||
You should probably enable `nvim-cmp`.
|
You should probably enable `nvim-cmp`.
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
when = (cfg.settings.completion.blink == true) && (!config.plugins.blink-cmp.enable);
|
when = ((cfg.settings.completion.blink or false) == true) && (!config.plugins.blink-cmp.enable);
|
||||||
message = ''
|
message = ''
|
||||||
You have enabled `completion.blink` but `plugins.blink-cmp.enable` is `false`.
|
You have enabled `completion.blink` but `plugins.blink-cmp.enable` is `false`.
|
||||||
You should probably enable `blink-cmp`.
|
You should probably enable `blink-cmp`.
|
||||||
|
|
|
||||||
|
|
@ -1,582 +0,0 @@
|
||||||
{ lib }:
|
|
||||||
let
|
|
||||||
inherit (lib) types;
|
|
||||||
inherit (lib.nixvim) defaultNullOpts;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# https://github.com/epwalsh/obsidian.nvim/blob/main/lua/obsidian/config.lua
|
|
||||||
|
|
||||||
log_level = defaultNullOpts.mkLogLevel "info" ''
|
|
||||||
Set the log level for obsidian.nvim.
|
|
||||||
'';
|
|
||||||
|
|
||||||
notes_subdir = lib.nixvim.mkNullOrStr ''
|
|
||||||
If you keep notes in a specific subdirectory of your vault.
|
|
||||||
'';
|
|
||||||
|
|
||||||
templates = {
|
|
||||||
subdir = lib.nixvim.mkNullOrStr ''
|
|
||||||
The name of the directory where templates are stored.
|
|
||||||
|
|
||||||
Example: "templates"
|
|
||||||
'';
|
|
||||||
|
|
||||||
date_format = lib.nixvim.mkNullOrStr ''
|
|
||||||
Which date format to use.
|
|
||||||
|
|
||||||
Example: "%Y-%m-%d"
|
|
||||||
'';
|
|
||||||
|
|
||||||
time_format = lib.nixvim.mkNullOrStr ''
|
|
||||||
Which time format to use.
|
|
||||||
|
|
||||||
Example: "%H:%M"
|
|
||||||
'';
|
|
||||||
|
|
||||||
substitutions = defaultNullOpts.mkAttrsOf (
|
|
||||||
with lib.types; either str rawLua
|
|
||||||
) { } "A map for custom variables, the key should be the variable and the value a function.";
|
|
||||||
};
|
|
||||||
|
|
||||||
new_notes_location =
|
|
||||||
defaultNullOpts.mkEnumFirstDefault
|
|
||||||
[
|
|
||||||
"current_dir"
|
|
||||||
"notes_subdir"
|
|
||||||
]
|
|
||||||
''
|
|
||||||
Where to put new notes created from completion.
|
|
||||||
|
|
||||||
Valid options are
|
|
||||||
- "current_dir" - put new notes in same directory as the current buffer.
|
|
||||||
- "notes_subdir" - put new notes in the default notes subdirectory.
|
|
||||||
'';
|
|
||||||
|
|
||||||
note_id_func = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
Customize how names/IDs for new notes are created.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```lua
|
|
||||||
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
|
|
||||||
```
|
|
||||||
'';
|
|
||||||
|
|
||||||
note_path_func = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
Customize how note file names are generated given the ID, target directory, and title.
|
|
||||||
|
|
||||||
```lua
|
|
||||||
---@param spec { id: string, dir: obsidian.Path, title: string|? }
|
|
||||||
---@return string|obsidian.Path The full path to the new note.
|
|
||||||
```
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```lua
|
|
||||||
function(spec)
|
|
||||||
-- This is equivalent to the default behavior.
|
|
||||||
local path = spec.dir / tostring(spec.id)
|
|
||||||
return path:with_suffix(".md")
|
|
||||||
end
|
|
||||||
```
|
|
||||||
'';
|
|
||||||
|
|
||||||
wiki_link_func = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
Customize how wiki links are formatted.
|
|
||||||
|
|
||||||
```lua
|
|
||||||
---@param opts {path: string, label: string, id: string|?}
|
|
||||||
---@return string
|
|
||||||
```
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```lua
|
|
||||||
function(opts)
|
|
||||||
if opts.id == nil then
|
|
||||||
return string.format("[[%s]]", opts.label)
|
|
||||||
elseif opts.label ~= opts.id then
|
|
||||||
return string.format("[[%s|%s]]", opts.id, opts.label)
|
|
||||||
else
|
|
||||||
return string.format("[[%s]]", opts.id)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
Default: See source
|
|
||||||
'';
|
|
||||||
|
|
||||||
markdown_link_func = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
Customize how markdown links are formatted.
|
|
||||||
|
|
||||||
```lua
|
|
||||||
---@param opts {path: string, label: string, id: string|?}
|
|
||||||
---@return string links are formatted.
|
|
||||||
```
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```lua
|
|
||||||
function(opts)
|
|
||||||
return string.format("[%s](%s)", opts.label, opts.path)
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
Default: See source
|
|
||||||
'';
|
|
||||||
|
|
||||||
preferred_link_style =
|
|
||||||
defaultNullOpts.mkEnumFirstDefault
|
|
||||||
[
|
|
||||||
"wiki"
|
|
||||||
"markdown"
|
|
||||||
]
|
|
||||||
''
|
|
||||||
Either 'wiki' or 'markdown'.
|
|
||||||
'';
|
|
||||||
|
|
||||||
follow_url_func = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
By default when you use `:ObsidianFollowLink` on a link to an external URL it will be
|
|
||||||
ignored but you can customize this behavior here.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```lua
|
|
||||||
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
|
|
||||||
```
|
|
||||||
'';
|
|
||||||
|
|
||||||
image_name_func = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
Customize the default name or prefix when pasting images via `:ObsidianPasteImg`.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```lua
|
|
||||||
function()
|
|
||||||
-- Prefix image names with timestamp.
|
|
||||||
return string.format("%s-", os.time())
|
|
||||||
end
|
|
||||||
```
|
|
||||||
'';
|
|
||||||
|
|
||||||
note_frontmatter_func = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
You can customize the frontmatter data.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
```lua
|
|
||||||
function(note)
|
|
||||||
-- Add the title of the note as an alias.
|
|
||||||
if note.title then
|
|
||||||
note:add_alias(note.title)
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
|
||||||
```
|
|
||||||
'';
|
|
||||||
|
|
||||||
disable_frontmatter = lib.nixvim.mkNullOrStrLuaFnOr types.bool ''
|
|
||||||
Boolean or a function that takes a filename and returns a boolean.
|
|
||||||
`true` indicates that you don't want obsidian.nvim to manage frontmatter.
|
|
||||||
|
|
||||||
Default: `false`
|
|
||||||
'';
|
|
||||||
|
|
||||||
completion = {
|
|
||||||
# FIXME should this accept raw types?
|
|
||||||
nvim_cmp = lib.nixvim.mkNullOrOption' {
|
|
||||||
type = types.bool;
|
|
||||||
description = ''
|
|
||||||
Set to false to disable completion.
|
|
||||||
'';
|
|
||||||
defaultText = lib.literalMD "`true` if `plugins.cmp.enable` is enabled (otherwise `null`).";
|
|
||||||
};
|
|
||||||
|
|
||||||
blink = defaultNullOpts.mkBool false ''
|
|
||||||
Enable completion using blink.cmp.
|
|
||||||
'';
|
|
||||||
|
|
||||||
min_chars = defaultNullOpts.mkUnsignedInt 2 ''
|
|
||||||
Trigger completion at this many chars.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
mappings =
|
|
||||||
defaultNullOpts.mkNullable
|
|
||||||
(types.attrsOf (
|
|
||||||
types.submodule {
|
|
||||||
options = {
|
|
||||||
action = lib.mkOption {
|
|
||||||
type = lib.types.strLua;
|
|
||||||
description = "The lua code for this keymap action.";
|
|
||||||
};
|
|
||||||
opts = lib.nixvim.keymaps.mapConfigOptions // {
|
|
||||||
buffer = defaultNullOpts.mkBool false ''
|
|
||||||
If true, the mapping will be effective in the current buffer only.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
))
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
''
|
|
||||||
Configure key mappings.
|
|
||||||
'';
|
|
||||||
|
|
||||||
picker = {
|
|
||||||
name =
|
|
||||||
lib.nixvim.mkNullOrOption
|
|
||||||
(types.enum [
|
|
||||||
"telescope.nvim"
|
|
||||||
"fzf-lua"
|
|
||||||
"mini.pick"
|
|
||||||
"snacks.pick"
|
|
||||||
])
|
|
||||||
''
|
|
||||||
Set your preferred picker.
|
|
||||||
'';
|
|
||||||
|
|
||||||
note_mappings =
|
|
||||||
defaultNullOpts.mkAttrsOf types.str
|
|
||||||
{
|
|
||||||
new = "<C-x>";
|
|
||||||
insert_link = "<C-l>";
|
|
||||||
}
|
|
||||||
''
|
|
||||||
Optional, configure note mappings for the picker. These are the defaults.
|
|
||||||
Not all pickers support all mappings.
|
|
||||||
'';
|
|
||||||
|
|
||||||
tag_mappings =
|
|
||||||
defaultNullOpts.mkAttrsOf types.str
|
|
||||||
{
|
|
||||||
tag_note = "<C-x>";
|
|
||||||
insert_tag = "<C-l>";
|
|
||||||
}
|
|
||||||
''
|
|
||||||
Optional, configure tag mappings for the picker. These are the defaults.
|
|
||||||
Not all pickers support all mappings.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
daily_notes = {
|
|
||||||
folder = lib.nixvim.mkNullOrStr ''
|
|
||||||
Optional, if you keep daily notes in a separate directory.
|
|
||||||
'';
|
|
||||||
|
|
||||||
date_format = lib.nixvim.mkNullOrStr ''
|
|
||||||
Optional, if you want to change the date format for the ID of daily notes.
|
|
||||||
|
|
||||||
Example: "%Y-%m-%d"
|
|
||||||
'';
|
|
||||||
|
|
||||||
alias_format = lib.nixvim.mkNullOrStr ''
|
|
||||||
Optional, if you want to change the date format of the default alias of daily notes.
|
|
||||||
|
|
||||||
Example: "%B %-d, %Y"
|
|
||||||
'';
|
|
||||||
|
|
||||||
template = lib.nixvim.mkNullOrStr ''
|
|
||||||
Optional, if you want to automatically insert a template from your template directory like
|
|
||||||
'daily.md'.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
use_advanced_uri = defaultNullOpts.mkBool false ''
|
|
||||||
Set to true to force ':ObsidianOpen' to bring the app to the foreground.
|
|
||||||
'';
|
|
||||||
|
|
||||||
open_app_foreground = defaultNullOpts.mkBool false ''
|
|
||||||
Set to true to force `:ObsidianOpen` to bring the app to the foreground.
|
|
||||||
'';
|
|
||||||
|
|
||||||
sort_by =
|
|
||||||
defaultNullOpts.mkEnum
|
|
||||||
[
|
|
||||||
"path"
|
|
||||||
"modified"
|
|
||||||
"accessed"
|
|
||||||
"created"
|
|
||||||
]
|
|
||||||
"modified"
|
|
||||||
''
|
|
||||||
Sort search results by "path", "modified", "accessed", or "created".
|
|
||||||
The recommend value is "modified" and `true` for `sortReversed`, which means, for example,
|
|
||||||
that `:ObsidianQuickSwitch` will show the notes sorted by latest modified time.
|
|
||||||
'';
|
|
||||||
|
|
||||||
sort_reversed = defaultNullOpts.mkBool true ''
|
|
||||||
Whether search results should be reversed.
|
|
||||||
'';
|
|
||||||
|
|
||||||
open_notes_in =
|
|
||||||
defaultNullOpts.mkEnumFirstDefault
|
|
||||||
[
|
|
||||||
"current"
|
|
||||||
"vsplit"
|
|
||||||
"hsplit"
|
|
||||||
]
|
|
||||||
''
|
|
||||||
Determines how certain commands open notes.
|
|
||||||
|
|
||||||
The valid options are:
|
|
||||||
- "current" (the default) - to always open in the current window
|
|
||||||
- "vsplit" - to open in a vertical split if there's not already a vertical split
|
|
||||||
- "hsplit" - to open in a horizontal split if there's not already a horizontal split
|
|
||||||
'';
|
|
||||||
|
|
||||||
ui = {
|
|
||||||
enable = defaultNullOpts.mkBool true ''
|
|
||||||
Set to false to disable all additional syntax features.
|
|
||||||
'';
|
|
||||||
|
|
||||||
update_debounce = defaultNullOpts.mkUnsignedInt 200 ''
|
|
||||||
Update delay after a text change (in milliseconds).
|
|
||||||
'';
|
|
||||||
|
|
||||||
checkboxes =
|
|
||||||
defaultNullOpts.mkAttrsOf
|
|
||||||
(
|
|
||||||
with types;
|
|
||||||
submodule {
|
|
||||||
options = {
|
|
||||||
char = lib.mkOption {
|
|
||||||
type = with lib.types; maybeRaw str;
|
|
||||||
description = "The character to use for this checkbox.";
|
|
||||||
};
|
|
||||||
|
|
||||||
hl_group = lib.mkOption {
|
|
||||||
type = with lib.types; maybeRaw str;
|
|
||||||
description = "The name of the highlight group to use for this checkbox.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)
|
|
||||||
{
|
|
||||||
" " = {
|
|
||||||
char = "";
|
|
||||||
hl_group = "ObsidianTodo";
|
|
||||||
};
|
|
||||||
"x" = {
|
|
||||||
char = "";
|
|
||||||
hl_group = "ObsidianDone";
|
|
||||||
};
|
|
||||||
">" = {
|
|
||||||
char = "";
|
|
||||||
hl_group = "ObsidianRightArrow";
|
|
||||||
};
|
|
||||||
"~" = {
|
|
||||||
char = "";
|
|
||||||
hl_group = "ObsidianTilde";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
''
|
|
||||||
Define how various check-boxes are displayed.
|
|
||||||
You can also add more custom ones...
|
|
||||||
|
|
||||||
NOTE: the 'char' value has to be a single character, and the highlight groups are defined
|
|
||||||
in the `ui.hl_groups` option.
|
|
||||||
'';
|
|
||||||
|
|
||||||
bullets = {
|
|
||||||
char = defaultNullOpts.mkStr "•" ''
|
|
||||||
Which character to use for the bullets.
|
|
||||||
'';
|
|
||||||
|
|
||||||
hl_group = defaultNullOpts.mkStr "ObsidianBullet" ''
|
|
||||||
The name of the highlight group to use for the bullets.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
external_link_icon = {
|
|
||||||
char = defaultNullOpts.mkStr "" ''
|
|
||||||
Which character to use for the external link icon.
|
|
||||||
'';
|
|
||||||
|
|
||||||
hl_group = defaultNullOpts.mkStr "ObsidianExtLinkIcon" ''
|
|
||||||
The name of the highlight group to use for the external link icon.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
reference_text = {
|
|
||||||
hl_group = defaultNullOpts.mkStr "ObsidianRefText" ''
|
|
||||||
The name of the highlight group to use for reference text.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
highlight_text = {
|
|
||||||
hl_group = defaultNullOpts.mkStr "ObsidianHighlightText" ''
|
|
||||||
The name of the highlight group to use for highlight text.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
tags = {
|
|
||||||
hl_group = defaultNullOpts.mkStr "ObsidianTag" ''
|
|
||||||
The name of the highlight group to use for tags.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
hl_groups = defaultNullOpts.mkAttrsOf lib.types.highlight {
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
} "Highlight group definitions.";
|
|
||||||
};
|
|
||||||
|
|
||||||
attachments = {
|
|
||||||
img_folder = defaultNullOpts.mkStr "assets/imgs" ''
|
|
||||||
The default folder to place images in via `:ObsidianPasteImg`.
|
|
||||||
|
|
||||||
If this is a relative path it will be interpreted as relative to the vault root.
|
|
||||||
You can always override this per image by passing a full path to the command instead of just
|
|
||||||
a filename.
|
|
||||||
'';
|
|
||||||
|
|
||||||
img_text_func =
|
|
||||||
defaultNullOpts.mkLuaFn
|
|
||||||
''
|
|
||||||
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
|
|
||||||
''
|
|
||||||
''
|
|
||||||
A function that determines the text to insert in the note when pasting an image.
|
|
||||||
It takes two arguments, the `obsidian.Client` and a plenary `Path` to the image file.
|
|
||||||
|
|
||||||
```lua
|
|
||||||
@param client obsidian.Client
|
|
||||||
@param path Path the absolute path to the image file
|
|
||||||
@return string
|
|
||||||
```
|
|
||||||
'';
|
|
||||||
|
|
||||||
confirm_img_paste = defaultNullOpts.mkBool true ''
|
|
||||||
Whether to prompt for confirmation when pasting an image.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
callbacks = {
|
|
||||||
post_setup = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
`fun(client: obsidian.Client)`
|
|
||||||
|
|
||||||
Runs right after the `obsidian.Client` is initialized.
|
|
||||||
'';
|
|
||||||
|
|
||||||
enter_note = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
`fun(client: obsidian.Client, note: obsidian.Note)`
|
|
||||||
|
|
||||||
Runs when entering a note buffer.
|
|
||||||
'';
|
|
||||||
|
|
||||||
leave_note = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
`fun(client: obsidian.Client, note: obsidian.Note)`
|
|
||||||
|
|
||||||
Runs when leaving a note buffer.
|
|
||||||
'';
|
|
||||||
|
|
||||||
pre_write_note = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
`fun(client: obsidian.Client, note: obsidian.Note)`
|
|
||||||
|
|
||||||
Runs right before writing a note buffer.
|
|
||||||
'';
|
|
||||||
|
|
||||||
post_set_workspace = lib.nixvim.mkNullOrLuaFn ''
|
|
||||||
`fun(client: obsidian.Client, workspace: obsidian.Workspace)`
|
|
||||||
|
|
||||||
Runs anytime the workspace is set/changed.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
yaml_parser =
|
|
||||||
defaultNullOpts.mkEnumFirstDefault
|
|
||||||
[
|
|
||||||
"native"
|
|
||||||
"yq"
|
|
||||||
]
|
|
||||||
''
|
|
||||||
Set the YAML parser to use.
|
|
||||||
|
|
||||||
The valid options are:
|
|
||||||
- "native" - uses a pure Lua parser that's fast but potentially misses some edge cases.
|
|
||||||
- "yq" - uses the command-line tool yq (https://github.com/mikefarah/yq), which is more robust
|
|
||||||
but much slower and needs to be installed separately.
|
|
||||||
|
|
||||||
In general you should be using the native parser unless you run into a bug with it, in which
|
|
||||||
case you can temporarily switch to the "yq" parser until the bug is fixed.
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue