All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning with respect to the public API, which currently includes the installation steps, dependencies, configuration, keymappings, commands, and other plugin functionality. At the moment this does not include the Lua Client API, although in the future it will once that API stabilizes.
- Added
opts.follow_img_funcoption for customizing how to handle image paths. - Added better handling for undefined template fields, which will now be prompted for.
- Renamed
opts.image_name_functoopts.attachments.img_name_func.
- Fixed an edge case with collecting backlinks.
- Fixed typo in
ObsidianPasteImg's command description - Fixed the case when
opts.attachmentsisnil.
v3.9.0 - 2024-07-11
- Added
:ObsidianTOCcommand for loading the table of contents of the current note into a picker list. - Added
:ObsidianNewFromTemplatecommand. This command creates a new note from a template.
- Fixed bug where
opts.search_max_lineswas not propagated through some client methods.
v3.8.1 - 2024-06-26
- Removed duplicate suggestions in completion of references.
v3.8.0 - 2024-06-21
- Added relative to root markdown links as search pattern for backlinks.
- Added configuration option
daily_notes.default_tagsfor customizing (or removing) the default tags given to new daily notes.
- Searching for notes by file name is case insensitive.
v3.7.14 - 2024-06-04
- Added config option
ui.max_file_lengthto disable the UI for files with more than this many lines. Defaults to 5000. - Added config option
search_max_lines(defaults to 1000) for controlling the max number of lines read from disk from note files during certain searches. - Added FreeBSD support to
ObsidianPasteImgcommand.
- Optimization: only show completions for blocks/anchors when prompted with
#.
v3.7.13 - 2024-05-31
- Made workspace detection more robust.
- Fixed regression where frontmatter is updated in template files.
- Fixed finding backlinks with URL-encoded path references.
- Fixed using templates with frontmatter when
disable_frontmatteris set to true. Previously the frontmatter would be removed when the template was inserted, now it will be kept unchanged. - Add compatibility for NVIM 0.11.
- Fixed warnings when renaming a note using dry-run.
- Fixed handling check boxes with characters that have a special meaning in regular expressions (e.g. "?").
Client:create_note()will always ensure the parent directory exists, even when not writing the note itself to disk, to avoid downstream issues (see #600).- Identify
mailto:links as URLs.
v3.7.12 - 2024-05-02
- Renamed config field
templates.subdirtotemplates.folder(subdirstill supported for backwards compat). - You can now use a templates folder outside of your vault.
v3.7.11 - 2024-04-30
- Added an optional line number argument for
util.toggle_checkbox(), that defaults to the current line.
- Ensure toggle checkbox mapping uses checkbox configuration.
- Don't use last visual selection when in normal mode with
:ObsidianTags. - Fixed a normalization issue with windows paths.
v3.7.10 - 2024-04-19
- Fixed bug with OS detection introduced by 6ffd1964500d24c1adde3c88705b146d9c415207.
v3.7.9 - 2024-04-18
- Fixed an issue where template insertion occurred below the intended line, it now correctly inserts at the current line.
- Fixed
:ObsidianOpenissue on WSL OS name identifier check with different release name case. - Ensure ID of daily notes is always equal to the stem of the path.
- Don't insert a default alias for daily notes when
daily_notes.alias_formatisnil.
v3.7.8 - 2024-04-09
- Fixed regression with toggle checkbox util/mapping.
v3.7.7 - 2024-04-05
- Removed excessive logging when running
:ObsidianTodaycommand with a defined template, resulting in cleaner output and a more streamlined user experience.
v3.7.6 - 2024-04-01
- Ensure fields transferred to new note when cloning from template.
- Fixed bug with YAML parser where it would fail to parse field names with spaces in them.
- Fixed bug with YAML parser where it would incorrectly identity comments.
- Added a smart action mapping on
<CR>, that depends on the context. It will follow links or toggle checkboxes.
- Added
orderfield toui.checkboxesconfig fields that determines the order in which the different checkbox characters are cycled through via:ObsidianToggleCheckboxand the smart action.
v3.7.5 - 2024-03-22
- Fixed bug with created new notes from
nvim-cmpon Linux.
v3.7.4 - 2024-03-19
- Don't open picker for tags when there aren't any matches.
- Fixed overwriting frontmatter when creating daily note with template.
- Fixed default date format for the alias of daily notes.
- Made buffer open strategy more robust.
v3.7.3 - 2024-03-13
- Add indicator to entries that don't exist yet in
:ObsidianDailiespicker list.
- Fixed
img_text_funcexample in README. - When following intra-note links, such as with a table of contents, load the note from the buffer to resolve anchor/block links instead of from file.
v3.7.2 - 2024-03-12
:ObsidianNewwon't write the new note to disk, it will only populate the buffer.
- Fixed renaming when passing file path
- Make
Client:resolve_notefall back to fuzzy matching when there are no exact matches.
v3.7.1 - 2024-03-09
- Fixed regression with
:ObsidianExtractNote. - Fixed regression of edge case when paths are passed to
:ObsidianNew. - Don't write frontmatter when frontmatter table is empty.
v3.7.0 - 2024-03-08
There's a lot of new features and improvements here that I'm really excited about 🥳 They've improved my workflow a ton and I hope they do for you too. To highlight the 3 biggest additions:
-
🔗 Full support for header anchor links and block links! That means both for following links and completion of links. Various forms of anchor/block links are support. Here are a few examples:
- Typical Obsidian-style wiki links, e.g.
[[My note#Heading 1]],[[My note#Heading 1#Sub heading]],[[My note#^block-123]]. - Wiki links with a label, e.g.
[[my-note#heading-1|Heading 1 in My Note]]. - Markdown links, e.g.
[Heading 1 in My Note](my-note.md#heading-1).
We also support links to headers within the same note, like for a table of contents, e.g.
[[#Heading 1]],[[#heading-1|Heading]],[[#^block-1]]. - Typical Obsidian-style wiki links, e.g.
-
📲 A basic callback system to let you easily customize obisidian.nvim's behavior even more. There are currently 4 events:
post_setup,enter_note,pre_write_note, andpost_set_workspace. You can define a function for each of these in your config. -
🔭 Improved picker integrations (especially for telescope), particular for the
:ObsidianTagscommand. See #450 for a demo.
Full changelog below 👇
-
Added a configurable callback system to further customize obsidian.nvim's behavior. Callbacks are defined through the
callbacksfield in the config:callbacks = { -- Runs at the end of `require("obsidian").setup()`. ---@param client obsidian.Client post_setup = function(client) end, -- Runs anytime you enter the buffer for a note. ---@param client obsidian.Client ---@param note obsidian.Note enter_note = function(client, note) end, -- Runs anytime you leave the buffer for a note. ---@param client obsidian.Client ---@param note obsidian.Note leave_note = function(client, note) end, -- Runs right before writing the buffer for a note. ---@param client obsidian.Client ---@param note obsidian.Note pre_write_note = function(client, note) end, -- Runs anytime the workspace is set/changed. ---@param client obsidian.Client ---@param workspace obsidian.Workspace post_set_workspace = function(client, workspace) end, }
-
Added configuration option
note_path_func(spec): obsidian.Pathfor customizing how file names for new notes are generated. This takes a single argument, a table that looks like{ id: string, dir: obsidian.Path, title: string|? }, and returns anobsidian.Pathobject. The default behavior is equivalent to this:---@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) local path = spec.dir / tostring(spec.id) return path:with_suffix(".md") end
-
Added config option
picker.tag_mappings, analogous topicker.note_mappings. -
Added
logfield toobsidian.Clientfor easier access to the logger. -
Added ability to follow anchor and block links.
-
Added completion support for anchor and block links. Note that this requires you to update your
wiki_link_funcandmarkdown_link_funcin your config to handle anchors and blocks. See the configuration example in the README. -
You can set
wiki_link_functo a one of the following strings to use a builtin function:"use_alias_only", e.g.[[Foo Bar]]"prepend_note_id", e.g.[[foo-bar|Foo Bar]]"prepend_note_path", e.g.[[foo-bar.md|Foo Bar]]"use_path_only", e.g.[[foo-bar.md]]
-
Added command
:ObsidianDailiesfor opening a picker list of daily notes.
- Renamed config option
picker.mappingstopicker.note_mappings.
- Fixed consistency in frontmatter between opening daily notes with or without a template
- Fixed issue with
:ObsidianOpenon windows. - Respect telescope.nvim themes configured by user.
- Make tags completion more efficient (less CPU time!).
- Added file/directory completion to image name prompt from
:ObsidianPasteImg. - Handle prompt cancellation gracefully.
- Fix lua diagnostic warnings about missing fields in the configuration.
- Made
Client:resolve_note()more robust to when the search term is a file name.
v3.6.1 - 2024-02-28
- Added configuration option
attachments.confirm_img_paste: booleanto allow users to control whether they are prompted for confirmation when pasting an image.
- Only show unique links in buffer with
:ObsidianLinks.
v3.6.0 - 2024-02-27
Various bug fixes and Lua API improvements.
- Deprecated
Client:new_note()in favor ofClient:create_note(). - Changed API of
Client:apply_async()to take a table of options in place of the 2nd and 3rd arguments. - Changed API of
Note:save()to take a table of options.
- Ignore things that looks like tags within code blocks.
- Fixed bug with pasting images.
v3.5.3 - 2024-02-25
- Fixed regression with cloning templates where a directory was created instead of a file.
v3.5.2 - 2024-02-25
- Fixed os selection in
ObsidianOpencommand.
v3.5.1 - 2024-02-24
Minor internal improvements.
v3.5.0 - 2024-02-23
- Added CI testing for Windows.
- (internal) Replaced all uses of
plenary.pathwith a customobsidian.pathclass that stays more true to the Python pathlib API and should be more reliable across operating systems.
- If you have
new_notes_location="current_dir"but you're not inside of a vault, the new note will be created in your vault instead of the current (buffer) directory. - Fixed a regression where note titles were not considered for autocomplete when the title was not part of the frontmatter (only an H1 header).
- Escaped tags (e.g.
\#notatag) will no longer come up in tag searches.
v3.4.1 - 2024-02-22
- Ensure old buffer is removed when renaming current note.
v3.4.0 - 2024-02-21
- Added client methods
Client:find_backlinks()andClient:find_backlinks_async(). - Added client method
Client:open_note()for open a note in a buffer.
:ObsidianBacklinksand:ObsidianTagsnow open your preferred picker instead of a separate buffer.- Improved
cmp_obsidiandoc/preview text.
- Fixed
:ObsidianExtractNotewhen usual visual line selection ("V"). - Fixed "hsplit" open strategy.
v3.3.1 - 2024-02-18
- Fixed inserting templates when the templates directory structure is nested.
v3.3.0 - 2024-02-17
- Support for
file:/andfile:///Urls. - Added configuration options
wiki_link_funcandmarkdown_link_funcfor customizing how links are formatted.
- Urls ending in
/were not detected. - Fixed small bug with toggle checkbox mapping where lines that started with a wiki link or md link were misclassified.
- Config options
completion.prepend_note_id,completion.prepend_note_path, andcompletion.use_path_onlyare now deprecated. Please usewiki_link_funcandmarkdown_link_funcinstead. - Moved configuration option
completion.preferred_link_styleto top-levelpreferred_link_style. - Moved configuration option
completion.new_notes_locationto top-levelnew_notes_location.
v3.2.0 - 2024-02-13
- Added
:ObsidianLinkscommand. - Added
:ObsidianExtractNotecommand.
- Improved how we get visual selection for certain commands.
v3.1.0 - 2024-02-12
- Added descriptions to all commands.
- Major internal refactoring / improvements for how we integrate with pickers.
- Configuration option
finderandfinder_mappingshave been consolidated intopicker = { name: string, mappings: { ... } }. - When
:ObsidianWorkspaceis called without any arguments, obsidian.nvim will open your picker to select a workspace to switch to.
- Resolve workspace path when behind symlinks.
- Removed support for
fzf.vimas a picker (fzf-luais still supported).
v3.0.0 - 2024-02-09
- Added support for "dynamic" workspaces where the workspace
pathfield is a function instead of astring/Path. See PR #366.
- Changed behavior of workspace detection. When you have multiple workspaces configured, obsidian.nvim will now automatically switch workspaces when you open a buffer in a different workspace. See PR #366.
- Various changes to the
WorkspaceLua API. See PR #366. - Changed the behavior of the default frontmatter function so it no longer automatically adds the title of the note as an alias. See the
note_frontmatter_funcexample in the README if you want the old behavior.
- Removed configuration option
detect_cwd. This wasn't well-defined before and is no longer relevant with the new workspace detection behavior. See PR #366.
- Fixed two bugs with creating new notes through
:ObsidianFollowLink(andgf) where it wouldn't respect thecompletion.new_notes_locationsettings, and wouldn't respect paths in certain formats.
v2.10.0 - 2024-02-05
- Added note field
Note.titleto provide more useful info fornote_frontmatter_func. - Added client method
Client:format_link()for creating markdown / wiki links. - Added telescope action to insert a note link in certain finder scenarios.
- Fixed parsing header with trailing whitespace (#341 (comment)).
v2.9.0 - 2024-01-31
- Added configuration option
image_name_func: (fun(): string)|?for customizing the default image name/prefix when pasting images via:ObsidianPasteImg. - Added client method
Client:current_note()to get the note corresponding to the current buffer. - Added client method
Client:list_tags()for listing all tags in the vault, along with async versionClient:list_tags_async(callback: fun(tags: string[])). - Added note method
Note.add_field(key: string, value: any)to add/update an additional field in the frontmatter. - Added note method
Note.get_field(key: string). - Added note method
Note.save_to_buffer(bufnr: integer|?, frontmatter: table|?)for saving the frontmatter to a buffer.
:ObsidianTagscommand can take a visual selection or look for a tag under the cursor instead of explicitly provided arguments.
v2.8.0 - 2024-01-26
- Added
:ObsidianTagscommand.
- Changed API of client methods
Client:find_tags()andClient:find_tags_async(). The return value (or value passed to the callback) is now a list of objects representing the location of tags found. These objects have the following fields:tag: string,path: string|Path,line: integer.
- Fixed a YAML parsing issue with unquoted URLs in an array item.
- Fixed an issue on Windows when cloning a template into a new note. The root cause was this bug in plenary: nvim-lua/plenary.nvim#489. We've added a work-around.
v2.7.1 - 2024-01-23
- Fixed powershell command for
:ObsidianPasteImgin wsl - Fixed bug with YAML parser that led to incorrectly parsing double-quoted strings with escaped quotes inside.
v2.7.0 - 2024-01-19
- Fixed fzf-lua implementation of insert template and linking.
- Fixed minor bug with
cmp_obsidian_new.
- Added support for parsing single aliases specified as a string, not a list, in frontmatter. E.g.
aliases: fooas opposed toaliases: [foo]. Though when the frontmatter is saved it will always be saved as a YAML list, soaliases: foogets saved asaliases: [foo](or equivalent). - Added
ClientmethodsClient:apply_async()andClient:apply_async_raw().
v2.6.1 - 2024-01-16
- Added extmarks that conceal "-", "*", or "+" with "•" by default. This can turned off by setting
.ui.bulletstonilin your config.
- Fixed bug with resolving the vault-relative path when the vault is behind a symlink.
- Fixed bug with completion after changing workspaces.
v2.6.0 - 2024-01-09
- Creating new notes via
:ObsidianFollowLinknow matches the behavior of:ObsidianLinkNew, where the new note will be placed in the same directory as the current buffer note. This doesn't affect you if you use a flat directory structure for all of your notes. :ObsidianRenamewill prompt for the new title/ID/path if not given as an argument.
:ObsidianFollowLinknow takes an optional "open strategy" argument. For example:ObsidianFollowLink vsplitor:ObsidianFollowLink vspopens the note in a vertical split.- Added client method
Client:command(...)for running commands directly. For example::lua require("obsidian").get_client():command("ObsidianNew", { args = "Foo" }). - Added vim docs for the Lua API. See
:help obsidian-apior:help obsidian.Client. - Added the option to create notes with a mapping from the telescope finder with
:ObsidianQuickSwitchand:ObsidianSearch. - Added client methods
Client:find_files()andClient:find_files_async()for finding non-markdown files in the vault.
- Fixed bug with YAML encoder where strings with a colon followed by whitespace were not quoted.
- Parent directories are created when using a template (for example, for daily notes).
- Fixed bug with finder/picker in
:ObsidianLinkwhen current working directory is not vault root. :ObsidianFollowLinkwill now work when the link contains spaces encoded with "%20" (as they are in URLs) to match the behavior of the Obsidian app.
v2.5.3 - 2024-01-02
- Removed some errant print statements.
v2.5.2 - 2024-01-02
- Fixed bug with
Client:resolve_note()that missed checking the parent directory of the current buffer. - Made gathering backlinks work with links of different forms, like Markdown or Wiki with just an alias.
v2.5.1 - 2024-01-01
- Fixed a bug on Linux where we call a restricted function in an async context.
- Fixed bug with resolving relative path in vault when path is already relative.
v2.5.0 - 2023-12-30
-
Added Lua API methods
Client:set_workspace(workspace: obsidian.Workspace)andClient:switch_workspace(workspace: string|obsidian.Workspace). -
Added the ability to override settings per workspace by providing the
overridesfield in a workspace definition. For example:require("obsidian").setup({ workspaces = { { name = "personal", path = "~/vaults/personal", }, { name = "work", path = "~/vaults/work", -- Optional, override certain settings. overrides = { notes_subdir = "notes", }, }, }, -- ... other options ... })
- Made workspace API more robust.
- Template substitutions are done lazily and only generated once per line.
- Fixed search functionality with
fzf.vimas a finder when the vault name contains characters that need to be escaped, such as spaces. - Fixed a bug with ext marks for references inside of frontmatter.
v2.4.0 - 2023-12-19
- Added support for Mini.Pick as another alternative to telescope.nvim.
- Templates directory location follows the workspace now.
- Fixed bug with completion when
min_chars = 1and you start typing an empty check box.
- Replaced
Client.templates_dirfield withClient:templates_dir()function. :ObsidianLinkwill now open your finder when the initial search comes up empty or ambiguous.- Improve logging when
client:vault_relative_path()fails incmp_obsidian_new.
v2.3.1 - 2023-12-03
- Added
Client:update_ui()method. - Assigned enum type
obsidian.config.OpenStrategytoconfig.open_notes_in. disable_frontmatternow can be a function taking the filename of a note (relative to the vault root) to determine whether the note's frontmatter can be managed by obsidian.nvim or not.
Client:daily_note_path()now takes a datetime integer instead of an ID string.- Template substitutions can now handle multiple lines, i.e. you can define custom substitutions that return a string with new line characters.
- The "vsplit" and "hsplit" open strategies for
config.open_notes_inwill now only open a vertical/horizontal split if the window is not already split.
- Fixed URL incorrect in README.md
- Fixed autocmd registration for workspaces.
v2.3.0 - 2023-11-28
- The command
:ObsidianFollowLinkand the defaultgfpass-through mapping will now follow links to local files that are not notes. - Added documentation to completion items.
- Changed API of
Clientsearch methods to take a class of options. - Loading notes when gathering backlinks is now done concurrently.
- Made tags autocompletion more robust by ignoring anchor links (which look like tags) and searching case-insensitive.
v2.2.0 - 2023-11-23
- Added completion for tags.
- Added extmarks for tags.
- Added method
get_client()to get the current obsidian client instance. For example::lua print(require("obsidian").get_client():new_note_id("Foo")) - Added client methods
find_tags()andfind_tags_async(). - Added extmarks for inline highlighting, e.g.
==highlight this text!==.
- In the backlinks view you can now hit
<ENTER>within a group to toggle the folding. :ObsidianBacklinkswill now maintain focus to the current window.:ObsidianBacklinkswill now respect thesort_byandsort_reversedconfiguration options.
- Removed UI update delay on
BufEnter. - Fixed completion bug (#243)
v2.1.1 - 2023-11-20
- Fixed some edge cases with finding references via patterns.
v2.1.0 - 2023-11-18
Highlights:
Completion for markdown-style links in addition to Wiki links + more ways to customize how Wiki links are completed! 🔥
We also added support for pasting images into notes with the new command :ObsidianPasteImg 📷
- Added
:ObsidianPasteImgfor pasting images from the clipboard into notes. See theattachmentsconfiguration option for customizing the behavior of this command. Inspired by md-img-paste.vim and clipboard-image.nvim. - Added
completion.prepend_note_pathandcompletion.use_path_onlyoptions (mutually exclusive with each other andcompletion.prepend_note_id). - Added support for completing traditional markdown links instead of just wiki links.
- Renamed
opts.ui.ticktoopts.ui.update_debounce, but thetickfield will still be read for backwards compatibility. :ObsidianOpenwill now open wiki links under the cursor instead of always opening the note of the current buffer.:ObsidianBacklinkswill now show backlinks for the note of a wiki link under the cursor instead of always showing backlinks for the note of the current buffer.
- Ensure commands available across all buffers, not just note buffers in the vault.
v2.0.0 - 2023-11-16
Highlights:
The long awaited :ObsidianRename command is here along with big improvements to our syntax add-ons! Wiki links, external links, and checklists look much better now out-of-the-box and can be easily customized! 🥳
I recommend you use treesitter as a base markdown syntax highlighter, but obsidian.nvim is also compatible with traditional regex syntax highlighting.
- Added
:ObsidianRenamecommand. - Added
:ObsidianTomorrowcommand. - Added optional offset to
:ObsidianTodaycommand. For example::ObsidianToday -1to go to yesterday's daily note. - Added configuration option
uifor customizing obsidian.nvim's additional syntax highlighting and extmarks. - Improved default additional syntax highlighting / concealing.
- Added default mapping
<leader>chfor toggling check-boxes.
- Ensure additional syntax highlighting works with latest treesitter.
v1.16.1 - 2023-11-11
- Refactored commands module, improved
:ObsidianCheck.
- Fixed compatibility issue with older versions of Telescope.
v1.16.0 - 2023-11-10
Major internal refactoring to bring performance improvements through async execution of search/find functionality, and general robustness improvements. 🏎️🤠
- Added
obsidian.asyncmodule for internal use.
- Re-implemented the native Lua YAML parser (
obsidian.yaml.native). This should be faster and more robust now. - Re-implemented search/find functionality to utilize concurrency via
obsidian.asyncandplenary.asyncfor big performance gains. - Made how run shell commands more robust, and we also log stderr lines now.
- Submodules imported lazily.
- Changes to internal module organization.
- Fixed a completion bug (#212).
- Fixed a bug where the frontmatter of daily note template would be overwritten upon inserting the template.
- Skip templates directory when searching for notes.
- Fixed a compatibility issue with the latest
fzf.vimand made running finders more robust in general.
- Removed the
overwrite_mappingsoption.
v1.15.0 - 2023-10-20
- The
overwrite_mappingsoption, which sets the mappings in the config even if they already exist - Added support for multiple vaults (#128)
- Added command to switch between vaults (#60)
- Added configuration option
yaml_parser(a string value of either "native" or "yq") to change the YAML parser.
- Eliminated silent runtime errors on validation errors in
note.from_lines. - Fixed parsing YAML boolean values in frontmatter.
- Fixed parsing implicit null values in YAML frontmatter.
v1.14.2 - 2023-09-25
- Updated recommendation for how to configure mappings.
v1.14.1 - 2023-09-22
- Added back missing
util.find()function.
v1.14.0 - 2023-09-22
- Added config option
sort_byto allow setting search result order by "path", "modified", "accessed", or "created". - Added config option
sort_reversedto allow setting search result sort reversed order. The default istrue. - Added an extra option for daily notes to allow changing the default title from "%B %-d, %Y" to other strings.
- Added a configuration option
daily_notes.templatefor automatically using a specific template when creating a new daily note. - Adding a configuration option
templates.substitutionsfor defining custom template substitutions.
- Minor change to the behavior of
:ObsidianNew. The argument to this command can be in one of 3 different forms which determine the behavior of the command:- A raw title without any path components, e.g.
:ObsidianNew Foo. In this case the command will pass the title to thenote_id_funcand put the note in the default location. - A title prefixed by a path component, e.g.
:ObsidianNew notes/Foo. In this case the command will pass the title "Foo" to thenote_id_funcand put the note in the directory of the path prefix "notes/". - An exact path, e.g.
:ObsidianNew notes/foo.md. In this case the command will put the new note at the path given and the title will be inferred from the filename ("foo").
- A raw title without any path components, e.g.
- A bug when following links when headers have a space.
- Fixed
ObsidianFollowLinkwhen the note path contains a block link (e.g.[[foo#^Bar]]). - Fixed
:ObsidianOpendoesn't work in WSL2- Use wsl-open
- Improved completion start pattern to trigger anytime
[[is typed. - Fixed issue with parsing inline lists in YAML frontmatter when the items aren't wrapped in quotes.
v1.13.0 - 2023-08-24
- Added option
prepend_note_idto allow disabling id generation for new notes. - Added
mappingsconfiguration field. - Added
open_notes_inconfiguration field - Added
backlinksoptions to the config. The default isbacklinks = { -- The default height of the backlinks pane. height = 10, -- Whether or not to wrap lines. wrap = true, },
- (internal) Refactored daily note creation.
- obsidian.nvim will now automatically enable the 'gf' passthrough keybinding within your vault unless the 'gf' keybinding has already been overridden by you or another plugin or you override the 'mappings' configuration field.
- Fixed
template_patternnot escaping special characters. - Fixed new notes not getting passed args correctly
- Fixed
:ObsidianOpenwhen note is in a subdirectory with the same name as the root vault directory. - Fixed issue where
note_frontmatter_funcoption was not used when creating new notes.
v1.12.0 - 2023-07-15
- Allow user to supply an argument to
ObsidianTemplateto select a template.
- Renamed Lua function
command.insert_template()tocommand.template()and split the template insert script into a separate functionutil.insert_template(). - Added
log_levelconfiguration option to suspend notifications. - Added
completion.new_notes_locationconfiguration option to specify where newly created notes are placed in completion.
- Fixed creating new notes when the title of the note contains a path. Now that path will always be treated as relative to the vault, not the
notes_subdir. - Fixed
ObsidianFollowLinkwhen the note path contains a header link (e.g.[[foo#Bar]]).
v1.11.0 - 2023-06-09
- Added configuration option
daily_notes.date_format(a string) to customize the date format of daily notes.
- Disabled managed frontmatter for files in the templates subdirectory.
- A bug when
disable_frontmatteris ignored forObsidianTodayandObsidianYesterday. - A bug with
ObsidianTemplatewhen using Telescope
v1.10.0 - 2023-05-11
- Report errors finding vault from
:ObsidianCheckHealth. - Added
finderoption for choosing a preferred finder backend.
- Removed annoying "skipped updating frontmatter" message on file write.
v1.9.0 - 2023-04-22
- Added
open_app_foregroundoption to open Obsidian.app in foreground on macOS. - Added
:ObsidianTemplateto insert a template, configurable using atemplatestable passed tosetup(). - Added support for following links in markdown format
- Added
follow_url_funcoption to customize behaviour of following URLs
- Use
vim.notifyto echo log messages now.
- Gracefully handle invalid aliases / tags in frontmatter (i.e. values that aren't strings). We'll warn about them and ignore the invalid values.
- Fixed
nvim-cmpcompletion for notes that have noaliasesspecified. nvim-cmpcompletion will search based on file names now too, not just contents.- Fixed bug when
nvim-cmpis not installed. - Workaround error which prevented users from using
ObsidianOpenwhen vault path was configured behind a link - Detect URLs when following links and ignore them by default.
v1.8.0 - 2023-02-16
lua-yamlno-longer bundled as a git submodule. Code from that project has been copied and modified into it's own Lua submodule ofobsidian.- (BREAKING) 'nvim-lua/plenary.nvim' is no-longer bundled, so must be explicitly installed (e.g. Plug 'nvim-lua/plenary.nvim' in your
init.nvim).
- Fixed a bug where creating a new note with
nvim-cmpcompletion would causenvim-cmpto stop working. - Fixed bug where
disable_frontmattersetting would be ignored for:ObsidianNewcommand.
v1.7.0 - 2023-02-02
- Added support for fzf-lua as one of the possible fallbacks for the
:ObsidianQuickSwitchcommand. - Added
:ObsidianQuickSwitchto fuzzy-find a note by name in telescope/fzf a la in Obsidian. - Added support for fzf-lua as one of the possible fallbacks for the
:ObsidianSearchcommand. - Added
:ObsidianFollowLinkand companion functionutil.cursor_on_markdown_link - Added
:ObsidianLinkand:ObsidianLinkNewcommands. - Added configuration option
disable_frontmatterfor frontmatter disabling - Added line-navigation to
:ObsidianOpenvia the Obsidian Advanced URI plugin - Added
:ObsidianYesterdaycommand to open/create the previous working day daily note
- Fixed bug with
Note.from_lineswhere the given path would be modified in place to be relative to the root, which caused a bug in:ObsidianFollowLink. - Completion for creating new notes via nvim-cmp is now aware of daily notes, so when you start typing todays date in the form of YYYY-MM-DD, you get a "Create new" completion option for today's daily note if it doesn't exist yet.
- Fixed bug where
:ObsidianOpenblocked the NeoVim UI on Linux. :ObsidianOpenshould now work on Windows.- Fixed URL encoding of space characters for better compatibility with external applications.
- Made more robust to unexpected types in frontmatter.
- Fixed edge case where frontmatter consisting of exactly one empty field would raise an exception.
- Fixed
:ObsidianFollowLinknot creating a new note when following a dangling link; matches behavior in the official Obsidian app. - Fixed handling spaces in configured vault directory.
- Fixed
:ObsidianFollowLinknot considering the vault's root directory. - Fixed bug where the note ID in the YAML frontmatter wasn't updated after the file is renamed.
- Fixed
requiremodule name syntax; see #93 for explanation.
- The new note completion source will now create the new note in the same directory as the current note, regardless of the
notes_subdirsetting.
v1.6.1 - 2022-10-17
- Ensured vault directory along with optional notes and daily notes subdirectories are added to vim's
pathso you cangfto files in those directories.
v1.6.0 - 2022-10-14
- Added support for arbitrary fields in YAML frontmatter.
- Added configuration option
note_frontmatter_funcfor customizing the YAML frontmatter of your notes. This can be set to a function that takes a single argument - anobsidian.Noteobject - and returns a YAML-serializable table.
- Added folding and custom highlighting to backlinks window, and fixed window height.
- When the title of a note is changed, the title will automatically be added to note's aliases in the frontmatter on save.
- Fixed autocomplete functionality to be less sensitive to case.
- Made YAML frontmatter dumping functionality more robust.
v1.5.0 - 2022-10-12
- Improved
:ObsidianBacklinkscommand to use its own buffer type instead of the location list. It's now more readable. - Removed save on write for
:ObsidianNewand:ObsidianToday(#32).
:ObsidianOpennow works on Linux.
v1.4.0 - 2022-10-11
- Added
daily_notesconfiguration options. - Added
:ObsidianSearchcommand (requiresfzf.vimortelescope.nvim).
- Fixed a bug with
:ObsidianOpen(#19). - Fixed bug with creating a new note with
nvim-cmpcompletion where full settings weren't taken into account. - Fixed a bug with
:ObsidianBacklinkswhere the paths were incorrect.
v1.3.0 - 2022-09-23
plenary.nvimis no longer required to be installed separately. It's now bundled as a submodule.
v1.2.1 - 2022-09-23
- Added setup configuration option
notes_subdir. Use this if you want new notes to be put in a specific subdirectory of your vault.
- Commands are no-longer setup lazily on
BufEnterto a markdown file in your vault. Now they'll always be available.
v1.2.0 - 2022-09-22
- Added
:ObsidianNewcommand for creating a new note with a given title. - Added setup configuration option
note_id_func, which can be set to a custom function for generating new note IDs. The function should take a single optional string argument, a title of the note, and return a string. The default method for generating new note IDs is to generate a Zettelkasten-like ID using a timestamp and some random letters.
v1.1.1 - 2022-08-22
- Fixed bug when creating new notes. Sometimes this would fail if
~/wasn't expanded. - Use HTTPS instead of SSH for
lua_yamlgit submodule. - Fixed bug with
:ObsidianTodaycommand, which would fail if you weren't in a named buffer.
v1.1.0 - 2022-08-07
- Added
:ObsidianBacklinkscommand for getting a location list of references to the current note.
- Fixed issue where completion wouldn't be triggered for "hashtag" form of a reference:
#[[... - Generalized syntax file so as to not override colorscheme.
v1.0.0 - 2022-08-05
- Added
:ObsidianOpencommand for opening a note in Obsidian (only works on MacOS for now).
v0.1.0 - 2022-08-05
- Initial plugin release