syntaxes: use one regex for coloring quoted strings, to avoid overlap
Quoted strings cannot start within another quoted string and end after that other string has ended. Therefore single-quoted and double-quoted strings should (as much as possible) be colorized by a single rule, so that overlapping colorations are avoided. (This also fixes a double typo in the PHP syntax (\. --> \\.) that has been there since the PHP syntax was added in 2008, commit 90ee8ee4.) This fixes https://savannah.gnu.org/bugs/?61387. Bug existed since each of these syntaxes was introduced, the oldest ones around 2006, a few others around 2015. The one that got it right was the Lua syntax from 2011.master
parent
375b30507e
commit
485eb18d83
|
@ -17,7 +17,7 @@ color cyan "\<[[:upper:]_[:digit:]]+\>"
|
||||||
color red "\<[-_.0-9]+\>"
|
color red "\<[-_.0-9]+\>"
|
||||||
|
|
||||||
# Strings:
|
# Strings:
|
||||||
color red ""[^"]*"" "'[^']*'"
|
color red ""[^"]*"|'[^']*'"
|
||||||
|
|
||||||
# Backticks:
|
# Backticks:
|
||||||
color green "`[^`]*`"
|
color green "`[^`]*`"
|
||||||
|
|
|
@ -41,7 +41,7 @@ color blue "\<(awk|cat|cd|chmod|chown|cp|echo|env|find|e?grep|ln|make|mkdir|mv|p
|
||||||
## Comments (doesn't work that well):
|
## Comments (doesn't work that well):
|
||||||
color yellow "(^|[[:space:]])#.*"
|
color yellow "(^|[[:space:]])#.*"
|
||||||
## Strings (doesn't work that well):
|
## Strings (doesn't work that well):
|
||||||
color brightyellow ""(\\.|[^\"])*"" "'(\\.|[^'])*'"
|
color brightyellow ""(\\.|[^\"])*"|'(\\.|[^'])*'"
|
||||||
## Trailing space is bad!
|
## Trailing space is bad!
|
||||||
color ,green "[[:space:]]+$"
|
color ,green "[[:space:]]+$"
|
||||||
## Mixed whitespace is also bad.
|
## Mixed whitespace is also bad.
|
||||||
|
|
|
@ -34,8 +34,7 @@ color red "\<[0-9]+i\>"
|
||||||
|
|
||||||
# Strings and characters; slightly fuzzy.
|
# Strings and characters; slightly fuzzy.
|
||||||
color red "\<(true|false|nil|iota|_)\>"
|
color red "\<(true|false|nil|iota|_)\>"
|
||||||
color red "'(\\.|[^'])+'"
|
color red ""(\\.|[^"])*"|'(\\.|[^'])+'"
|
||||||
color red ""(\\.|[^"])*""
|
|
||||||
color red start=""(\\.|[^"])*\\[[:blank:]]*$" end="^(\\.|[^"])*""
|
color red start=""(\\.|[^"])*\\[[:blank:]]*$" end="^(\\.|[^"])*""
|
||||||
|
|
||||||
# Comments.
|
# Comments.
|
||||||
|
|
|
@ -17,7 +17,7 @@ color cyan "\<([0-9]+|0x[0-9A-Fa-f]+)\>"
|
||||||
color cyan "\<(true|false|null|undefined)\>"
|
color cyan "\<(true|false|null|undefined)\>"
|
||||||
|
|
||||||
# Strings.
|
# Strings.
|
||||||
color brightmagenta ""(\\.|[^"])*"" "'(\\.|[^'])*'" "`(\\.|[^`])*`"
|
color brightmagenta ""(\\.|[^"])*"|'(\\.|[^'])*'|`(\\.|[^`])*`"
|
||||||
# Comments.
|
# Comments.
|
||||||
color brightblue "(^|[[:blank:]])//.*"
|
color brightblue "(^|[[:blank:]])//.*"
|
||||||
color brightblue start="/\*" end="\*/"
|
color brightblue start="/\*" end="\*/"
|
||||||
|
|
|
@ -26,7 +26,7 @@ color cyan "(^|[[:blank:]])#.*"
|
||||||
color ,green "[[:space:]]+$"
|
color ,green "[[:space:]]+$"
|
||||||
|
|
||||||
# Strings and others
|
# Strings and others
|
||||||
color yellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"
|
color yellow ""(\\.|[^"])*"|'(\\.|[^'])*'"
|
||||||
color green "[][{}():;|`$<>!=&\]"
|
color green "[][{}():;|`$<>!=&\]"
|
||||||
|
|
||||||
# Basic variable names
|
# Basic variable names
|
||||||
|
|
|
@ -25,7 +25,7 @@ color brightcyan "\<(and|or|xor)\>"
|
||||||
color magenta "\<(break|continue|goto|return)\>"
|
color magenta "\<(break|continue|goto|return)\>"
|
||||||
|
|
||||||
# Strings.
|
# Strings.
|
||||||
color brightyellow ""(\.|[^"])*"" "'(\.|[^'])*'"
|
color brightyellow ""(\\.|[^"])*"|'(\\.|[^'])*'"
|
||||||
|
|
||||||
# Comments.
|
# Comments.
|
||||||
color brightblue "(^|[[:blank:]]+)//.*"
|
color brightblue "(^|[[:blank:]]+)//.*"
|
||||||
|
|
|
@ -24,8 +24,7 @@ color brightcyan "\<(exec|print)([[:blank:]]|$)"
|
||||||
color brightmagenta "\<(False|None|True)\>"
|
color brightmagenta "\<(False|None|True)\>"
|
||||||
|
|
||||||
# Mono-quoted strings.
|
# Mono-quoted strings.
|
||||||
color brightgreen "'([^'\]|\\.)*'|'''"
|
color brightgreen "'([^'\]|\\.)*'|"([^"\]|\\.)*"|'''|""""
|
||||||
color brightgreen ""([^"\]|\\.)*"|""""
|
|
||||||
color normal "'''|""""
|
color normal "'''|""""
|
||||||
# Comments.
|
# Comments.
|
||||||
color brightred "(^|[[:blank:]])#.*"
|
color brightred "(^|[[:blank:]])#.*"
|
||||||
|
|
|
@ -33,7 +33,7 @@ color brightred "\$\{[#!]?([-@*#?$!]|[0-9]+|[[:alpha:]_][[:alnum:]_]*)(\[([[:bla
|
||||||
color cyan "(^|[[:blank:]])#.*"
|
color cyan "(^|[[:blank:]])#.*"
|
||||||
|
|
||||||
# Strings.
|
# Strings.
|
||||||
color brightyellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"
|
color brightyellow ""(\\.|[^"])*"|'(\\.|[^'])*'"
|
||||||
|
|
||||||
# Trailing whitespace.
|
# Trailing whitespace.
|
||||||
color ,green "[[:space:]]+$"
|
color ,green "[[:space:]]+$"
|
||||||
|
|
|
@ -17,7 +17,7 @@ color green "\<(alarm|auto_load_pkg|bsearch|catclose|catgets|catopen|ccollate|cc
|
||||||
# Syntax:
|
# Syntax:
|
||||||
color brightblue "\<proc[[:blank:]]|\{|\}"
|
color brightblue "\<proc[[:blank:]]|\{|\}"
|
||||||
color green "\(|\)|\;|`|\\|\$|<|>|!|=|&|\|"
|
color green "\(|\)|\;|`|\\|\$|<|>|!|=|&|\|"
|
||||||
color brightyellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"
|
color brightyellow ""(\\.|[^"])*"|'(\\.|[^'])*'"
|
||||||
color brightred "\$\{?[0-9A-Za-z_!@#$*?-]+\}?"
|
color brightred "\$\{?[0-9A-Za-z_!@#$*?-]+\}?"
|
||||||
|
|
||||||
# Trailing whitespace:
|
# Trailing whitespace:
|
||||||
|
|
Loading…
Reference in New Issue