Obsidian has block identifiers: Internal links - Obsidian Help as I understand (I haven’t played with it myself) it can either use automatically generated ids (not sure when and if they auto update?) or manually entered ids (which would be similar to SilverBullet’s Markdown/Anchors (just with a different syntax).
LogSeq also has block references, but I think automatically generates a block ID (a GUID I think) only when you link to it. It then puts a [id:: GUID-HERE]
marker in the file itself. I think it may hide this in the UI, but it’s there. The advantage is that it’s not subject to movement, the disadvantage is that it’s kind of ugly.
In SilverBullet in many places I simply use @pos
pointers as object references (e.g. for tasks) which basically point to the nth character in a page (e.g. [[index@123]]
). Obviously, this potentially shifts on every update, so these are only useful in e.g. queries and templates, not to write yourself.
While we could come up with a more clever and intuitive pointer mechanism, it will always be subject to edits to the page, which may swap sections, paragraphs and then those pointers becoming invalid. Honestly I think this in an inherent trade-off in using plain text files rather than some more fancy, perhaps database-like format, where it would be easier to maintain this stuff as you edit.
As to Lua scripting: this is still a developing feature (that you can follow in Space Lua: Making Space Script safer, simpler and unifying all the things), which indeed will allow you to create inline “widgets” that can do custom things. As much as I like Lua, I doubt it will actually solve this very fundamental problem of SilverBullet using text files that support arbitrary edits