2016-07-28 19:52:31 +00:00
|
|
|
# Colors
|
|
|
|
|
|
|
|
|
|
This help page aims to cover two aspects of micro's syntax highlighting engine:
|
|
|
|
|
|
2020-01-02 20:10:28 +00:00
|
|
|
* How to create colorschemes and use them.
|
2020-02-08 23:31:06 +00:00
|
|
|
* How to create syntax files to add to the list of languages micro can
|
|
|
|
|
highlight.
|
2017-10-11 13:16:53 +00:00
|
|
|
|
2017-03-27 15:11:51 +00:00
|
|
|
## Colorschemes
|
2016-07-28 19:52:31 +00:00
|
|
|
|
2024-03-22 16:58:44 +00:00
|
|
|
To change your colorscheme, press `Ctrl-e` in micro to bring up the command
|
2018-02-20 20:11:31 +00:00
|
|
|
prompt, and type:
|
2019-09-02 18:40:50 +00:00
|
|
|
|
2018-02-20 20:11:31 +00:00
|
|
|
```
|
2020-01-02 20:10:28 +00:00
|
|
|
set colorscheme twilight
|
2018-02-20 20:11:31 +00:00
|
|
|
```
|
2019-09-02 18:40:50 +00:00
|
|
|
|
2018-02-20 20:11:31 +00:00
|
|
|
(or whichever colorscheme you choose).
|
|
|
|
|
|
2020-01-02 20:10:28 +00:00
|
|
|
Micro comes with a number of colorschemes by default. The colorschemes that you
|
|
|
|
|
can display will depend on what kind of color support your terminal has.
|
|
|
|
|
|
2020-02-13 23:15:32 +00:00
|
|
|
Omit color-link default "[fg color],[bg color]" will make the background color match the terminal's, and transparency if set.
|
|
|
|
|
|
2020-01-02 20:10:28 +00:00
|
|
|
Modern terminals tend to have a palette of 16 user-configurable colors (these
|
|
|
|
|
colors can often be configured in the terminal preferences), and additional
|
|
|
|
|
color support comes in three flavors.
|
|
|
|
|
|
|
|
|
|
* 16-color: A colorscheme that uses the 16 default colors will always work but
|
2020-02-08 23:31:06 +00:00
|
|
|
will only look good if the 16 default colors have been configured to the
|
|
|
|
|
user's liking. Using a colorscheme that only uses the 16 colors from the
|
|
|
|
|
terminal palette will also preserve the terminal's theme from other
|
|
|
|
|
applications since the terminal will often use those same colors for other
|
|
|
|
|
applications. Default colorschemes of this type include `simple` and
|
|
|
|
|
`solarized`.
|
|
|
|
|
|
|
|
|
|
* 256-color: Almost all terminals support displaying an additional 240 colors
|
|
|
|
|
on top of the 16 user-configurable colors (creating 256 colors total).
|
|
|
|
|
Colorschemes which use 256-color are portable because they will look the
|
|
|
|
|
same regardless of the configured 16-color palette. However, the color
|
|
|
|
|
range is fairly limited due to the small number of colors available.
|
|
|
|
|
Default 256-color colorschemes include `monokai`, `twilight`, `zenburn`,
|
|
|
|
|
`darcula` and more.
|
2020-01-02 20:10:28 +00:00
|
|
|
|
|
|
|
|
* true-color: Some terminals support displaying "true color" with 16 million
|
2020-02-08 23:31:06 +00:00
|
|
|
colors using standard RGB values. This mode will be able to support
|
|
|
|
|
displaying any colorscheme, but it should be noted that the user-configured
|
|
|
|
|
16-color palette is ignored when using true-color mode (this means the
|
|
|
|
|
colors while using the terminal emulator will be slightly off). Not all
|
2025-05-26 16:25:07 +00:00
|
|
|
terminals support true color but at this point most do (see below).
|
2020-02-08 23:31:06 +00:00
|
|
|
True-color colorschemes in micro typically end with `-tc`, such as
|
2021-08-03 04:07:14 +00:00
|
|
|
`solarized-tc`, `atom-dark`, `material-tc`, etc... If true color is not
|
2020-02-08 23:31:06 +00:00
|
|
|
enabled but a true color colorscheme is used, micro will do its best to
|
|
|
|
|
approximate the colors to the available 256 colors.
|
2019-09-02 18:40:50 +00:00
|
|
|
|
|
|
|
|
Here is the list of colorschemes:
|
2016-07-28 19:52:31 +00:00
|
|
|
|
2018-01-03 03:46:24 +00:00
|
|
|
### 256 color
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2018-01-03 03:46:24 +00:00
|
|
|
These should work and look nice in most terminals. I recommend these
|
|
|
|
|
themes the most.
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2019-09-02 18:40:50 +00:00
|
|
|
* `monokai` (also the `default` colorscheme)
|
2018-01-03 03:46:24 +00:00
|
|
|
* `zenburn`
|
2018-01-08 02:02:24 +00:00
|
|
|
* `gruvbox`
|
2018-01-03 03:46:24 +00:00
|
|
|
* `darcula`
|
|
|
|
|
* `twilight`
|
2018-01-08 02:02:24 +00:00
|
|
|
* `railscast`
|
2021-08-03 01:13:05 +00:00
|
|
|
* `bubblegum` (light theme)
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2018-01-08 02:02:24 +00:00
|
|
|
### 16 color
|
|
|
|
|
|
|
|
|
|
These may vary widely based on the 16 colors selected for your terminal.
|
|
|
|
|
|
2019-09-02 18:40:50 +00:00
|
|
|
* `simple`
|
2020-02-08 23:31:06 +00:00
|
|
|
* `solarized` (must have the solarized color palette in your terminal to use
|
|
|
|
|
this colorscheme properly)
|
2018-01-08 02:02:24 +00:00
|
|
|
* `cmc-16`
|
2019-09-02 18:40:50 +00:00
|
|
|
* `cmc-paper`
|
|
|
|
|
* `geany`
|
2018-01-08 02:02:24 +00:00
|
|
|
|
2018-01-03 03:46:24 +00:00
|
|
|
### True color
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2025-05-26 16:25:07 +00:00
|
|
|
Micro enables true color support by default as long as it detects that the
|
|
|
|
|
terminal supports it (which is usually indicated by the environment variable
|
|
|
|
|
`COLORTERM` being set to `truecolor`, `24bit` or `24-bit`). You can also force
|
|
|
|
|
enabling it unconditionally by setting the option `truecolor` to `on` (or
|
|
|
|
|
alternatively by setting the environment variable `MICRO_TRUECOLOR` to 1, which
|
|
|
|
|
is supported for backward compatibility).
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2018-01-03 03:46:24 +00:00
|
|
|
* `solarized-tc`: this is the solarized colorscheme for true color.
|
2021-08-03 04:07:14 +00:00
|
|
|
* `atom-dark`: this colorscheme is based off of Atom's "dark" colorscheme.
|
2018-01-03 03:46:24 +00:00
|
|
|
* `cmc-tc`: A true colour variant of the cmc theme. It requires true color to
|
2024-03-22 16:58:44 +00:00
|
|
|
look its best. Use cmc-16 if your terminal doesn't support true color.
|
2018-01-03 03:46:24 +00:00
|
|
|
* `gruvbox-tc`: The true color version of the gruvbox colorscheme
|
2020-02-10 19:53:27 +00:00
|
|
|
* `material-tc`: Colorscheme based off of Google's Material Design palette
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
## Creating a Colorscheme
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2018-02-20 20:11:31 +00:00
|
|
|
Micro's colorschemes are also extremely simple to create. The default ones can
|
2020-02-08 23:31:06 +00:00
|
|
|
be found
|
|
|
|
|
[here](https://github.com/zyedidia/micro/tree/master/runtime/colorschemes).
|
2016-07-28 19:52:31 +00:00
|
|
|
|
2020-02-08 23:31:06 +00:00
|
|
|
Custom colorschemes should be placed in the `~/.config/micro/colorschemes`
|
|
|
|
|
directory.
|
2020-01-02 20:10:28 +00:00
|
|
|
|
2024-03-22 16:58:44 +00:00
|
|
|
A number of custom directives are placed in a `.micro` file. Colorschemes are
|
2020-01-02 20:10:28 +00:00
|
|
|
typically only 18-30 lines in total.
|
2016-07-28 19:52:31 +00:00
|
|
|
|
2020-01-02 20:10:28 +00:00
|
|
|
To create the colorscheme you need to link highlight groups with
|
2017-10-11 13:16:53 +00:00
|
|
|
actual colors. This is done using the `color-link` command.
|
2016-07-28 19:52:31 +00:00
|
|
|
|
|
|
|
|
For example, to highlight all comments in green, you would use the command:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
color-link comment "green"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Background colors can also be specified with a comma:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
color-link comment "green,blue"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This will give the comments a blue background.
|
|
|
|
|
|
|
|
|
|
If you would like no foreground you can just use a comma with nothing in front:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
color-link comment ",blue"
|
|
|
|
|
```
|
|
|
|
|
|
2020-05-17 16:48:34 +00:00
|
|
|
You can also put bold, italic, or underline in front of the color:
|
2016-07-28 19:52:31 +00:00
|
|
|
|
|
|
|
|
```
|
|
|
|
|
color-link comment "bold red"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
There are three different ways to specify the color.
|
|
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
Color terminals usually have 16 colors that are preset by the user. This means
|
|
|
|
|
that you cannot depend on those colors always being the same. You can use those
|
|
|
|
|
colors with the names `black, red, green, yellow, blue, magenta, cyan, white`
|
|
|
|
|
and the bright variants of each one (brightblack, brightred...).
|
2016-07-28 19:52:31 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
Then you can use the terminals 256 colors by using their numbers 1-256 (numbers
|
|
|
|
|
1-16 will refer to the named colors).
|
2016-07-28 19:52:31 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
If the user's terminal supports true color, then you can also specify colors
|
|
|
|
|
exactly using their hex codes. If the terminal is not true color but micro is
|
2024-03-22 16:58:44 +00:00
|
|
|
told to use a true color colorscheme it will attempt to map the colors to the
|
2017-10-11 13:16:53 +00:00
|
|
|
available 256 colors.
|
2016-07-28 19:52:31 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
Generally colorschemes which require true color terminals to look good are
|
|
|
|
|
marked with a `-tc` suffix and colorschemes which supply a white background are
|
|
|
|
|
marked with a `-paper` suffix.
|
2016-07-28 19:52:31 +00:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2016-08-12 18:17:28 +00:00
|
|
|
Here is a list of the colorscheme groups that you can use:
|
|
|
|
|
|
|
|
|
|
* default (color of the background and foreground for unhighlighted text)
|
|
|
|
|
* comment
|
|
|
|
|
* identifier
|
|
|
|
|
* constant
|
|
|
|
|
* statement
|
2017-01-20 19:32:34 +00:00
|
|
|
* symbol
|
2016-08-12 18:17:28 +00:00
|
|
|
* preproc
|
|
|
|
|
* type
|
|
|
|
|
* special
|
|
|
|
|
* underlined
|
|
|
|
|
* error
|
|
|
|
|
* todo
|
2020-12-20 05:35:57 +00:00
|
|
|
* selection (Color of the text selection)
|
2017-10-11 13:16:53 +00:00
|
|
|
* statusline (Color of the statusline)
|
2024-10-18 23:48:27 +00:00
|
|
|
* statusline.inactive (Color of the statusline of inactive split panes)
|
|
|
|
|
* statusline.suggestions (Color of the autocomplete suggestions menu)
|
2017-10-11 13:16:53 +00:00
|
|
|
* tabbar (Color of the tabbar that lists open files)
|
2024-10-18 23:48:27 +00:00
|
|
|
* tabbar.active (Color of the active tab in the tabbar)
|
2017-10-11 13:16:53 +00:00
|
|
|
* indent-char (Color of the character which indicates tabs if the option is
|
|
|
|
|
enabled)
|
2016-08-12 18:17:28 +00:00
|
|
|
* line-number
|
2024-10-18 23:48:27 +00:00
|
|
|
* gutter-info
|
2016-08-12 18:17:28 +00:00
|
|
|
* gutter-error
|
|
|
|
|
* gutter-warning
|
2020-12-20 05:35:57 +00:00
|
|
|
* diff-added
|
|
|
|
|
* diff-modified
|
|
|
|
|
* diff-deleted
|
2016-08-12 18:17:28 +00:00
|
|
|
* cursor-line
|
2016-09-07 21:17:51 +00:00
|
|
|
* current-line-number
|
|
|
|
|
* color-column
|
2017-03-01 14:30:35 +00:00
|
|
|
* ignore
|
2020-12-20 05:35:57 +00:00
|
|
|
* scrollbar
|
2017-10-11 13:16:53 +00:00
|
|
|
* divider (Color of the divider between vertical splits)
|
2020-12-20 05:35:57 +00:00
|
|
|
* message (Color of messages in the bottom line of the screen)
|
|
|
|
|
* error-message (Color of error messages in the bottom line of the screen)
|
2024-03-13 19:21:27 +00:00
|
|
|
* match-brace (Color of matching brackets when `matchbracestyle` is set to `highlight`)
|
2024-03-25 20:06:06 +00:00
|
|
|
* hlsearch (Color of highlighted search results when `hlsearch` is enabled)
|
|
|
|
|
* tab-error (Color of tab vs space errors when `hltaberrors` is enabled)
|
|
|
|
|
* trailingws (Color of trailing whitespaces when `hltrailingws` is enabled)
|
2016-08-12 18:17:28 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
Colorschemes must be placed in the `~/.config/micro/colorschemes` directory to
|
|
|
|
|
be used.
|
2016-08-12 18:17:28 +00:00
|
|
|
|
2017-03-01 14:30:35 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
|
|
In addition to the main colorscheme groups, there are subgroups that you can
|
2017-10-11 13:16:53 +00:00
|
|
|
specify by adding `.subgroup` to the group. If you're creating your own custom
|
|
|
|
|
syntax files, you can make use of your own subgroups.
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
If micro can't match the subgroup, it'll default to the root group, so it's
|
|
|
|
|
safe and recommended to use subgroups in your custom syntax files.
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
For example if `constant.string` is found in your colorscheme, micro will us
|
|
|
|
|
that for highlighting strings. If it's not found, it will use constant instead.
|
|
|
|
|
Micro tries to match the largest set of groups it can find in the colorscheme
|
2024-04-08 10:04:38 +00:00
|
|
|
definitions, so if, for example `constant.bool.true` is found then micro will
|
2020-02-08 23:31:06 +00:00
|
|
|
use that. If `constant.bool.true` is not found but `constant.bool` is found
|
2024-03-22 16:58:44 +00:00
|
|
|
micro will use `constant.bool`. If not, it uses `constant`.
|
2017-03-01 14:30:35 +00:00
|
|
|
|
|
|
|
|
Here's a list of subgroups used in micro's built-in syntax files.
|
|
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
* comment.bright (Some filetypes have distinctions between types of comments)
|
2017-03-01 14:30:35 +00:00
|
|
|
* constant.bool
|
|
|
|
|
* constant.bool.true
|
|
|
|
|
* constant.bool.false
|
2024-03-22 16:58:44 +00:00
|
|
|
* constant.number
|
2017-03-01 14:30:35 +00:00
|
|
|
* constant.specialChar
|
|
|
|
|
* constant.string
|
2024-03-22 16:58:44 +00:00
|
|
|
* constant.string.url
|
2017-10-11 13:16:53 +00:00
|
|
|
* identifier.class (Also used for functions)
|
2017-03-01 14:30:35 +00:00
|
|
|
* identifier.macro
|
|
|
|
|
* identifier.var
|
2017-10-11 13:16:53 +00:00
|
|
|
* preproc.shebang (The #! at the beginning of a file that tells the os what
|
|
|
|
|
script interpreter to use)
|
2017-11-08 05:23:18 +00:00
|
|
|
* symbol.brackets (`{}()[]` and sometimes `<>`)
|
2017-10-11 13:16:53 +00:00
|
|
|
* symbol.operator (Color operator symbols differently)
|
|
|
|
|
* symbol.tag (For html tags, among other things)
|
|
|
|
|
* type.keyword (If you want a special highlight for keywords like `private`)
|
2017-03-01 14:30:35 +00:00
|
|
|
|
|
|
|
|
In the future, plugins may also be able to use color groups for styling.
|
2024-03-24 18:55:26 +00:00
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2024-03-21 17:37:51 +00:00
|
|
|
Last but not least it's even possible to use `include` followed by the
|
|
|
|
|
colorscheme name as string to include a different colorscheme within a new one.
|
|
|
|
|
Additionally the groups can then be extended or overwritten. The `default.micro`
|
|
|
|
|
theme can be seen as an example, which links to the chosen default colorscheme.
|
2017-10-11 13:16:53 +00:00
|
|
|
|
2017-03-27 15:11:51 +00:00
|
|
|
## Syntax files
|
2016-07-28 19:52:31 +00:00
|
|
|
|
2019-09-13 15:07:11 +00:00
|
|
|
The syntax files are written in yaml-format and specify how to highlight
|
2017-10-11 13:16:53 +00:00
|
|
|
languages.
|
2016-07-28 19:52:31 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
Micro's builtin syntax highlighting tries very hard to be sane, sensible and
|
|
|
|
|
provide ample coverage of the meaningful elements of a language. Micro has
|
2024-03-22 16:58:44 +00:00
|
|
|
syntax files built in for over 100 languages now! However, there may be
|
2020-02-08 23:31:06 +00:00
|
|
|
situations where you find Micro's highlighting to be insufficient or not to
|
|
|
|
|
your liking. The good news is that you can create your own syntax files, and
|
|
|
|
|
place them in `~/.config/micro/syntax` and Micro will use those instead.
|
2017-03-01 14:30:35 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
### Filetype definition
|
2017-03-26 22:58:08 +00:00
|
|
|
|
|
|
|
|
You must start the syntax file by declaring the filetype:
|
2016-08-12 18:17:28 +00:00
|
|
|
|
|
|
|
|
```
|
2017-03-26 22:58:08 +00:00
|
|
|
filetype: go
|
2016-08-12 18:17:28 +00:00
|
|
|
```
|
|
|
|
|
|
2020-01-02 20:10:28 +00:00
|
|
|
### Detect definition
|
2016-08-12 18:17:28 +00:00
|
|
|
|
2017-03-27 15:11:51 +00:00
|
|
|
Then you must provide information about how to detect the filetype:
|
2016-08-12 18:17:28 +00:00
|
|
|
|
2017-03-26 22:58:08 +00:00
|
|
|
```
|
|
|
|
|
detect:
|
|
|
|
|
filename: "\\.go$"
|
|
|
|
|
```
|
|
|
|
|
|
2020-02-08 23:31:06 +00:00
|
|
|
Micro will match this regex against a given filename to detect the filetype.
|
2024-03-24 01:07:58 +00:00
|
|
|
|
|
|
|
|
In addition to the `filename` regex (or even instead of it) you can provide
|
2024-03-28 00:20:16 +00:00
|
|
|
a `header` regex that will check the first line of the file. For example:
|
2017-03-26 22:58:08 +00:00
|
|
|
|
|
|
|
|
```
|
|
|
|
|
detect:
|
|
|
|
|
filename: "\\.ya?ml$"
|
2024-03-24 01:07:58 +00:00
|
|
|
header: "%YAML"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This is useful in cases when the given file name is not sufficient to determine
|
|
|
|
|
the filetype, e.g. with the above example, if a YAML file has no `.yaml`
|
|
|
|
|
extension but may contain a `%YAML` directive in its first line.
|
|
|
|
|
|
|
|
|
|
`filename` takes precedence over `header`, i.e. if there is a syntax file that
|
|
|
|
|
matches the file with a filetype by the `filename` and another syntax file that
|
|
|
|
|
matches the same file with another filetype by the `header`, the first filetype
|
|
|
|
|
will be used.
|
|
|
|
|
|
|
|
|
|
Finally, in addition to `filename` and/or `header` (but not instead of them)
|
|
|
|
|
you may also provide an optional `signature` regex which is useful for resolving
|
|
|
|
|
ambiguities when there are multiple syntax files matching the same file with
|
|
|
|
|
different filetypes. If a `signature` regex is given, micro will match a certain
|
|
|
|
|
amount of first lines in the file (this amount is determined by the `detectlimit`
|
|
|
|
|
option) against this regex, and if any of the lines match, this syntax file's
|
|
|
|
|
filetype will be preferred over other matching filetypes.
|
|
|
|
|
|
|
|
|
|
For example, to distinguish C++ header files from C and Objective-C header files
|
|
|
|
|
that have the same `.h` extension:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
detect:
|
|
|
|
|
filename: "\\.c(c|pp|xx)$|\\.h(h|pp|xx)?$"
|
|
|
|
|
signature: "namespace|template|public|protected|private"
|
2017-03-26 22:58:08 +00:00
|
|
|
```
|
2016-08-12 18:17:28 +00:00
|
|
|
|
2020-01-02 20:10:28 +00:00
|
|
|
### Syntax rules
|
2016-08-12 18:17:28 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
Next you must provide the syntax highlighting rules. There are two types of
|
2020-02-08 23:31:06 +00:00
|
|
|
rules: patterns and regions. A pattern is matched on a single line and usually
|
|
|
|
|
a single word as well. A region highlights between two patterns over multiple
|
2017-10-11 13:16:53 +00:00
|
|
|
lines and may have rules of its own inside the region.
|
2016-08-12 18:17:28 +00:00
|
|
|
|
2017-03-26 22:58:08 +00:00
|
|
|
Here are some example patterns in Go:
|
2016-08-12 18:17:28 +00:00
|
|
|
|
|
|
|
|
```
|
2017-03-26 22:58:08 +00:00
|
|
|
rules:
|
|
|
|
|
- special: "\\b(break|case|continue|default|go|goto|range|return)\\b"
|
|
|
|
|
- statement: "\\b(else|for|if|switch)\\b"
|
|
|
|
|
- preproc: "\\b(package|import|const|var|type|struct|func|go|defer|iota)\\b"
|
2016-08-12 18:17:28 +00:00
|
|
|
```
|
|
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
The order of patterns does matter as patterns lower in the file will overwrite
|
|
|
|
|
the ones defined above them.
|
2017-03-26 22:58:08 +00:00
|
|
|
|
|
|
|
|
And here are some example regions for Go:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
- constant.string:
|
|
|
|
|
start: "\""
|
2017-03-28 00:53:08 +00:00
|
|
|
end: "\""
|
2017-03-26 22:58:08 +00:00
|
|
|
rules:
|
|
|
|
|
- constant.specialChar: "%."
|
|
|
|
|
- constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]"
|
|
|
|
|
- constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})"
|
|
|
|
|
|
|
|
|
|
- comment:
|
|
|
|
|
start: "//"
|
|
|
|
|
end: "$"
|
|
|
|
|
rules:
|
|
|
|
|
- todo: "(TODO|XXX|FIXME):?"
|
|
|
|
|
|
|
|
|
|
- comment:
|
|
|
|
|
start: "/\\*"
|
|
|
|
|
end: "\\*/"
|
|
|
|
|
rules:
|
|
|
|
|
- todo: "(TODO|XXX|FIXME):?"
|
|
|
|
|
```
|
|
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
Notice how the regions may contain rules inside of them. Any inner rules that
|
|
|
|
|
are matched are then skipped when searching for the end of the region. For
|
|
|
|
|
example, when highlighting `"foo \" bar"`, since `\"` is matched by an inner
|
|
|
|
|
rule in the region, it is skipped. Likewise for `"foo \\" bar`, since `\\` is
|
|
|
|
|
matched by an inner rule, it is skipped, and then the `"` is found and the
|
|
|
|
|
string ends at the correct place.
|
2017-03-26 22:58:08 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
You may also explicitly mark skip regexes if you don't want them to be
|
|
|
|
|
highlighted. For example:
|
2017-03-28 00:53:08 +00:00
|
|
|
|
|
|
|
|
```
|
|
|
|
|
- constant.string:
|
|
|
|
|
start: "\""
|
|
|
|
|
end: "\""
|
|
|
|
|
skip: "\\."
|
|
|
|
|
```
|
2017-03-26 22:58:08 +00:00
|
|
|
|
|
|
|
|
#### Includes
|
2016-08-12 18:17:28 +00:00
|
|
|
|
2017-10-11 13:16:53 +00:00
|
|
|
You may also include rules from other syntax files as embedded languages. For
|
|
|
|
|
example, the following is possible for html:
|
2016-08-12 18:17:28 +00:00
|
|
|
|
|
|
|
|
```
|
2017-03-26 22:58:08 +00:00
|
|
|
- default:
|
|
|
|
|
start: "<script.*?>"
|
|
|
|
|
end: "</script.*?>"
|
|
|
|
|
rules:
|
|
|
|
|
- include: "javascript"
|
|
|
|
|
|
|
|
|
|
- default:
|
|
|
|
|
start: "<style.*?>"
|
|
|
|
|
end: "</style.*?>"
|
|
|
|
|
rules:
|
|
|
|
|
- include: "css"
|
2016-08-12 18:17:28 +00:00
|
|
|
```
|
2024-04-21 13:41:49 +00:00
|
|
|
|
|
|
|
|
Note that nested include (i.e. including syntax files that include other syntax
|
|
|
|
|
files) is not supported yet.
|
2024-04-23 19:21:51 +00:00
|
|
|
|
|
|
|
|
### Default syntax highlighting
|
|
|
|
|
|
|
|
|
|
If micro cannot detect the filetype of the file, it falls back to using the
|
|
|
|
|
default syntax highlighting for it, which highlights just the bare minimum:
|
|
|
|
|
email addresses, URLs etc.
|
|
|
|
|
|
|
|
|
|
Just like in other cases, you can override the default highlighting by adding
|
|
|
|
|
your own custom `default.yaml` file to `~/.config/micro/syntax`.
|
|
|
|
|
|
|
|
|
|
For example, if you work with various config files that use the `#` sign to mark
|
|
|
|
|
the beginning of a comment, you can use the following custom `default.yaml` to
|
|
|
|
|
highlight those comments by default:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
filetype: unknown
|
|
|
|
|
|
|
|
|
|
detect:
|
|
|
|
|
filename: ""
|
|
|
|
|
|
|
|
|
|
rules:
|
|
|
|
|
- comment: "(^|\\s)#.*$"
|
|
|
|
|
```
|