syntax: python: avoid miscoloring stuff between two empty strings

The quotes of an empty string ('' or "") should be colored just like
those of a non-empty string, because otherwise the text *between* two
empty strings on the same line gets colored.

Add an extra rule to discolor triple quotes again to not make them
look like valid by themselves.

Also, remove six superfluous backslashes.

This addresses https://savannah.gnu.org/patch/?9801.
Reported-by: Ryan Westlund <rlwestlund@gmail.com>
This commit is contained in:
Benno Schulenberg 2019-05-11 17:52:41 +02:00
parent 4fb9f298c9
commit 8f1cd50f1e
1 changed files with 5 additions and 4 deletions

View File

@ -22,14 +22,15 @@ color brightcyan "\<(exec|print)([[:blank:]]|$)"
# Special values. # Special values.
color brightmagenta "\<(False|None|True)\>" color brightmagenta "\<(False|None|True)\>"
# Single-quoted strings. # Mono-quoted strings.
color brightgreen "'([^'\]|\\.)+'" color brightgreen "'([^'\]|\\.)*'|'''"
color brightgreen ""([^"\]|\\.)+"" color brightgreen ""([^"\]|\\.)*"|""""
color normal "'''|""""
# Comments. # Comments.
color brightred "(^|[[:blank:]])#.*" color brightred "(^|[[:blank:]])#.*"
# Triple-quoted strings. # Triple-quoted strings.
color brightgreen start="'''([^'),]|$)" end="(^|[^(\])'''" color brightgreen start="'''([^'),]|$)" end="(^|[^(\])'''"
color brightgreen start="\"\"\"([^"),]|$)" end="(^|[^(\])\"\"\"" color brightgreen start=""""([^"),]|$)" end="(^|[^(\])""""
# Reminders. # Reminders.
color brightwhite,yellow "(FIXME|TODO|XXX)" color brightwhite,yellow "(FIXME|TODO|XXX)"