Change document structure

This changes document structure and adds comments for the platform-dependency
of regular expressions.

Fixes #746.
This commit is contained in:
Nuri Jung 2020-07-02 00:49:57 +09:00 committed by GitHub
parent d7d9f8fddc
commit c98632431a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,37 +10,35 @@ patterns.
To use this highlighter, associate regular expressions with styles in the To use this highlighter, associate regular expressions with styles in the
`ZSH_HIGHLIGHT_REGEXP` associative array, for example in `~/.zshrc`: `ZSH_HIGHLIGHT_REGEXP` associative array, for example in `~/.zshrc`:
* GNU-Linux
```zsh ```zsh
typeset -A ZSH_HIGHLIGHT_REGEXP typeset -A ZSH_HIGHLIGHT_REGEXP
ZSH_HIGHLIGHT_REGEXP+=('\bsudo\b' fg=123,bold) ZSH_HIGHLIGHT_REGEXP+=('\<sudo\>' fg=123,bold)
``` ```
This will highlight "sudo" only as a complete word, i.e., "sudo cmd", but not * BSD-based platforms
"sudoedit"
The syntax for values is the same as the syntax of "types of highlighting" of
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
manual page][zshzle-Character-Highlighting].
See also: [regular expressions tutorial][perlretut], zsh regexp operator `=~`
in [the `zshmisc(1)` manual page][zshmisc-Conditional-Expressions]
[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting
[perlretut]: http://perldoc.perl.org/perlretut.html
[zshmisc-Conditional-Expressions]: http://zsh.sourceforge.net/Doc/Release/Conditional-Expressions.html#Conditional-Expressions
### Cautions to BSD-based platform users
In BSD-based platform such as macOS, the regex metacharacters with leading backslash (`\`)
such as `\b`, `\w`, etc. are [not supported](https://stackoverflow.com/a/12696899).
So if you want something like the above example, you should use `[[:<:]]`(matches the beginning of a word)
with `[[:>:]]`(matches the end of a word). The complete example would be like:
```zsh ```zsh
typeset -A ZSH_HIGHLIGHT_REGEXP typeset -A ZSH_HIGHLIGHT_REGEXP
ZSH_HIGHLIGHT_REGEXP+=('[[:<:]]sudo[[:>:]]' fg=123,bold) ZSH_HIGHLIGHT_REGEXP+=('[[:<:]]sudo[[:>:]]' fg=123,bold)
``` ```
For other metacharacters, consider using This will highlight "sudo" only as a complete word, i.e., "sudo cmd", but not "sudoedit".
[POSIX ERE](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04) instead.
As in the example, some regex patterns are platform-dependent. Refer to the
manual page of `re_format` before applying regular expressions to avoid confusing
results. If portability matters, using only [POSIX ERE (extended regular
expressions)][POSIX_ERE] could be an option.
The syntax for values is the same as the syntax of "types of highlighting" of
the zsh builtin `$zle_highlight` array, which is documented in [the `zshzle(1)`
manual page][zshzle-Character-Highlighting].
See also: [regular expressions tutorial][perlretut], zsh regexp operator `=~`
in [the `zshmisc(1)` manual page][zshmisc-Conditional-Expressions], GNU
[POSIX_ERE]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04
[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting
[perlretut]: http://perldoc.perl.org/perlretut.html
[zshmisc-Conditional-Expressions]: http://zsh.sourceforge.net/Doc/Release/Conditional-Expressions.html#Conditional-Expressions