From c3253c9cca3bbbcb3f9cbeea7b61980665439e06 Mon Sep 17 00:00:00 2001 From: Matteo Raso Date: Wed, 18 Jan 2023 01:25:04 -0500 Subject: [PATCH] Signed-off-by: Matteo Raso Added syntax for Python decorators Decorators are an important part of the Python language, so GNU nano should give them a colour instead of ignoring them. For the syntax, I start the colouring at "@" and end it at either a blank space or a newline. The reason I stop the syntax after a blank space is because "@" doubles as an operator in Numpy and downstream packages, so we have to take care to not mess up the entire line if "@" is used that way. One slight problem is that the syntax colouring will also apply to any arguments passed to the decorator if a space isn't placed between the opening bracket and the decorator. e.g. "@dec(a)" will be one colour, which might be slightly unaesthetic. This isn't much of a problem though, since it can be easily fixed by going "@dec (a)" --- syntax/python.nanorc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/syntax/python.nanorc b/syntax/python.nanorc index e8ba17e2..be047fcb 100644 --- a/syntax/python.nanorc +++ b/syntax/python.nanorc @@ -33,6 +33,9 @@ color brightred "(^|[[:blank:]])#.*" color brightgreen start="'''([^'),]|$)" end="(^|[^(\])'''" color brightgreen start=""""([^"),]|$)" end="(^|[^(\])"""" +#Decorators. +color sky 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})" -- 2.38.1