Define a different filetype syntax on regions of a buffer.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
autoload
doc
plugin
README

README

This is a mirror of http://www.vim.org/scripts/script.php?script_id=4168

DESCRIPTION
This plugin provides commands and functions to set up regions in the current
buffer that either use a syntax different from the buffer's 'filetype', or
completely ignore the syntax.

SEE ALSO
- If you also want different buffer options (like indent settings, etc.) for
  each syntax region, the OnSyntaxChange.vim plugin (vimscript #4085) allows
  you to dynamically change the buffer options as you move through the buffer.

RELATED WORKS
- If the highlighting doesn't work properly, you could alternatively edit the
  range(s) in a separate scratch buffer. Plugins like NrrwRgn (vimscript #3075)
  provide commands to set these up, with automatic syncing back to the
  original buffer.

SOURCE
The code to include a different syntax in a region is based on
    http://vim.wikia.com/wiki/Different_syntax_highlighting_within_regions_of_a_file

USAGE
For quick, ad-hoc manipulation of the syntax withing a range of lines, the
following commands are provided:

:[range]SyntaxIgnore    Ignore the buffer's filetype syntax for the current
                        line / lines in [range]. (Top-level keywords will
                        still be highlighted.)
                        This can be a useful fix when some text fragments
                        confuse the syntax highlighting. (For example, when
                        buffer syntax set to an inlined here-document is
                        negatively affected by the foreign code surrounding
                        the here-document.)

:[range]SyntaxInclude {filetype}
                        Use the {filetype} syntax for the current line / lines
                        in [range].

                        Line numbers in [range] are fixed; i.e. they do not
                        adapt to inserted / deleted lines. But when in a
                        range, the last line ($) is interpreted as "end of
                        file".

For finer control and use in custom mappings or syntax tweaks, the following
functions can be used. You'll find the details directly in the
.vim/autoload/SyntaxRange.vim implementation file.

SyntaxRange#Include( startPattern, endPattern, filetype, ... )
                        Use the {filetype} syntax for the region defined by
                        {startPattern} and {endPattern}.
SyntaxRange#IncludeEx( regionDefinition, filetype )
                        Use the {filetype} syntax for the region defined by
                        {regionDefinition}.

EXAMPLE
To highlight the text between the markers
    @begin=c@
    int i = 42;
    @end=c@
with C syntax, and make the markers themselves fade into the background:
    :call SyntaxRange#Include('@begin=c@', '@end=c@', 'c', 'NonText')

To highlight inline patches inside emails:
    :call SyntaxRange#IncludeEx('start="^changeset\|^Index: \|^diff \|^--- .*\%( ----\)\@<!$" skip="^[-+@       ]" end="^$"', 'diff')
To install this automatically for the "mail" filetype, put above line into a
script in ~/.vim/after/syntax/mail/SyntaxInclude.vim