mirror of
https://github.com/Ascyii/telekasten.nvim.git
synced 2026-01-01 06:14:23 -05:00
Squashed PR #158 and fixup into 1 commit
Squashed PR#158 into 1 single commit;
Add vaults
Add documentation:
Make luachack happy.
Address review comments
fixed tabs and formatting of PR #158
This commit is contained in:
@@ -368,6 +368,13 @@ require('telekasten').setup({
|
|||||||
|
|
||||||
-- should all links be updated when a file is renamed
|
-- should all links be updated when a file is renamed
|
||||||
rename_update_links = true,
|
rename_update_links = true,
|
||||||
|
|
||||||
|
vaults = {
|
||||||
|
vault2 = {
|
||||||
|
-- alternate configuration for vault2 here. Missing values are defaulted to
|
||||||
|
-- default values from telekasten.
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
END
|
END
|
||||||
```
|
```
|
||||||
@@ -632,6 +639,7 @@ The plugin defines the following functions:
|
|||||||
- `panel()` : brings up the command palette
|
- `panel()` : brings up the command palette
|
||||||
- `show_tags()` : brings up the tag list. From there you can select a tag to search for tagged notes - or yank or insert the tag
|
- `show_tags()` : brings up the tag list. From there you can select a tag to search for tagged notes - or yank or insert the tag
|
||||||
- `rename_note()` : rename the current note and update the links pointing to it
|
- `rename_note()` : rename the current note and update the links pointing to it
|
||||||
|
- `switch_vault()` : switch the vault
|
||||||
|
|
||||||
To use one of the functions above, just run them with the `:lua ...` command.
|
To use one of the functions above, just run them with the `:lua ...` command.
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ CONTENTS
|
|||||||
3.3 Templates ................ |telekasten.templates|
|
3.3 Templates ................ |telekasten.templates|
|
||||||
3.4 Calendar ................. |telekasten.calendar|
|
3.4 Calendar ................. |telekasten.calendar|
|
||||||
3.5 Picker mappings .......... |telekasten.picker_mappings|
|
3.5 Picker mappings .......... |telekasten.picker_mappings|
|
||||||
|
3.6 Mutliple home directories. |telekasten.switch_vaults|
|
||||||
4. Suggested mappings ............ |telekasten.mappings|
|
4. Suggested mappings ............ |telekasten.mappings|
|
||||||
5. Credits ....................... |telekasten.credits|
|
5. Credits ....................... |telekasten.credits|
|
||||||
|
|
||||||
@@ -125,6 +126,7 @@ telekasten.setup({opts})
|
|||||||
-- 'left'
|
-- 'left'
|
||||||
-- 'right'
|
-- 'right'
|
||||||
-- 'left-fit'
|
-- 'left-fit'
|
||||||
|
},
|
||||||
|
|
||||||
-- make syntax available to markdown buffers and telescope previewers
|
-- make syntax available to markdown buffers and telescope previewers
|
||||||
install_syntax = true,
|
install_syntax = true,
|
||||||
@@ -142,6 +144,12 @@ telekasten.setup({opts})
|
|||||||
-- when linking to a note in subdir/, create a [[subdir/title]] link
|
-- when linking to a note in subdir/, create a [[subdir/title]] link
|
||||||
-- instead of a [[title only]] link
|
-- instead of a [[title only]] link
|
||||||
subdirs_in_links = true,
|
subdirs_in_links = true,
|
||||||
|
|
||||||
|
vaults = {
|
||||||
|
personal = {
|
||||||
|
--configuration for personal vault
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
<
|
<
|
||||||
|
|
||||||
@@ -911,6 +919,14 @@ the following mappings apply:
|
|||||||
function. E.g. `insert_img_link()`'s action is to insert a link to the
|
function. E.g. `insert_img_link()`'s action is to insert a link to the
|
||||||
selected image.
|
selected image.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
Section 3.6 Mutliple home directories *telekasten.switch_vaults*
|
||||||
|
|
||||||
|
You can have multiple home directories setup in telekasten. The configuration
|
||||||
|
for each vault is stored as a map in telekasten. You can use `switch_vaults
|
||||||
|
to launch a picker to choose the vaults.
|
||||||
|
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
Section 4: Suggested Mappings *telekasten.mappings*
|
Section 4: Suggested Mappings *telekasten.mappings*
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ local tagutils = require("taglinks.tagutils")
|
|||||||
local linkutils = require("taglinks.linkutils")
|
local linkutils = require("taglinks.linkutils")
|
||||||
local dateutils = require("taglinks.dateutils")
|
local dateutils = require("taglinks.dateutils")
|
||||||
local Path = require("plenary.path")
|
local Path = require("plenary.path")
|
||||||
|
local vaultPicker = require("vaultpicker")
|
||||||
|
|
||||||
-- declare locals for the nvim api stuff to avoid more lsp warnings
|
-- declare locals for the nvim api stuff to avoid more lsp warnings
|
||||||
local vim = vim
|
local vim = vim
|
||||||
@@ -26,10 +27,14 @@ local vim = vim
|
|||||||
-- ----------------------------------------------------------------------------
|
-- ----------------------------------------------------------------------------
|
||||||
-- DEFAULT CONFIG
|
-- DEFAULT CONFIG
|
||||||
-- ----------------------------------------------------------------------------
|
-- ----------------------------------------------------------------------------
|
||||||
local home = vim.fn.expand("~/zettelkasten")
|
local _home = vim.fn.expand("~/zettelkasten")
|
||||||
local M = {}
|
local M = {}
|
||||||
|
local function defaultConfig(home)
|
||||||
|
if home == nil then
|
||||||
|
home = _home
|
||||||
|
end
|
||||||
|
|
||||||
M.Cfg = {
|
local cfg = {
|
||||||
home = home,
|
home = home,
|
||||||
|
|
||||||
-- if true, telekasten will be enabled when opening a note within the configured home
|
-- if true, telekasten will be enabled when opening a note within the configured home
|
||||||
@@ -145,6 +150,13 @@ M.Cfg = {
|
|||||||
-- should all links be updated when a file is renamed
|
-- should all links be updated when a file is renamed
|
||||||
rename_update_links = true,
|
rename_update_links = true,
|
||||||
}
|
}
|
||||||
|
M.Cfg = cfg
|
||||||
|
M.note_type_templates = {
|
||||||
|
normal = M.Cfg.template_new_note,
|
||||||
|
daily = M.Cfg.template_new_daily,
|
||||||
|
weekly = M.Cfg.template_new_weekly,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
local function file_exists(fname)
|
local function file_exists(fname)
|
||||||
if fname == nil then
|
if fname == nil then
|
||||||
@@ -463,13 +475,8 @@ local function imgFromClipboard()
|
|||||||
vim.api.nvim_err_writeln("Unable to write image " .. png)
|
vim.api.nvim_err_writeln("Unable to write image " .. png)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- end of image stuff
|
|
||||||
|
|
||||||
M.note_type_templates = {
|
-- end of image stuff
|
||||||
normal = M.Cfg.template_new_note,
|
|
||||||
daily = M.Cfg.template_new_daily,
|
|
||||||
weekly = M.Cfg.template_new_weekly,
|
|
||||||
}
|
|
||||||
|
|
||||||
local function daysuffix(day)
|
local function daysuffix(day)
|
||||||
day = tostring(day)
|
day = tostring(day)
|
||||||
@@ -2806,6 +2813,7 @@ end
|
|||||||
--
|
--
|
||||||
local function Setup(cfg)
|
local function Setup(cfg)
|
||||||
cfg = cfg or {}
|
cfg = cfg or {}
|
||||||
|
defaultConfig(cfg.home)
|
||||||
local debug = cfg.debug
|
local debug = cfg.debug
|
||||||
for k, v in pairs(cfg) do
|
for k, v in pairs(cfg) do
|
||||||
-- merge everything but calendar opts
|
-- merge everything but calendar opts
|
||||||
@@ -2826,7 +2834,6 @@ local function Setup(cfg)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- TODO: this is obsolete:
|
-- TODO: this is obsolete:
|
||||||
if vim.fn.executable("rg") == 1 then
|
if vim.fn.executable("rg") == 1 then
|
||||||
M.Cfg.find_command = { "rg", "--files", "--sortr", "created" }
|
M.Cfg.find_command = { "rg", "--files", "--sortr", "created" }
|
||||||
@@ -2907,12 +2914,38 @@ local function Setup(cfg)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function _setup(cfg)
|
||||||
|
if cfg.vaults ~= nil and cfg.default_vault ~= nil then
|
||||||
|
M.vaults = cfg.vaults
|
||||||
|
cfg.vaults = nil
|
||||||
|
Setup(cfg.vaults[cfg.default_vault])
|
||||||
|
elseif cfg.vaults ~= nil and cfg.vaults["default"] ~= nil then
|
||||||
|
M.vaults = cfg.vaults
|
||||||
|
cfg.vaults = nil
|
||||||
|
Setup(cfg.vaults["default"])
|
||||||
|
elseif cfg.home ~= nil then
|
||||||
|
M.vaults = cfg.vaults or {}
|
||||||
|
cfg.vaults = nil
|
||||||
|
M.vaults["default"] = cfg
|
||||||
|
Setup(cfg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function ChangeVault(opts)
|
||||||
|
vaultPicker.vaults(M, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function chdir(cfg)
|
||||||
|
Setup(cfg)
|
||||||
|
-- M.Cfg = vim.tbl_deep_extend("force", defaultConfig(new_home), cfg)
|
||||||
|
end
|
||||||
|
|
||||||
M.find_notes = FindNotes
|
M.find_notes = FindNotes
|
||||||
M.find_daily_notes = FindDailyNotes
|
M.find_daily_notes = FindDailyNotes
|
||||||
M.search_notes = SearchNotes
|
M.search_notes = SearchNotes
|
||||||
M.insert_link = InsertLink
|
M.insert_link = InsertLink
|
||||||
M.follow_link = FollowLink
|
M.follow_link = FollowLink
|
||||||
M.setup = Setup
|
M.setup = _setup
|
||||||
M.goto_today = GotoToday
|
M.goto_today = GotoToday
|
||||||
M.new_note = CreateNote
|
M.new_note = CreateNote
|
||||||
M.goto_thisweek = GotoThisWeek
|
M.goto_thisweek = GotoThisWeek
|
||||||
@@ -2932,6 +2965,8 @@ M.preview_img = PreviewImg
|
|||||||
M.browse_media = BrowseImg
|
M.browse_media = BrowseImg
|
||||||
M.taglinks = taglinks
|
M.taglinks = taglinks
|
||||||
M.show_tags = FindAllTags
|
M.show_tags = FindAllTags
|
||||||
|
M.switch_vault = ChangeVault
|
||||||
|
M.chdir = chdir
|
||||||
|
|
||||||
-- Telekasten command, completion
|
-- Telekasten command, completion
|
||||||
local TelekastenCmd = {
|
local TelekastenCmd = {
|
||||||
|
|||||||
42
lua/vaultpicker.lua
Normal file
42
lua/vaultpicker.lua
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
local actions = require("telescope.actions")
|
||||||
|
local action_state = require("telescope.actions.state")
|
||||||
|
local pickers = require("telescope.pickers")
|
||||||
|
local finders = require("telescope.finders")
|
||||||
|
local conf = require("telescope.config").values
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
local vaults = function(telekasten, opts)
|
||||||
|
opts = opts or {}
|
||||||
|
local vaults = telekasten.vaults
|
||||||
|
local _vaults = {}
|
||||||
|
for k, v in pairs(vaults) do
|
||||||
|
table.insert(_vaults, { k, v })
|
||||||
|
end
|
||||||
|
pickers.new(opts, {
|
||||||
|
prompt_title = "Vaults",
|
||||||
|
finder = finders.new_table({
|
||||||
|
results = _vaults,
|
||||||
|
entry_maker = function(entry)
|
||||||
|
return {
|
||||||
|
value = entry,
|
||||||
|
display = entry[1],
|
||||||
|
ordinal = entry[1],
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}),
|
||||||
|
sorter = conf.generic_sorter(opts),
|
||||||
|
attach_mappings = function(prompt_bufnr, map)
|
||||||
|
actions.select_default:replace(function()
|
||||||
|
actions.close(prompt_bufnr)
|
||||||
|
local selection = action_state.get_selected_entry()
|
||||||
|
-- print(vim.inspect(selection))
|
||||||
|
telekasten.chdir(selection.value[2])
|
||||||
|
end)
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
}):find()
|
||||||
|
end
|
||||||
|
|
||||||
|
M.vaults = vaults
|
||||||
|
|
||||||
|
return M
|
||||||
Reference in New Issue
Block a user