view nanorc.d/php.nanorc @ 101:845e08259ab0

Syntax highlighting strings in PHP/HTML is complicated! Still has problems with colouring mixed HTML strings and object functions but this seems unavoidable with the regexes we have without losing colouring elsewhere
author IBBoard <dev@ibboard.co.uk>
date Mon, 02 Apr 2018 20:17:48 +0100
parents c432b0708d6d
children 7f49998de821
line wrap: on
line source

## Here is an example for PHP.

syntax "php" "\.(php[23457s~]?|html?)$"
magic "PHP script"
comment "//"

# Types.
color cyan "\<(array|bool|callable|const|float|global|int|object|string|var)\>"

# Directives and structure.
color cyan "\<(abstract|as|class|clone|(end)?declare|extends|function|implements|include(_once)?|inst(ance|ead)of|interface|namespace|new|private|protected|public|require(_once)?|static|trait|use|yield)\>"
color cyan "\<(case|catch|default|do|echo|else(if)?|end(for(each)?|if|switch|while)|final(ly)?|for(each)?|if|print|switch|throw|try|while)\>"
# Operators - note, we require proper spacing to prevent false positives
color red "(^|[[:space:]])(&&|\|\||>=?|<=?|===?|!==?)([[:space:]]|$)"
color red "!"

color magenta "\$this"

# Control flow.
color magenta "\<(break|continue|goto|return)\>"

# Numbers
color blue "\b[0-9]+\b"

# General HTML
color brightblue start="<[a-zA-Z/]" end=">"
color red "&[^;[[:space:]]]*;"
color green start="<!--" end="-->"
color white start="<!DOCTYPE" end=">"
# xhtml
color white start="<\?xml" end="\?>"

# Strings.
color yellow ""((\\")?(\.|[^"])*[^\\])?"" "'((\\')?(\.|[^'])*[^\\])?'"

# Comments.
color green "(^|[[:space:]]+)//.*"
color green start="/\*" end="\*/"

# PHP tags
color brightblue "<\?(php|=)|\?>"

# Trailing whitespace.
color ,green "[[:space:]]+$"