From 3683a06c8cd7387bb35d091e3473d96919e03cd5 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 7 Dec 2024 21:23:02 +0800 Subject: [PATCH] feat(zettelkasten): improve zettelkasten plugin --- .../vim-zettelkasten/ftplugin/zkbrowser.lua | 29 ++++++++++++++----- .../lua/zettelkasten/browser.lua | 9 ++++++ .../lua/zettelkasten/config.lua | 15 +++++----- 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/bundle/vim-zettelkasten/ftplugin/zkbrowser.lua b/bundle/vim-zettelkasten/ftplugin/zkbrowser.lua index f3e818e90..fa3c50d35 100644 --- a/bundle/vim-zettelkasten/ftplugin/zkbrowser.lua +++ b/bundle/vim-zettelkasten/ftplugin/zkbrowser.lua @@ -8,6 +8,7 @@ vim.opt_local.buflisted = false vim.opt_local.syntax = 'zkbrowser' vim.opt_local.buftype = 'nofile' vim.opt_local.swapfile = false +vim.opt_local.buflisted = false vim.opt_local.iskeyword:append(':') vim.opt_local.iskeyword:append('-') vim.opt_local.suffixesadd:append('.md') @@ -21,6 +22,8 @@ if vim.opt_local.tagfunc:get() == '' then vim.opt_local.tagfunc = 'v:lua.zettelkasten.tagfunc' end +local win = require('spacevim.api.vim.window') + require('zettelkasten').add_hover_command() if vim.fn.mapcheck('[I', 'n') == '' then @@ -31,13 +34,24 @@ if vim.fn.mapcheck('[I', 'n') == '' then 'lua require("zettelkasten").show_back_references(vim.fn.expand(""))', { noremap = true, silent = true, nowait = true } ) - vim.api.nvim_buf_set_keymap( - 0, - 'n', - 'q', - ':bd!', - { noremap = true, silent = true, nowait = true } - ) + vim.api.nvim_buf_set_keymap(0, 'n', 'q', '', { + noremap = true, + silent = true, + nowait = true, + callback = function() + if vim.fn.tabpagenr('$') > 1 and win.is_last_win() then + vim.cmd('quit') + return + end + local ok = pcall(function() + vim.cmd('b#') + end) + + if not ok then + vim.cmd('bd') + end + end, + }) end local config = require('zettelkasten.config') @@ -53,6 +67,7 @@ vim.api.nvim_create_autocmd({ 'BufEnter' }, { vim.opt_local.modifiable = true vim.api.nvim_buf_set_lines(0, 0, -1, false, require('zettelkasten').get_note_browser_content()) vim.opt_local.syntax = 'zkbrowser' + vim.opt_local.buflisted = false vim.opt_local.modifiable = false end, }) diff --git a/bundle/vim-zettelkasten/lua/zettelkasten/browser.lua b/bundle/vim-zettelkasten/lua/zettelkasten/browser.lua index c5e51e9d1..1ec7f39f0 100644 --- a/bundle/vim-zettelkasten/lua/zettelkasten/browser.lua +++ b/bundle/vim-zettelkasten/lua/zettelkasten/browser.lua @@ -1,3 +1,10 @@ +--============================================================================= +-- browser.lua --- browser zknotes +-- Copyright (c) 2019-2024 Wang Shidong & Contributors +-- Author: Wang Shidong < wsdjeg@outlook.com > +-- URL: https://spacevim.org +-- License: GPLv3 +--============================================================================= local M = {} local fn = vim.fn @@ -10,6 +17,8 @@ local ZK_FILE_NAME_PATTERN = '%d+-%d+-%d+-%d+-%d+-%d+.md' local s_note_cache_with_file_path = {} local s_note_cache_with_id = {} + +-- list all zettelkasten notes in specific folder local function get_files(folder) local files = fn.split(fn.globpath(folder, '*.md'), '\\n') files = vim.tbl_filter(function(file) diff --git a/bundle/vim-zettelkasten/lua/zettelkasten/config.lua b/bundle/vim-zettelkasten/lua/zettelkasten/config.lua index fb79f5b06..fe3007958 100644 --- a/bundle/vim-zettelkasten/lua/zettelkasten/config.lua +++ b/bundle/vim-zettelkasten/lua/zettelkasten/config.lua @@ -7,24 +7,23 @@ --============================================================================= local M = {} - if vim.g.zettelkasten_directory and vim.g.zettelkasten_directory ~= '' then - M.zettel_dir = vim.g.zettelkasten_directory + M.zettel_dir = vim.g.zettelkasten_directory else - M.zettel_dir = '~/.zettelkasten/' + M.zettel_dir = '~/.zettelkasten/' end if vim.g.zettelkasten_template_directory and vim.g.zettelkasten_template_directory ~= '' then - M.templete_dir = vim.g.zettelkasten_template_directory + M.templete_dir = vim.g.zettelkasten_template_directory else - M.templete_dir = '~/.zettelkasten_template' + M.templete_dir = '~/.zettelkasten_template' end -M.browseformat = "%f - %h [%r Refs] [%b B-Refs] %t" -M.preview_command = "pedit" +M.browseformat = '%f - %h [%r Refs] [%b B-Refs] %t' +M.preview_command = 'pedit' M.get = function() - return nil + return nil end return M