You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Link pinning: pin a link to what it should track, from its right-click submenu or the palette — the symbol on its line (sym:Player), the kind of thing there (kind:class), or the exact line (line:<hash>). Anchors are requirements and combine, so sym:Player kind:class tells the file Player.cs apart from the class Player in it.
The pin lives in the link's markdown title rather than its text, so [the player](…/Player.cs:4 "sym:Player") tracks. Link text no longer affects anything, and a title that isn't a pin is left alone.
Embeds pin the same way, with a bind: line in the block. A drifted embed marks its header and names the line the code moved to; the update commands fix its target, ranges included (the window keeps its length). Pin one from the block's right-click menu.
New commands: Insert code link to a line; Pin code link to its symbol / kind / exact line; Unpin code link; Pin unpinned code links in this note / the whole vault.
Changed
Tracking is opt-in: only a pinned link is marked or updated. Any link whose text happened to name a symbol used to be tracked, so a retitled link read as broken and the update commands could rewrite links you hadn't asked about. Existing notes stop being tracked until pinned — run "Pin unpinned code links in the whole vault" once.
A link or embed pointing at a whole file no longer carries a :1 it never meant; the line goes along with the punctuation that introduces it (: in the editor presets, #L in the permalinks).
Moving a link onto another line that still matches its pin isn't drift — a link pinned to sym:TakeDamage is fine on either one in the file.
The broken mark now means one thing: nothing in the file matches the pin any more, whether renamed, removed, or rewritten.
Fixed
The JetBrains preset tracked nothing at all. A path was only recognised after a /, so templates that introduce it with = — JetBrains' path={path}, or a custom preset's file={abs} — never resolved: no stale marks, no hover preview, and the update commands silently did nothing.
A link to a whole file resolved to a same-named declaration inside it and got "updated" to point at the class: [Player](…/Player.cs:1) became Player.cs:4.
Internal
Link bindings and the link/fence rewriting helpers moved into the shared submodule.