From 4d9e54d6d68a5d1a100a4be35485bc517317acf7 Mon Sep 17 00:00:00 2001 From: Jack Koskie <65452167+jackkoskie@users.noreply.github.com> Date: Thu, 13 Jun 2024 18:32:22 -0400 Subject: [PATCH] add obsidian md (to be configured) --- init.lua | 2 + lua/custom/plugins/markdown.lua | 12 ++-- lua/custom/plugins/obsidian.lua | 116 ++++++++++++++++++++++++++++++++ 3 files changed, 124 insertions(+), 6 deletions(-) create mode 100644 lua/custom/plugins/obsidian.lua diff --git a/init.lua b/init.lua index 42b7005b..c1263de1 100644 --- a/init.lua +++ b/init.lua @@ -825,5 +825,7 @@ require('lazy').setup({ }, }) +vim.opt_global.conceallevel = 1 + -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et diff --git a/lua/custom/plugins/markdown.lua b/lua/custom/plugins/markdown.lua index ff861d19..9977ea91 100644 --- a/lua/custom/plugins/markdown.lua +++ b/lua/custom/plugins/markdown.lua @@ -1,8 +1,8 @@ return { - -- 'MeanderingProgrammer/markdown.nvim', - -- name = 'render-markdown', -- Only needed if you have another plugin named markdown.nvim - -- dependencies = { 'nvim-treesitter/nvim-treesitter' }, - -- config = function() - -- require('render-markdown').setup {} - -- end, + 'MeanderingProgrammer/markdown.nvim', + name = 'render-markdown', -- Only needed if you have another plugin named markdown.nvim + dependencies = { 'nvim-treesitter/nvim-treesitter' }, + config = function() + require('render-markdown').setup {} + end, } diff --git a/lua/custom/plugins/obsidian.lua b/lua/custom/plugins/obsidian.lua new file mode 100644 index 00000000..cc69fb93 --- /dev/null +++ b/lua/custom/plugins/obsidian.lua @@ -0,0 +1,116 @@ +return { + 'epwalsh/obsidian.nvim', + version = '*', -- recommended, use latest release instead of latest commit + lazy = true, + ft = 'markdown', + -- Replace the above line with this if you only want to load obsidian.nvim for markdown files in your vault: + -- event = { + -- -- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand'. + -- -- E.g. "BufReadPre " .. vim.fn.expand "~" .. "/my-vault/**.md" + -- "BufReadPre path/to/my-vault/**.md", + -- "BufNewFile path/to/my-vault/**.md", + -- }, + dependencies = { + -- Required. + 'nvim-lua/plenary.nvim', + + -- see below for full list of optional dependencies 👇 + }, + opts = { + workspaces = { + { + name = 'Artemis', + path = '~/Documents/Obsidian/Artemis/', + }, + }, + + completion = { + nvim_cmp = true, + min_chars = 2, + }, + + mappings = { + -- Overrides the 'gf' mapping to work on markdown/wiki links within your vault. + ['gf'] = { + action = function() + return require('obsidian').util.gf_passthrough() + end, + opts = { noremap = false, expr = true, buffer = true }, + }, + -- Toggle check-boxes. + ['ch'] = { + action = function() + return require('obsidian').util.toggle_checkbox() + end, + opts = { buffer = true }, + }, + -- Smart action depending on context, either follow link or toggle checkbox. + [''] = { + action = function() + return require('obsidian').util.smart_action() + end, + opts = { buffer = true, expr = true }, + }, + }, + + new_notes_location = '/', + + preffered_link_style = 'wiki', + + picker = { + -- Set your preferred picker. Can be one of 'telescope.nvim', 'fzf-lua', or 'mini.pick'. + name = 'telescope.nvim', + -- Optional, configure key mappings for the picker. These are the defaults. + -- Not all pickers support all mappings. + mappings = { + -- Create a new note from your query. + new = '', + -- Insert a link to the selected note. + insert_link = '', + }, + }, + + ui = { + enable = false, -- set to false to disable all additional syntax features + update_debounce = 200, -- update delay after a text change (in milliseconds) + max_file_length = 5000, -- disable UI features for files with more than this many lines + -- Define how various check-boxes are displayed + checkboxes = { + -- NOTE: the 'char' value has to be a single character, and the highlight groups are defined below. + [' '] = { char = '󰄱', hl_group = 'ObsidianTodo' }, + ['x'] = { char = '', hl_group = 'ObsidianDone' }, + ['>'] = { char = '', hl_group = 'ObsidianRightArrow' }, + ['~'] = { char = '󰰱', hl_group = 'ObsidianTilde' }, + ['!'] = { char = '', hl_group = 'ObsidianImportant' }, + -- Replace the above with this if you don't have a patched font: + -- [" "] = { char = "☐", hl_group = "ObsidianTodo" }, + -- ["x"] = { char = "✔", hl_group = "ObsidianDone" }, + + -- You can also add more custom ones... + }, + -- Use bullet marks for non-checkbox lists. + bullets = { char = '•', hl_group = 'ObsidianBullet' }, + external_link_icon = { char = '', hl_group = 'ObsidianExtLinkIcon' }, + -- Replace the above with this if you don't have a patched font: + -- external_link_icon = { char = "", hl_group = "ObsidianExtLinkIcon" }, + reference_text = { hl_group = 'ObsidianRefText' }, + highlight_text = { hl_group = 'ObsidianHighlightText' }, + tags = { hl_group = 'ObsidianTag' }, + block_ids = { hl_group = 'ObsidianBlockID' }, + hl_groups = { + -- The options are passed directly to `vim.api.nvim_set_hl()`. See `:help nvim_set_hl`. + ObsidianTodo = { bold = true, fg = '#f78c6c' }, + ObsidianDone = { bold = true, fg = '#89ddff' }, + ObsidianRightArrow = { bold = true, fg = '#f78c6c' }, + ObsidianTilde = { bold = true, fg = '#ff5370' }, + ObsidianImportant = { bold = true, fg = '#d73128' }, + ObsidianBullet = { bold = true, fg = '#89ddff' }, + ObsidianRefText = { underline = true, fg = '#c792ea' }, + ObsidianExtLinkIcon = { fg = '#c792ea' }, + ObsidianTag = { italic = true, fg = '#89ddff' }, + ObsidianBlockID = { italic = true, fg = '#89ddff' }, + ObsidianHighlightText = { bg = '#75662e' }, + }, + }, + }, +}