local function handle_enter() local util = require("obsidian.util") if util.cursor_on_markdown_link(nil, nil, true) then vim.cmd("ObsidianFollowLink") else local line = vim.api.nvim_get_current_line() if string.match(line, "^%s*- %[[x ]%].*") then util.toggle_checkbox() else vim.cmd("normal! viw:'<,'>ObsidianLink") end end end return { "epwalsh/obsidian.nvim", version = "*", -- recommended, use latest release instead of latest commit lazy = false, dependencies = { "nvim-lua/plenary.nvim" }, config = function(_, opts) local notes_path = (os.getenv "HOME") .. "/Workspace/Notes" local scan = require("plenary.scandir").scan_dir(notes_path, {add_dirs = true, depth = 1 }) for _, v in ipairs(scan) do local subdir = v:match("([^/]+)$") if vim.fn.isdirectory(notes_path .. "/" .. subdir .. "/.obsidian") == 1 then table.insert(opts.workspaces, { name = subdir, path = notes_path .. "/" .. subdir, overrides = { daily_notes = { folder = "Daily", }, }, }) end end require("obsidian").setup(opts) end, opts = { workspaces = {}, note_id_func = function(title) return title end, daily_notes = { folder = "." }, disable_frontmatter = true, ui = { hl_groups = { ObsidianRefText = { fg = "#61afef" }, } } }, keys = { {"<cr>", handle_enter, ft = "markdown" }, {"<cr>", "<cmd>ObsidianLink<cr>", ft = "markdown", mode = "v"}, {"<leader>rn", "<cmd>ObsidianRename<cr>", ft = "markdown" }, {"<leader>l", "i- [ ] ", ft = "markdown"}, {"<leader>o", "o- [ ] ", ft = "markdown"}, {"<leader>l", "- [ ] ", ft = "markdown", mode = "i" }, {"<leader>jt", "<cmd>ObsidianToday<cr>"}, {"<leader>jy", "<cmd>ObsidianYesterday<cr>"}, {"<leader>ju", "<cmd>ObsidianTomorrow<cr>"}, {"<tab>", ":set nohlsearch<cr>/\\[[^\\[\\]]*\\]([^()]*)<cr>:let @/ = \"\"<cr>:set hlsearch<cr>", ft = "markdown", silent = true }, }, }