Skip to content

Commit a02f6c0

Browse files
committed
refactor: use narrower/broader terms for creating extra notes
1 parent b1a1e01 commit a02f6c0

3 files changed

Lines changed: 64 additions & 64 deletions

File tree

lua/my/obsidian-depth-links.lua

Lines changed: 0 additions & 61 deletions
This file was deleted.

lua/my/obsidian-scope.lua

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
local H = {}
2+
local D = {}
3+
4+
---@param scope "Narrower" | "Broader"
5+
function H.goto_new_scoped_link(scope)
6+
local obsidian_api = require("obsidian.api")
7+
local obsidian_note = require("obsidian.note")
8+
9+
local current_note = obsidian_api.current_note()
10+
if not current_note then return end
11+
12+
local new_id = obsidian_api.input('New "' .. scope .. '" Note')
13+
if vim.fn.empty(new_id) == 1 then return end
14+
15+
local new_note = obsidian_note.create({ id = new_id, should_write = false }):write({
16+
template = Obsidian.opts.note.template, -- luacheck:ignore 113
17+
update_content = function(lines)
18+
return vim.list_extend(lines, {
19+
"## " .. (scope == "Narrower" and "Broader" or "Narrower"),
20+
"",
21+
"- " .. current_note:format_link(),
22+
})
23+
end,
24+
})
25+
26+
H.push_location_onto_tagstack(
27+
new_note.id,
28+
current_note:insert_text(
29+
string.format("- " .. new_note:format_link()),
30+
scope == "Narrower" and D.NARROWER_OPTS or D.BROADER_SECTION
31+
)
32+
)
33+
34+
vim.schedule(
35+
function()
36+
new_note:open({
37+
line = 1 + (new_note.has_frontmatter and new_note.frontmatter_end_line or 1),
38+
callback = vim.schedule_wrap(vim.cmd.checktime),
39+
})
40+
end
41+
)
42+
end
43+
44+
---@param tagname string
45+
---@param line_num integer
46+
function H.push_location_onto_tagstack(tagname, line_num)
47+
if line_num == 0 then return end
48+
local buf = vim.api.nvim_get_current_buf()
49+
local col = 3
50+
local off = 0
51+
local new_item = { tagname = tagname, from = { buf, line_num, col, off } }
52+
vim.fn.settagstack(vim.fn.win_getid(), { items = { new_item } }, "t")
53+
end
54+
55+
D.NARROWER_OPTS = { placement = "bot", section = { level = 2, header = "Narrower" } }
56+
D.BROADER_SECTION = { placement = "top", section = { level = 2, header = "Broader" } }
57+
58+
return {
59+
goto_new_narrower_note = function() H.goto_new_scoped_link("Narrower") end,
60+
goto_new_broader_note = function() H.goto_new_scoped_link("Broader") end,
61+
}

lua/plugins/integ/obsidian/obsidian.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
local my_obsidian_depth_links = require("my.obsidian-depth-links")
21
local my_obsidian_pinned_note = require("my.obsidian-pinned-note")
2+
local my_obsidian_scope = require("my.obsidian-scope")
33
local my_vault = require("my.vault")
44

55
---@module "lazy"
@@ -39,8 +39,8 @@ return {
3939
{ "<leader>vv", my_obsidian_pinned_note.open_pinned_note, desc = "Open Pinned Note", silent = true },
4040
{ "<leader>va", my_obsidian_pinned_note.append_to_pinned_note, desc = "Append To Pinned Note", silent = true },
4141
{ "<leader>vp", my_obsidian_pinned_note.pick_pinned_note, desc = "Pin/Unpin Note", silent = true },
42-
{ "<leader>vj", my_obsidian_depth_links.follow_new_child_link, desc = 'New "Down" Note', silent = true },
43-
{ "<leader>vk", my_obsidian_depth_links.follow_new_parent_link, desc = 'New "Up" Note', silent = true },
42+
{ "<leader>vj", my_obsidian_scope.goto_new_narrower_note, desc = "Create Narrower Note", silent = true },
43+
{ "<leader>vk", my_obsidian_scope.goto_new_broader_note, desc = "Create Broader Note", silent = true },
4444
{ "<leader>vy", ":Obsidian extract_note<cr>", desc = "Extract to Note", silent = true, mode = { "n", "v" } },
4545
{
4646
"<leader>vr",

0 commit comments

Comments
 (0)