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

Code regions for markdown #2400

Merged
merged 2 commits into from
Sep 18, 2018
Merged

Commits on Sep 18, 2018

  1. markdown.kak: Clean up code-block and code-span formatting.

    Previously, a code block was anything between triple-backtics, including inline
    blocks:
    
            some text ```
            not a codeblock, but highlighted as one
            ``` other text
    
    and even if the closing backticks had the wrong indent:
    
            ```
            this is a code block containing a triple backtick
                ```
            this is still a code block, but Kakoune thinks otherwise
            ```
    
    Now we use the -match-capture flag to ensure the start and end fences have
    exactly the same indent.
    
    Previously, the generic code-block region was defined first, which meant that
    it took priority over all the language-specific highlighters. Now we define
    the generic code-block highlighting *after* the others, which fixes mawww#2304.
    
    Previously, code-spans were defined as ordinary inline markup, but in Markdown
    ordinary formatting doesn't work inside code-spans. Therefore, they are now
    regions unto themselves, defined according to section 6.3 of the CommonMark
    spec <https://spec.commonmark.org/0.28/#code-spans>, which addresses a comment
    on mawww#2111.
    Screwtapello committed Sep 18, 2018
    Configuration menu
    Copy the full SHA
    535abe2 View commit details
    Browse the repository at this point in the history
  2. markdown.kak: Use lookahead/lookbehind assertions for formatting spans.

    Previously, one of the syntaxes for italic was (greatly summarized) something
    like this:
    
        [^_]_[^_]+_[^_]
    
    That is to say, the regex matched the blanks on both sides of the italic span,
    as well as the actual span content. That means that if you had consecutive
    italic words:
    
        _some_ _italic_ _words_
    
    ...only the odd-numbered words would be highlighted: the space after "_some_"
    was counted as part of that span, so it wasn't available as part of "_italic_"
    and therefore "_italic_" wouldn't be highlighted. Likewise, if the first word
    in a buffer was italic, it wouldn't be highlighted because the first underscore
    was not preceded by a non-underscore character!
    
    Now we use lookahead/lookbehind assertions, which don't count as part of the
    matched span, so consecutive spans don't interfere with one another.
    
    Fixes mawww#2111.
    Screwtapello committed Sep 18, 2018
    Configuration menu
    Copy the full SHA
    9e142c6 View commit details
    Browse the repository at this point in the history