Block id unicode letters

Use case or problem

According to the documentation

Block identifiers can only consist of letters, numbers, and dashes.

In reality only English letters are being accepted.

It may be inconvenient especially if you writing content in the other language, you might want to add a block link at the same language

There was a similar bug closed a year ago because @WhiteNoise decided

Not a bug. We don’t support it. Only ASCII letters and numbers.

While it might be the case, it is not reflected in the documentation.

Proposed solution

I reverse engineered the source code and found that we just need to modify code in 5 places

  • replace /^\^([a-zA-Z0-9\-]+)$/ with /^\^([\p{L}0-9\-]+)$/u
    • app.js - 2 occurrences
    • worker.js - 1 occurrence
  • replace /^\^([a-zA-Z0-9\-]+)(?=$|\n$|\n\n)/ with /^\^([\p{L}0-9\-]+)(?=$|\n$|\n\n)/u
    • app.js - 1 occurrence
    • worker.js - 1 occurrence

Current workaround (optional)

I don’t think it is possible to workaround those things as the modifications required in the unexposed internal Obsidian API.

Related feature requests (optional)

1 Like