Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(aliases): Fix wikilink resolution for aliases #1681

Open
wants to merge 1 commit into
base: v4
Choose a base branch
from

Conversation

necauqua
Copy link
Contributor

With markdownLinkResolution: "shortest", aka "+/- how Obsidian does it" and given pages A and nested/B which has an alias Z, if you try to link from A using [[Z]] it wouldn't work and get 404.

This is caused by alias slugs (nested/Z in this case, emitted by AliasRedirects) not being present in the allSlugs list which is used by the link transformer.

The fix is to compute the alias slugs in the frontmatter transformer and add them to allSlugs there.
Also we store them in file data to avoid recomputing them when emitting alias redirect pages.

Fixes #904

Note: given how currently the markdown/html transformers are ordered this doesn't really work.

Given pages A and nested/B which has an alias Z, here's the order which currently happens:

md-transformers(A) => html-transformers(A) =>
md-transformers(B) => html-transformers(B)

Since the nested/Z slug will get added when md-transformers(B) are run, but the slugs are used by html-transformers(A) when resolving it's links - the link [[Z]] in A will still 404

A fix for this is to split the parser into two stages - first apply the md-transformers to all files, and only then apply html-transformers to all files.

I did just that in a different commit, which is needed for this one to work correctly.

Depends on #1675

@necauqua necauqua force-pushed the alias-resolution-fix branch 2 times, most recently from 5b66ac8 to 5122560 Compare January 4, 2025 17:52
necauqua added a commit to necauqua/quartz that referenced this pull request Jan 4, 2025
Backlink calculation is quadratic, similar to breadcrumbs before the
fix.

Apply a similar fix here.

Also added alias resolution, so this depends on `file.data.aliases`
from jackyzha0#1681, but that can be commented out easily if needed.
Copy link
Collaborator

@aarnphm aarnphm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oops I forgot to include all suggestions in the review my b

@necauqua necauqua force-pushed the alias-resolution-fix branch from 5122560 to 5bcf67d Compare January 8, 2025 11:19
With markdownLinkResolution: "shortest", aka "+/- how Obsidian does it"
and given pages A and nested/B which has an alias Z, if you try to link
from A using [[Z]] it wouldn't work and get 404.

This is caused by alias slugs (nested/Z in this case, emitted by
AliasRedirects) not being present in the `allSlugs` list which is used
by the link transformer.

The fix is to compute the alias slugs in the frontmatter transformer
and add them to `allSlugs` there.
Also we store them in file data to avoid recomputing them when emitting
alias redirect pages.

Fixes jackyzha0#904

Note: given how currently the markdown/html transformers are ordered
this doesn't really work.

Given pages A and nested/B which has an alias Z, here's the order which
currently happens:

md-transformers(A) => html-transformers(A) =>
md-transformers(B) => html-transformers(B)

Since the nested/Z slug will get added when md-transformers(B) are run,
but the slugs are used by html-transformers(A) when resolving it's
links - the link [[Z]] in A will still 404

A fix for this is to split the parser into two stages - first apply the
md-transformers to all files, and only then apply html-transformers to
all files.

I did just that in a different commit, which is needed for this one to
work correctly.
@necauqua necauqua force-pushed the alias-resolution-fix branch from 5bcf67d to 32b95a0 Compare January 8, 2025 11:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

AliasRedirects not working when files are moved into folders
2 participants