obsidian.nvim icon indicating copy to clipboard operation
obsidian.nvim copied to clipboard

mappings not working when loaded within opts by lazy.nvim

Open richardguinness opened this issue 5 months ago • 0 comments

🐛 Describe the bug

Following suggestion re installation of obsidian.nvim using lazy.nvim, I add a new table mappings within opts, but the defined shortcuts don't work.

I've ensured obsidian.nvim has been loaded by 1) opening a markdown file (and confirming that :Obsidian<tab> shows commands) and 2) disabling lazy loading.

I can set and use the keymap fine using e.g. nnoremap <leader>tc :lua require('obsidian').util.toggle_checkbox()<CR> from command line in neovim, so I could just add the required keymaps elsewhere.

But I'm curious why this mappings table isn't being loaded, and as a relative noob this has delayed me quite a lot in getting going with obsidian.nvim and I'd love to help anyone else going down the same dead end!

Config

~/.config/nvim-test/init.lua

-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
	local lazyrepo = "https://github.com/folke/lazy.nvim.git"
	local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
	if vim.v.shell_error ~= 0 then
		vim.api.nvim_echo({
			{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
			{ out, "WarningMsg" },
			{ "\nPress any key to exit..." },
		}, true, {})
		vim.fn.getchar()
		os.exit(1)
	end
end
vim.opt.rtp:prepend(lazypath)

-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"

-- Setup lazy.nvim
require("lazy").setup({
	spec = {
		-- add your plugins here
		{
			"epwalsh/obsidian.nvim",
			version = "*", -- recommended, use latest release instead of latest commit
			lazy = true,
			ft = "markdown",
			dependencies = {
				-- Required.
				"nvim-lua/plenary.nvim",
			},
			opts = {
				workspaces = {
					{
						name = "personal",
						path = "/home/myusername/Documents/My Notes",
					},
				},
				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.
					["<leader>ch"] = {
						action = function()
							return require("obsidian").util.toggle_checkbox()
						end,
						opts = { buffer = true, desc = "Toggle checkbox" },
					},
					-- Smart action depending on context, either follow link or toggle checkbox.
					["<cr>"] = {
						action = function()
							return require("obsidian").util.smart_action()
						end,
						opts = { buffer = true, expr = true },
					},
					["<leader>os"] = {
						action = function()
							return require("obsidian").util.ObsidianQuickSwitch()
						end,
						opts = { silent = true, noremap = true, desc = "[O]bsidian Quick[S]witch" },
					},
				},
			},
		},
	},
	-- colorscheme that will be used when installing plugins.
	install = { colorscheme = { "habamax" } },
	-- automatically check for plugin updates
	checker = { enabled = true },
})

Environment

❯ NVIM_APPNAME=nvim-test nvim --version
NVIM v0.10.1
Build type: RelWithDebInfo
LuaJIT 2.1.1720049189
Run "nvim -V1 -v" for more info
❯ NVIM_APPNAME=nvim-test nvim --headless -c 'lua require("obsidian").info()' -c q
Obsidian.nvim v3.9.0 (ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b)
Status:
  • buffer directory: nil
  • working directory: /home/myusername/.config/nvim-test
Workspaces:
  ✓ active workspace: Workspace(name='personal', path='/home/myusername/Documents/My Notes', root='/home/myusername/Documents/My Notes')
Dependencies:
  ✓ plenary.nvim: ec289423a1693aeae6cd0d503bac2856af74edaa
Integrations:
  ✓ picker: nil
  ✗ completion: disabled
Tools:
  ✓ rg: ripgrep 14.1.0
Environment:
  • operating system: Linux
Config:
  • notes_subdir: nil

richardguinness avatar Sep 08 '24 09:09 richardguinness