* Add syntax highlighting for meson build system
It is basically a port of upstream syntax highlighting for vim,
but a bit less noisy (e.g numbers are not colored).
* meson.yaml: fix meson_options.txt detection
* meson.yaml: remove empty rules
* meson.yaml: add highlighting for operators and brackets
* meson.yaml: rearrange the keywords to be in alphabetical order
* meson.yaml: add highlighting for numbers
The patch is taken from:
https://github.com/zyedidia/micro/pull/2738
The mentioned file was already removed with the following commit:
fe3186ba9d
The `micro` binary itself takes now care of validating the syntax definitions
and informs about possible issues.
Different assemblers have different syntaxes for comments: ";", "#",
"!", "|", "@", "*" and finally C-like comments "//" and "/* ... */".
Micro currently highlights only ";". This is causing various problems
with broken highlighting with other types of comments (i.e. those not
recognized by micro as comments), when the text in those comments
contains special characters, causing wrong highlighting of text after
them.
On the other hand, highlighting comments like "#", "|" etc would cause
conflicts with other syntax elements, e.g. constants in ARM assembly,
preprocessor directives, arithmetic expressions etc.
So let's highlight at least C-like comments. They are quite commonly
used and they are not so likely to cause conflicts with other syntax
elements.
In rust, there are some prefixes that may be part of the string literal.
String literals of the form b"test" (and br##"test"## etc) are byte
strings (as opposed to unicode strings), and similarly, string literals
of the form c"test" are C zero-terminated strings. Hence, added optional
prefixes to each of the string regular expressions so the prefix will be
recognized as part of the string.
Built and tested after fix.
Co-authored-by: James Corey <jc-git@neniam.net>
Update from PR feedback:
Coalesce multiple statement rules into one.
Coalesce multiple constant.number into one.
Update from more PR feedback:
Fix special variables (starting with $)--var must start with $,
i.e. x$y is not a valid special var, but you can have x=$y.
Compiled and tested again with latest changes.
Co-authored-by: James Corey <jc-git@neniam.net>
* parser: Precise error message for missing `start` & `end` in region
* parser: Check and prompt for empty patterns and region properties
* syntax: Remove empty identifier pattern from log definition