This avoids colorizing "match" in calls of re.match(). Reported-by: Stanislaw Majewski <essdoem@yahoo.com>
48 lines
1.5 KiB
Plaintext
48 lines
1.5 KiB
Plaintext
## Syntax highlighting for Python.
|
|
|
|
syntax python "\.py$"
|
|
header "^#!.*python"
|
|
magic "Python script"
|
|
comment "#"
|
|
|
|
# Alternative linter: pylint --exit-zero
|
|
linter pyflakes
|
|
|
|
# Function definitions.
|
|
color brightblue "def [[:alnum:]_]+"
|
|
# Keywords.
|
|
color brightcyan "\<(and|as|assert|async|await|break|case|class|continue|def|del)\>"
|
|
color brightcyan "\<(elif|else|except|finally|for|from|global|if|import|in|is)\>"
|
|
color brightcyan "\<(lambda|nonlocal|not|or|pass|raise|return|try|while|with|yield)\>"
|
|
# In Python 2 `print` and `exec` are keywords, but they are functions in Python 3,
|
|
# so only color these words when they are followed by whitespace, assuming that
|
|
# `print (x)` is a statement and `print(x)` a function call.
|
|
color brightcyan "\<(exec|print)([[:blank:]]|$)"
|
|
# Avoid coloring "match" in a call of re.match().
|
|
color brightcyan "\<match[[:blank:]]"
|
|
|
|
# Special values.
|
|
color brightmagenta "\<(False|None|True)\>"
|
|
|
|
# Decorators.
|
|
color cyan "@[[:alpha:]_][[:alnum:]_.]*"
|
|
|
|
# Mono-quoted strings.
|
|
color brightgreen "'([^'\]|\\.)*'|"([^"\]|\\.)*"|'''|""""
|
|
color normal "'''|""""
|
|
# Comments.
|
|
color brightred "(^|[[:blank:]])#.*"
|
|
# Triple-quoted strings.
|
|
color brightgreen start="'''([^'),]|$)" end="(^|[^(\])'''"
|
|
color brightgreen start=""""([^"),]|$)" end="(^|[^(\])""""
|
|
|
|
# Backslash escapes.
|
|
color lime "\\($|[\'"abfnrtv]|[0-3]?[0-7]?[0-7]|x[[:xdigit:]]{2})"
|
|
color lime "\\(N\{[[:alpha:]]+\}|u[[:xdigit:]]{4}|U[[:xdigit:]]{8})"
|
|
|
|
# Reminders.
|
|
color brightwhite,yellow "\<(FIXME|TODO|XXX)\>"
|
|
|
|
# Trailing whitespace.
|
|
color ,green "[[:space:]]+$"
|