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 #2111.
This commit is contained in:
parent
535abe2ba7
commit
9e142c6643
|
@ -44,10 +44,10 @@ add-highlighter shared/markdown/content/ regex ^(#+)(\h+)([^\n]+) 1:header
|
|||
|
||||
add-highlighter shared/markdown/content/ regex ^\h?((?:[\s\t]+)?[-\*])\h+[^\n]*(\n\h+[^-\*]\S+[^\n]*\n)*$ 0:list 1:bullet
|
||||
add-highlighter shared/markdown/content/ regex \B\+[^\n]+?\+\B 0:mono
|
||||
add-highlighter shared/markdown/content/ regex [^*](\*([^\s*]|([^\s*](\n?[^\n*])*[^\s*]))\*)[^*] 1:italic
|
||||
add-highlighter shared/markdown/content/ regex [^_](_([^\s_]|([^\s_](\n?[^\n_])*[^\s_]))_)[^_] 1:italic
|
||||
add-highlighter shared/markdown/content/ regex [^*](\*\*([^\s*]|([^\s*](\n?[^\n*])*[^\s*]))\*\*)[^*] 1:bold
|
||||
add-highlighter shared/markdown/content/ regex [^_](__([^\s_]|([^\s_](\n?[^\n_])*[^\s_]))__)[^_] 1:bold
|
||||
add-highlighter shared/markdown/content/ regex (?<!\*)(\*([^\s*]|([^\s*](\n?[^\n*])*[^\s*]))\*)(?!\*) 1:italic
|
||||
add-highlighter shared/markdown/content/ regex (?<!_)(_([^\s_]|([^\s_](\n?[^\n_])*[^\s_]))_)(?!_) 1:italic
|
||||
add-highlighter shared/markdown/content/ regex (?<!\*)(\*\*([^\s*]|([^\s*](\n?[^\n*])*[^\s*]))\*\*)(?!\*) 1:bold
|
||||
add-highlighter shared/markdown/content/ regex (?<!_)(__([^\s_]|([^\s_](\n?[^\n_])*[^\s_]))__)(?!_) 1:bold
|
||||
add-highlighter shared/markdown/content/ regex <(([a-z]+://.*?)|((mailto:)?[\w+-]+@[a-z]+[.][a-z]+))> 0:link
|
||||
add-highlighter shared/markdown/content/ regex ^\[[^\]\n]*\]:\h*([^\n]*) 1:link
|
||||
add-highlighter shared/markdown/content/ regex ^\h*(>\h*)+ 0:comment
|
||||
|
|
Loading…
Reference in New Issue
Block a user