From 19164d6333f9f84d410ec0fd507ac9af122fa7d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20La=C3=ADn?= Date: Sun, 8 Jun 2025 21:28:17 +0200 Subject: [PATCH] refactor(nvim): obsidian extra --- .../plugins/extras/editor/docs/obsidian.lua | 81 +++++++++++++++---- 1 file changed, 64 insertions(+), 17 deletions(-) diff --git a/.config/nvim/lua/plugins/extras/editor/docs/obsidian.lua b/.config/nvim/lua/plugins/extras/editor/docs/obsidian.lua index dc11cef0..7fb203d4 100644 --- a/.config/nvim/lua/plugins/extras/editor/docs/obsidian.lua +++ b/.config/nvim/lua/plugins/extras/editor/docs/obsidian.lua @@ -7,22 +7,21 @@ return { "obsidian-nvim/obsidian.nvim", -- NOTE: Using a fork from the community ft = "markdown", keys = { - { prefix .. "o", "ObsidianOpen", desc = "Open on App" }, - { prefix .. "g", "ObsidianSearch", desc = "Grep" }, - { "sO", "ObsidianSearch", desc = "Obsidian Grep" }, - { prefix .. "n", "ObsidianNew", desc = "New Note" }, - { prefix .. "", "ObsidianQuickSwitch", desc = "Find Files" }, - { prefix .. "b", "ObsidianBacklinks", desc = "Backlinks" }, - { prefix .. "t", "ObsidianTags", desc = "Tags" }, - { prefix .. "t", "ObsidianTemplate", desc = "Template" }, - { prefix .. "l", "ObsidianLink", mode = "v", desc = "Link" }, - { prefix .. "L", "ObsidianLinks", desc = "Links" }, - { prefix .. "N", "ObsidianLinkNew", mode = "v", desc = "New Link" }, - { prefix .. "e", "ObsidianExtractNote", mode = "v", desc = "Extract Note" }, - { prefix .. "w", "ObsidianWorkspace", desc = "Workspace" }, - { prefix .. "r", "ObsidianRename", desc = "Rename" }, - { prefix .. "i", "ObsidianPasteImg", desc = "Paste Image" }, - { prefix .. "d", "ObsidianDailies", desc = "Daily Notes" }, + { prefix .. "o", "Obsidian open", desc = "Open on App" }, + { prefix .. "g", "Obsidian search", desc = "Grep" }, + { prefix .. "n", "Obsidian new", desc = "New Note" }, + { prefix .. "", "Obsidian quick_switch", desc = "Find Files" }, + { prefix .. "b", "Obsidian backlinks", desc = "Backlinks" }, + { prefix .. "t", "Obsidian tags", desc = "Tags" }, + { prefix .. "t", "Obsidian template", desc = "Template" }, + { prefix .. "L", "Obsidian link", mode = "v", desc = "Link" }, + { prefix .. "l", "Obsidian links", desc = "Links" }, + { prefix .. "l", "Obsidian link_new", mode = "v", desc = "New Link" }, + { prefix .. "e", "Obsidian extract_note", mode = "v", desc = "Extract Note" }, + { prefix .. "w", "Obsidian workspace", desc = "Workspace" }, + { prefix .. "r", "Obsidian rename", desc = "Rename" }, + { prefix .. "i", "Obsidian paste_img", desc = "Paste Image" }, + { prefix .. "d", "Obsidian dailies", desc = "Daily Notes" }, }, opts = { workspaces = { @@ -48,6 +47,18 @@ return { picker = { name = "snacks.pick", + note_mappings = { + -- Create a new note from your query. + new = "", + -- Insert a link to the selected note. + insert_link = "", + }, + tag_mappings = { + -- Add tag(s) to current note. + tag_note = "", + -- Insert a tag at the current location. + insert_tag = "", + }, }, mappings = { @@ -71,12 +82,36 @@ return { }, }, + new_notes_location = "notes_subdir", + templates = { subdir = "00 - Data/Plantillas", date_format = "%Y-%m-%d-%a", time_format = "%H:%M", }, + ---@param spec { id: string, dir: obsidian.Path, title: string|? } + ---@return string|obsidian.Path The full path to the new note. + note_path_func = function(spec) + return spec.title + end, + + note_frontmatter_func = function(note) + if note.title then + note:add_alias(note.title) + end + + local out = { aliases = note.aliases } + + 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, + follow_url_func = function(url) vim.fn.jobstart({ "xdg-open", url }) end, @@ -85,7 +120,12 @@ return { img_folder = "00 - Data/Documentos", }, - ui = { enable = false }, + ui = { enable = true }, + + statusline = { + enabled = true, + format = "{{backlinks}} backlinks | {{words}} words", + }, }, }, { @@ -96,4 +136,11 @@ return { }, }, }, + { + "nvim-lualine/lualine.nvim", + optional = true, + opts = function(_, opts) + table.insert(opts.sections.lualine_x, 1, "g:obsidian") + end, + }, }