Home Explore Blog CI



neovim

62th chunk of `runtime/doc/syntax.txt`
650ab34e0f7f7a742208128fb86e2e6c5f62dbea44e6800a0000000100000fa2
 lines).  Otherwise the end is assumed to be at the end of the
  line (or group of continued lines).
- When a match with a sync pattern is found, the rest of the line (or group of
  continued lines) is searched for another match.  The last match is used.
  This is used when a line can contain both the start and the end of a region
  (e.g., in a C-comment like `/* this */`, the last "*/" is used).

There are two ways how a match with a sync pattern can be used:
1. Parsing for highlighting starts where redrawing starts (and where the
   search for the sync pattern started).  The syntax group that is expected
   to be valid there must be specified.  This works well when the regions
   that cross lines cannot contain other regions.
2. Parsing for highlighting continues just after the match.  The syntax group
   that is expected to be present just after the match must be specified.
   This can be used when the previous method doesn't work well.  It's much
   slower, because more text needs to be parsed.
Both types of sync patterns can be used at the same time.

Besides the sync patterns, other matches and regions can be specified, to
avoid finding unwanted matches.

[The reason that the sync patterns are given separately, is that mostly the
search for the sync point can be much simpler than figuring out the
highlighting.  The reduced number of patterns means it will go (much)
faster.]

					    *syn-sync-grouphere* *E393* *E394*
    :syntax sync match {sync-group-name} grouphere {group-name} "pattern" ..

	Define a match that is used for syncing.  {group-name} is the
	name of a syntax group that follows just after the match.  Parsing
	of the text for highlighting starts just after the match.  A region
	must exist for this {group-name}.  The first one defined will be used.
	"NONE" can be used for when there is no syntax group after the match.

						*syn-sync-groupthere*
    :syntax sync match {sync-group-name} groupthere {group-name} "pattern" ..

	Like "grouphere", but {group-name} is the name of a syntax group that
	is to be used at the start of the line where searching for the sync
	point started.	The text between the match and the start of the sync
	pattern searching is assumed not to change the syntax highlighting.
	For example, in C you could search backwards for "/*" and "*/".  If
	"/*" is found first, you know that you are inside a comment, so the
	"groupthere" is "cComment".  If "*/" is found first, you know that you
	are not in a comment, so the "groupthere" is "NONE".  (in practice
	it's a bit more complicated, because the "/*" and "*/" could appear
	inside a string.  That's left as an exercise to the reader...).

    :syntax sync match ..
    :syntax sync region ..

	Without a "groupthere" argument.  Define a region or match that is
	skipped while searching for a sync point.

						*syn-sync-linecont*
    :syntax sync linecont {pattern}

	When {pattern} matches in a line, it is considered to continue in
	the next line.	This means that the search for a sync point will
	consider the lines to be concatenated.

If the "maxlines={N}" argument is given too, the number of lines that are
searched for a match is restricted to N.  This is useful if you have very
few things to sync on and a slow machine.  Example: >
   :syntax sync maxlines=100

You can clear all sync settings with: >
   :syntax sync clear

You can clear specific sync patterns with: >
   :syntax sync clear {sync-group-name} ..

==============================================================================
12. Listing syntax items		*:syntax* *:sy* *:syn* *:syn-list*

This command lists all the syntax items: >

    :sy[ntax] [list]

To show the syntax items for one syntax group: >

    :sy[ntax] list {group-name}

To list the syntax groups in one cluster:			*E392*	 >

    :sy[ntax] list @{cluster-name}

See above for other arguments for the ":syntax" command.

Note that the ":syntax" command can be abbreviated to ":sy", although ":syn"
is mostly used, because it looks

Title: Vim Syntax Synchronization: Sync Patterns, Grouphere, Groupthere, and Listing Syntax Items
Summary
This section continues explaining sync patterns and details the two methods: 'grouphere' and 'groupthere'. 'Grouphere' specifies the syntax group following the match, while 'groupthere' specifies the syntax group at the start of the line where the sync point search began. It also describes how to define regions or matches to be skipped during sync point searches, and the 'linecont' argument for handling line continuation. The 'maxlines={N}' argument restricts the search to N lines. Finally, it explains how to list syntax items and groups using the `:syntax list` command.