given, the item is marked as concealable.
Whether or not it is actually concealed depends on the value of the
'conceallevel' option. The 'concealcursor' option is used to decide whether
concealable items in the current line are displayed unconcealed to be able to
edit the line.
Another way to conceal text is with |matchadd()|, but internally this works a
bit differently |syntax-vs-match|.
concealends *:syn-concealends*
When the "concealends" argument is given, the start and end matches of
the region, but not the contents of the region, are marked as concealable.
Whether or not they are actually concealed depends on the setting on the
'conceallevel' option. The ends of a region can only be concealed separately
in this way when they have their own highlighting via "matchgroup". The
|synconcealed()| function can be used to retrieve information about conealed
items.
cchar *:syn-cchar*
*E844*
The "cchar" argument defines the character shown in place of the item
when it is concealed (setting "cchar" only makes sense when the conceal
argument is given.) If "cchar" is not set then the default conceal
character defined in the 'listchars' option is used. The character cannot be
a control character such as Tab. Example: >
:syntax match Entity "&" conceal cchar=&
See |hl-Conceal| for highlighting.
contained *:syn-contained*
When the "contained" argument is given, this item will not be recognized at
the top level, but only when it is mentioned in the "contains" field of
another match. Example: >
:syntax keyword Todo TODO contained
:syntax match Comment "//.*" contains=Todo
display *:syn-display*
If the "display" argument is given, this item will be skipped when the
detected highlighting will not be displayed. This will speed up highlighting,
by skipping this item when only finding the syntax state for the text that is
to be displayed.
Generally, you can use "display" for match and region items that meet these
conditions:
- The item does not continue past the end of a line. Example for C: A region
for a "/*" comment can't contain "display", because it continues on the next
line.
- The item does not contain items that continue past the end of the line or
make it continue on the next line.
- The item does not change the size of any item it is contained in. Example
for C: A match with "\\$" in a preprocessor match can't have "display",
because it may make that preprocessor match shorter.
- The item does not allow other items to match that didn't match otherwise,
and that item may extend the match too far. Example for C: A match for a
"//" comment can't use "display", because a "/*" inside that comment would
match then and start a comment which extends past the end of the line.
Examples, for the C language, where "display" can be used:
- match with a number
- match with a label
transparent *:syn-transparent*
If the "transparent" argument is given, this item will not be highlighted
itself, but will take the highlighting of the item it is contained in. This
is useful for syntax items that don't need any highlighting but are used
only to skip over a part of the text.
The "contains=" argument is also inherited from the item it is contained in,
unless a "contains" argument is given for the transparent item itself. To
avoid that unwanted items are contained, use "contains=NONE". Example, which
highlights words in strings, but makes an exception for "vim": >
:syn match myString /'[^']*'/ contains=myWord,myVim
:syn match myWord /\<[a-z]*\>/ contained
:syn match myVim /\<vim\>/ transparent contained contains=NONE
:hi link myString String
:hi link myWord Comment
Since the "myVim" match comes after "myWord" it is the preferred match (last
match in the same position overrules an earlier one). The "transparent"
argument makes the "myVim" match use the same highlighting as "myString". But
it does not contain anything. If the "contains=NONE" argument