From e57be0cfd2a60530cba11a7e695c918a26ea3581 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 9 Nov 2022 08:28:46 +0100 Subject: [PATCH] Feat: remove vim-notes and replace wit telekasten --- nvim/.config/nvim/lua/config/telekasten.lua | 158 ++++++++++++++++++++ nvim/.config/nvim/lua/plugins.lua | 17 ++- 2 files changed, 168 insertions(+), 7 deletions(-) create mode 100644 nvim/.config/nvim/lua/config/telekasten.lua diff --git a/nvim/.config/nvim/lua/config/telekasten.lua b/nvim/.config/nvim/lua/config/telekasten.lua new file mode 100644 index 0000000..5d5bc4d --- /dev/null +++ b/nvim/.config/nvim/lua/config/telekasten.lua @@ -0,0 +1,158 @@ +local status, telekasten = pcall(require, "telekasten") +if (not status) then return end + +local home = vim.fn.expand("~/Nextcloud/Documents/zettelkasten") + +telekasten.setup{ + home = home, + + -- if true, telekasten will be enabled when opening a note within the configured home + take_over_my_home = true, + + -- auto-set telekasten filetype: if false, the telekasten filetype will not be used + -- and thus the telekasten syntax will not be loaded either + auto_set_filetype = true, + + -- dir names for special notes (absolute path or subdir name) + dailies = home .. '/' .. 'daily', + weeklies = home .. '/' .. 'weekly', + templates = home .. '/' .. 'templates', + + -- image (sub)dir for pasting + -- dir name (absolute path or subdir name) + -- or nil if pasted images shouldn't go into a special subdir + image_subdir = "img", + + -- markdown file extension + extension = ".md", + + -- following a link to a non-existing note will create it + follow_creates_nonexisting = true, + dailies_create_nonexisting = true, + weeklies_create_nonexisting = true, + + -- template for new notes (new_note, follow_link) + -- set to `nil` or do not specify if you do not want a template + template_new_note = home .. '/' .. 'templates/new_note.md', + + -- template for newly created daily notes (goto_today) + -- set to `nil` or do not specify if you do not want a template + template_new_daily = home .. '/' .. 'templates/daily.md', + + -- template for newly created weekly notes (goto_thisweek) + -- set to `nil` or do not specify if you do not want a template + template_new_weekly= home .. '/' .. 'templates/weekly.md', + + -- image link style + -- wiki: ![[image name]] + -- markdown: ![](image_subdir/xxxxx.png) + image_link_style = "markdown", + + -- integrate with calendar-vim + plug_into_calendar = true, + calendar_opts = { + -- calendar week display mode: 1 .. 'WK01', 2 .. 'WK 1', 3 .. 'KW01', 4 .. 'KW 1', 5 .. '1' + weeknm = 4, + -- use monday as first day of week: 1 .. true, 0 .. false + calendar_monday = 1, + -- calendar mark: where to put mark for marked days: 'left', 'right', 'left-fit' + calendar_mark = 'left-fit', + }, + + -- telescope actions behavior + close_after_yanking = false, + insert_after_inserting = true, + + -- tag notation: '#tag', ':tag:', 'yaml-bare' + tag_notation = "#tag", + + -- command palette theme: dropdown (window) or ivy (bottom panel) + command_palette_theme = "ivy", + + -- tag list theme: + -- get_cursor: small tag list at cursor; ivy and dropdown like above + show_tags_theme = "ivy", + + -- when linking to a note in subdir/, create a [[subdir/title]] link + -- instead of a [[title only]] link + subdirs_in_links = true, + + -- template_handling + -- What to do when creating a new note via `new_note()` or `follow_link()` + -- to a non-existing note + -- - prefer_new_note: use `new_note` template + -- - smart: if day or week is detected in title, use daily / weekly templates (default) + -- - always_ask: always ask before creating a note + template_handling = "smart", + + -- path handling: + -- this applies to: + -- - new_note() + -- - new_templated_note() + -- - follow_link() to non-existing note + -- + -- it does NOT apply to: + -- - goto_today() + -- - goto_thisweek() + -- + -- Valid options: + -- - smart: put daily-looking notes in daily, weekly-looking ones in weekly, + -- all other ones in home, except for notes/with/subdirs/in/title. + -- (default) + -- + -- - prefer_home: put all notes in home except for goto_today(), goto_thisweek() + -- except for notes with subdirs/in/title. + -- + -- - same_as_current: put all new notes in the dir of the current note if + -- present or else in home + -- except for notes/with/subdirs/in/title. + new_note_location = "smart", + + -- should all links be updated when a file is renamed + rename_update_links = true, +} + + +-- Mapping helper +local function map(mode, lhs, rhs, opts) + local options = { noremap = true } + if opts then + options = vim.tbl_extend("force", options, opts) + end + vim.api.nvim_set_keymap(mode, lhs, rhs, options) +end + +-- On hesitation, bring up the command panel +map("n","z", ":lua require('telekasten').panel()") +-- Function mappings +map("n", "zf", ":lua require('telekasten').find_notes()") +map("n", "zd", ":lua require('telekasten').find_daily_notes()") +map("n", "zg", ":lua require('telekasten').search_notes()") +map("n", "zz", ":lua require('telekasten').follow_link()") +map("n", "zT", ":lua require('telekasten').goto_today()") +map("n", "zW", ":lua require('telekasten').goto_thisweek()") +map("n", "zw", ":lua require('telekasten').find_weekly_notes()") +map("n", "zn", ":lua require('telekasten').new_note()") +map("n", "zN", ":lua require('telekasten').new_templated_note()") +map("n", "zy", ":lua require('telekasten').yank_notelink()") +map("n", "zc", ":lua require('telekasten').show_calendar()") +map("n", "zC", ":CalendarT") +map("n", "zi", ":lua require('telekasten').paste_img_and_link()") +map("n", "zt", ":lua require('telekasten').toggle_todo()") +map("n", "zb", ":lua require('telekasten').show_backlinks()") +map("n", "zF", ":lua require('telekasten').find_friends()") +map("n", "zI", ":lua require('telekasten').insert_img_link({ i=true })") +map("n", "zp", ":lua require('telekasten').preview_img()") +map("n", "zm", ":lua require('telekasten').browse_media()") +map("n", "za", ":lua require('telekasten').show_tags()") +map("n", "#", ":lua require('telekasten').show_tags()") +map("n", "zr", ":lua require('telekasten').rename_note()") + +-- we could define [[ in **insert mode** to call insert link +-- inoremap [[ :lua require('telekasten').insert_link() +-- alternatively: leader [ +map("i", "[", ":lua require('telekasten').insert_link({ i=true })") +map("i", "zt", ":lua require('telekasten').toggle_todo({ i=true })") +map("i", "#", ":lua require('telekasten').show_tags({i = true})") + + diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index 04f9da6..17d0dec 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -120,13 +120,6 @@ return packer.startup(function(use) } use 'kyazdani42/nvim-web-devicons' - use { - 'xolox/vim-notes', - config = [[require('config.notes')]], - requires = { - 'xolox/vim-misc', - } - } use 'christoomey/vim-tmux-navigator' @@ -146,6 +139,16 @@ return packer.startup(function(use) config = [[require('config.indentblankline')]] } + use { + 'renerocksai/telekasten.nvim', + requires = { + 'nvim-telescope/telescope.nvim', + 'nvim-lua/plenary.nvim', + 'renerocksai/calendar-vim' + }, + config = [[require('config.telekasten')]] + } + if PACKER_BOOTSTRAP then require("packer").sync() end