Automatic/inline update of links to headers and blocks when they are modified (no extra dialog window)

Made an account to like and comment on this issue. As I use internal links in headers, and just did a note name overhaul, essentially all of my header links (which are the main way I link) are broken. This is causing serious frustration with Obsidian/reconsideration of using Obsidian, please fix. Been great otherwise.

3 Likes

@shinyben : you make a good, and very important point. I have the same frustration after using the Numbered headings plug-in for a while.

There is light at the end of the tunnel, though, because this is now on Licat’s short term road map.

6 Likes

Woot! :grinning:

#save-a-click_save-a-life

At least in the backwards, 1980’s, f-key driven, MS-DOS based world of the modern Electronic Health Record (EHR)…

Imagine Sarah McLaughlin singing “In the arms of the angels,” but with sad doctors and patients instead of neglected puppies and kittens…

Non Sequitur Sundays!

(But for serious, we must automate to liberate [from the clicks]… Even in the manna that is Obsidian)

+1 small vote for Homo habilis and Obsidian tool goodness

+1 large vote for Homo sapiens sapiens and its war on clicks

(Also, +1 for das feature)

I have it from the horse’s mouth (Licat’s) directly:

Preserve links after renaming headings has already been implemented - you just have to trigger the rename using the right click menu on the heading. Blocks don’t get renamed often so we haven’t prioritized it.

My reply:

The right click trigger is not workable in practice. You have to remember to do it. It should be an automatic thing, like the automatic adjustment of links when file names are changed.

Licat’s explanation:

Unfortunately, monitoring heading changes automatically is impractical from a performance perspective. Automatic rename would mean that the program has to constantly monitor what you’re typing in the document.
Constantly checking if you’re editing a heading or not a heading, whether that heading has references to it. It also doesn’t know when your rename is finished.

So, that means this feature request will never be implemented natively in Obsidian. @WhiteNoise can therefore close this topic.

1 Like

This is something that more realistically can be implemented

2 Likes

Huh, I vaguely thought that links and headings were indexed, and so could be updated at least when the page saves. Also, “Preserve links after renaming headings and blocks” is on the short-term roadmap (as pointed out by @I-d-as), so I’m not sure what that means.

I would never have thought to use a context menu to rename headings. I’ll try to remember to do it, but I don’t expect much success.

1 Like

It means a rename block (similar to rename header) will be added. I understand it is confusing and will be renamed.

1 Like

@CawlinTeffid Sorry to mislead you. All this time, I had been thinking, in the works, was a feature that immediately automatically updated links to a heading when it was edited. I hadn’t seen this thread obviously. The problem I have with the context menu is forgetting to use it or accidentally editing headings. Still processing this. Oh well. Better to know than not.

It’s not your fault, I do think the trello card was poorly worded (for brevity).
Check out Block-reference-count plugin, it’s a good solution for knowing when to use the rename functionality and maybe some of that will be implemented in core.

2 Likes

Thanks. Feeling better already.

1 Like

The Block-reference-count plug-in has the problem Licat referred to when he answered me about the automatic updating of links to headers: it slows down Obsidian. I used the plug-in, and noticed that when you type there is a distinct, irritating lag before the text is rendered.

The dev went through several iterations to improve it, which he did, but a lag remained nevertheless, so I gave up on that plug-in.

I know you saw me make this comment in Discord, but I just repeat it here for others.

1 Like

@CawlinTeffid the context menu to adjust links to headers is useful if you just change one header name.

I use the Number headings plug-in, which adds a number to all of the headers and subheaders in a note. If you then add or delete only 1 header, the plug-in adjusts all the header numbers on that page, bypassing the context menu.

1 Like

The problem for me isn’t how many headings I want to change, it’s that headings are part of the text, and I change text by selecting and typing, not by right-clicking. When I inevitably click a broken block/heading link, I suppose I’ll be able to find the text and update the link without too much work, it’ll just be an annoyance. (Just clarifying, not expecting any action.)

2 Likes

@CawlinTeffid I agree with that, and that is what I told Licat in the Discord discussion yesterday. I have used the right-click option once, even though there have been instances where I should. I just forget to do so, probably because, as you indicate, it is unnatural.

I have found a workaround that I will be using from now on since Licat has formally stated the automatic update of links to headers will not be implemented.

I have a vault with many long notes in which there are headers and subheaders. I need the Number heading plug-in to help me navigate those notes.

I also use transclusions a lot. If it is just a paragraph I want to transclude, a block reference is sufficient; even for a header with 3-4 paragraphs it is doable to transclude each one separately so as to avoid linking to the header.

But when a header has more than 4 paragraphs it is not doable. So, then I would make my transclusion link to the header and all the paragraphs below until the next header (of equal level or 1 higher) will be shown. That is where the automatic update would be required.

Merging those paragraphs into 1 big block of text to not have to link to the header is not acceptable for readability in Live Preview and Reading mode.

So, here is what can be done: place a <br> between paragraphs, which effectively merges them into 1 block of text, but the <br>, which is not visible when not in focus (at least in my set-up), renders them as separate paras in LP and Reading mode.

You can then link to/transclude that one block of text, and that way a change in the header above will not break the link.

3 Likes

You can add a block reference to a heading (I just checked after reading your post). It’s a little ugly because it takes on the heading formatting, but it is properly hidden in reading view.

@CawlinTeffid if you use Reading mode a lot then that is fine, I guess. I am in LP all the time so I won’t use that.

Another thing to bear in mind is that in the Outline pane that block ref will also show.

1 Like

This has to be added manually right? (you need to make a hex code or a human readable ID with the format ^... next to the heading)

If you have Plugin Creases installed it will hides the block ref at heading level (and also helps render Latex and Links) in the Outline pane. It’s made by Liam Cain, now a team member, so I hope it will be incorporated into Obsidian one day. Would be a nice QoL improvement.

I’m a noob, but can the implementation be like below?

  • Treat the Heading reference just like block reference (attaching a UUID to it. This make the UX consistent.
  • Have 2 embed syntaxes, one to embed only the heading, and the other to embed the heading with its content.
1 Like

If I have # Some header %^123abc% it shows up in the outline even with the Creases plug-in enabled.

So, how can I prevent the %^123abc% to show in the Outline pane?