I try to picture a solution that could be implemented manually. I like Christian Tietze’s way of thinking regarding automatic link suggestions in The Archive — something that we in Obsidianland take for granted.
More specifically, I try to adopt the Wizard of Oz experimental paradigm he mentions in the article: trying to break down the desired feature into steps that you could reproduce manually; doing it in a software agnostic way.
From this perspective, I think line numbers are too fragile: if you just count the lines until you find the referenced block and include that number in the referring text, you could end up with something like ((other file.md|42)) and that would work. But if you edit other file.md above the referenced block, line 42 wouldn’t be the right one anymore. Furthermore, lines wouldn’t allow you to reference sentences in the middle of a paragraph, for example.
I believe there should be some kind of identifier (be it a timestamp, a hash, a UUID or something shorter, etc.) and a syntax that defines the boundaries of the referenced block. And that reference should only be created on a per-need basis. So, in other file.md I’d have “Lorem ipsum ((wH473V3r|this right here is important)) dolor sit amet.” and reference it with ((wH473V3r)) anywhere I need to.
This would give obsidian all the info it needed to do its magic, like hiding IDs, replacing them with referenced text and synchronising changes. But, more importantly, it would allow anyone in the future to do it manually.
I think you’re right. There will be a lot of plugins to choose from and, as much as I’d like to believe I’d be able to code one of them, the truth is I’ll probably just benefit from someone else’s work. This is the limit of my contribution. I hope it helps, even if it’s only by fuelling the discussion.