Full, complete Transclusion in block-level referencing

Use case or problem

In Roam once you link a block X1 from page A and put it in page B (let’s call the new block X2, same block just different position), the two blocks are essentially the same. You edit one and the other immediately changes. This is not the case in Obsidian I think, ie there is a mother block X1 and a child block X2; of course if you change the mother block, that will reflect upon the child, but I think you cannot edit X2; it is embedded in page B but cannot be edited, correct? You’d need to go back to page A through the link and edit it there, I guess. Basically the two blocks are not really interchangeable in Obs, right? I appreciate that addressing this in md is not easy, I’m just trying to understand.

Proposed solution

I do not know if this is even possible technically, but perhaps we could introduce “block interchangeability”, for lack of a better name, or full, complete transclusion where the new block is editable and has the same “dignity” of the mother block like in Roam, and is not just a repetition, or a simple quote, of the mother block. I am not saying the current setup is bad, I appreciate that what has been done so far is exceptional as the devs are working in md.

Current workaround (optional)

There is no current workaround, apart form opening the mother note and editing the block there

7 Likes

Allowing a block to “live” in two documents simultaneously? I like that I idea.

I was actually trying to do just that yesterday.

DevonThink for Mac calls that “replicants” when it’s done with whole documents. Kind of like symlinks.

My solution for Obsidian and blocks was to pick a primary location, then transclude the block in a secondary location. Not ideal, but possibly good enough–and, as you say, true replication might not be possible technically.

2 Likes

I’m glad I got myself understood! Yeah I am really curious to see whether people think this might be doable from a dev perspective.

1 Like

@Aleph @MitchWagner Workflowy has somethng similar, it is called a ‘mirror version’. Change one the other changes and vice versa.
Hope this helps
Adrian

3 Likes

Seems like there will always be some level of trade-offs when going with a plain-text system over a database-driven solution, but I agree this would be nice. Visual Studio Code appears to handle this by allowing the user to edit the transcluded file directly in the pop-up preview window. I can’t recall if you can do this with specific blocks, but I believe so… In the world of coding, VS Code can peek definitions/references directly to the function that’s being referenced. In markdown world, this should just translate to a block. VS also gives you an app-level setting to decide whether those preview windows render your markdown as html preview or leave them as plain markdown. When left as plain markdown, you can just click into the preview and make quick changes, and since you’re editing the source file directly, all other transclusions should be pulling the same changes.

1 Like

I too like this FR. It happens to me, not often but fairly regularly, that I want to edit the transcluded block and have to go back to the “mother”.

Yep, this would definitely be very useful. As a non-coding Obs user I wonder if this in fact could only be done natively or also via a plug-in.

I don’t understand this, you can already have block A and transclude it in multiple places.
What are you asking exactly?
Are you asking to edit your transcluded document/block in place?

I’m not 100% sure I understood the original request, either, and I find the existing functionality works fine for me. It’s a matter of switching contexts from your current file to the transcluded file, making your edits, and returning. That’s not a serious pain point for me. But I mentioned VS Code as another way of accessing and editing the transcluded file without leaving the context of your current file.

Follow this:

And I will close this.

1 Like