Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(obsidian-nvim): added obsidian.nvim config and changed the readme #378

Merged
merged 9 commits into from
Jul 9, 2023
13 changes: 13 additions & 0 deletions lua/astrocommunity/note-taking/obsidian-nvim/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,16 @@ Neovim plugin for Obsidian, written in Lua
**Repository:** <https://github.com/epwalsh/obsidian.nvim>

A Neovim plugin for writing and navigating an [Obsidian](https://obsidian.md) vault, written in Lua.

This config assumes the vault location is at `~/obsidian-vault`. You can move the vault there. If you instead want to change the location in the config, you can create a new file `plugins/obsidian.lua`, copy the contents of this `init.lua` to it, and then edit the 2 following lines

`event = { "BufReadPre */obsidian-vault/*.md" },`

and

`dir = "~/obsidian-vault",`

to match your vault location.


The plugin may also nag and ask you to create a `templates` directory in the vault. You can use `mkdir templates` to create an empty directory.
134 changes: 121 additions & 13 deletions lua/astrocommunity/note-taking/obsidian-nvim/init.lua
Original file line number Diff line number Diff line change
@@ -1,17 +1,125 @@
return {
"epwalsh/obsidian.nvim",
cmd = {
"ObsdianBacklinks",
"ObsidianToday",
"ObsidianYesterday",
"ObsidianOpen",
"ObsidianNew",
"ObsidianSearch",
"ObsidianQuickSwitch",
"ObsidianLink",
"ObsidianLinkNew",
"ObsidianFollowLink",
"ObsidianTemplate",
lazy = true,
-- the obsidian vault in this default config ~/obsidian-vault
event = { "BufReadPre */obsidian-vault/*.md" },
-- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand':
-- event = { "bufreadpre " .. vim.fn.expand "~" .. "/my-vault/**.md" },
dependencies = {
-- Required.
"nvim-lua/plenary.nvim",

-- Optional, for completion.
"hrsh7th/nvim-cmp",

-- Optional, for search and quick-switch functionality.
"nvim-telescope/telescope.nvim",

-- Optional, an alternative to telescope for search and quick-switch functionality.
-- "ibhagwan/fzf-lua"

-- Optional, another alternative to telescope for search and quick-switch functionality.
-- "junegunn/fzf",
-- "junegunn/fzf.vim"

-- Optional, alternative to nvim-treesitter for syntax highlighting.
-- "godlygeek/tabular",
-- "preservim/vim-markdown",
},
opts = { completion = { nvim_cmp = true } },
opts = {
dir = "~/obsidian-vault", -- specify the vault location. no need to call 'vim.fn.expand' here
owittek marked this conversation as resolved.
Show resolved Hide resolved

-- -- Optional, if you keep notes in a specific subdirectory of your vault.
-- notes_subdir = "notes",
--
-- daily_notes = {
-- -- Optional, if you keep daily notes in a separate directory.
-- folder = "notes/dailies",
-- -- Optional, if you want to change the date format for daily notes.
-- date_format = "%Y-%m-%d"
-- },

-- Optional, completion.
completion = {
nvim_cmp = true, -- if using nvim-cmp, otherwise set to false
},

-- -- Optional, customize how names/IDs for new notes are created.
-- note_id_func = 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 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,

-- Optional, set to true if you don't want Obsidian to manage frontmatter.
disable_frontmatter = false,

-- Optional, alternatively you can customize the frontmatter data.
note_frontmatter_func = 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 require("obsidian").util.table_length(note.metadata) > 0 then
for k, v in pairs(note.metadata) do
out[k] = v
end
end
return out
end,

-- Optional, for templates (see below).
templates = {
subdir = "templates",
date_format = "%Y-%m-%d-%a",
time_format = "%H:%M",
},

-- Optional, by default when you use `:ObsidianFollowLink` on a link to an external
-- URL it will be ignored but you can customize this behavior here.
follow_url_func = 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,

-- Optional, set to true if you use the Obsidian Advanced URI plugin.
-- https://github.com/Vinzent03/obsidian-advanced-uri
use_advanced_uri = true,

-- Optional, set to true to force ':ObsidianOpen' to bring the app to the foreground.
open_app_foreground = false,

-- Optional, by default commands like `:ObsidianSearch` will attempt to use
-- telescope.nvim, fzf-lua, and fzf.nvim (in that order), and use the
-- first one they find. By setting this option to your preferred
-- finder you can attempt it first. Note that if the specified finder
-- is not installed, or if it the command does not support it, the
-- remaining finders will be attempted in the original order.
finder = "telescope.nvim",
},
config = function(_, opts)
require("obsidian").setup(opts)

-- Optional, override the 'gf' keymap to utilize Obsidian's search functionality.
-- see also: 'follow_url_func' config option above.
vim.keymap.set("n", "gf", function()
if require("obsidian").util.cursor_on_markdown_link() then
return "<cmd>ObsidianFollowLink<CR>"
else
return "gf"
end
end, { noremap = false, expr = true })
end,
}