Skip to content

Curly DQuotes and Inline Code Conflicts #54

@tajmone

Description

@tajmone

There's a problem with how curly quotes are currently handled, and this examples breaks syntax highlighting:

Some path `"C:\home\"` another path `"C:\path"` and some code `xxx`.

The problem here is that while Asciidoctor correctly treats the backticks surrounding the quoted paths as inline code, the syntax treats them as curly-quotes ending and starting markers — i.e. the latter starts a scope that leads the rest of the line to be mismatched, and the last inline code is skipped, with the problem that the "pseudo-string" scopes meta.curlyquoteinner.double.asciidoc and markup.curlyquote.double.asciidoc never pop-out, and keep waiting for a mismatched closing delimiter.

Possible solutions:

  • Design some thorough tests to cover this problem, especially when these nest into each other. Always ensure that these tests compile as valid documents, so we can compare Asciidoctor effective behavior.
  • Always assume that an `" encountered outside of a meta.curlyquoteinner/markup.curlyquote.double context is an inline code delimiter — or at least, give it a higher priority.
  • Enforce a bail-out mechanism to ensure that meta.curlyquoteinner.double.asciidoc doesn't carry on fover, e.g. by gracefully popping-out when an empty line is encountered (I assume that even in the Asciidoctor parser doesn't carry across paragraphs or blocks).
  • Investigate whether it might be better to just drop the "pseudo-string" scope altogether, and just treat the string delimiters on their own (although I fear this might render it very hard to distinguish between line code followed by double quotes and curly quotes delimiters).

Metadata

Metadata

Assignees

No one assigned

    Labels

    💀 bugSomething isn't working⚠️ URGENTHigh Priority Issue

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions