Mercurial > hg
comparison contrib/vim/hgtest.vim @ 12509:4746a2e4b239
contrib/vim: add a syntax file for unified tests
This syntax file adds:
* Highlighting of comments, output, and commands (with sh highlighting
in commands).
* Folding for output and blocks of commands+output.
* Setting tab/indent settings to 2 spaces, because that's what's defined by the
unified test file format.
author | Steve Losh <steve@stevelosh.com> |
---|---|
date | Sun, 26 Sep 2010 20:43:43 -0400 |
parents | |
children | 6db1642288c0 |
comparison
equal
deleted
inserted
replaced
12508:7e508cf16438 | 12509:4746a2e4b239 |
---|---|
1 " Vim syntax file | |
2 " Language: Mercurial unified tests | |
3 " Author: Steve Losh (steve@stevelosh.com) | |
4 " | |
5 " Add the following line to your ~/.vimrc to enable: | |
6 " au BufNewFile,BufRead *.t set filetype=hgtest | |
7 " | |
8 " If you want folding you'll need the following line as well: | |
9 " let hgtest_fold=1 | |
10 " | |
11 " You might also want to set the starting foldlevel for hgtest files: | |
12 " autocmd Syntax hgtest setlocal foldlevel=1 | |
13 | |
14 if exists("b:current_syntax") | |
15 finish | |
16 endif | |
17 | |
18 syn include @Shell syntax/sh.vim | |
19 | |
20 syn match hgtestComment /^[^ ].*$/ | |
21 syn region hgtestOutput start=/^ [^$>]/ start=/^ $/ end=/\v.(\n\n*[^ ])\@=/me=s end=/^ [$>]/me=e-3 end=/^$/ fold containedin=hgtestBlock | |
22 syn match hgtestCommandStart /^ \$ / containedin=hgtestCommand | |
23 syn region hgtestCommand start=/^ \$ /hs=s+4,rs=s+4 end=/^ [^>]/me=e-3 end=/^ $/me=e-2 containedin=hgtestBlock contains=@Shell keepend | |
24 syn region hgtestBlock start=/^ /ms=e-2 end=/\v.(\n\n*[^ ])\@=/me=s end=/^$/me=e-1 fold keepend | |
25 | |
26 hi link hgtestCommandStart Keyword | |
27 hi link hgtestComment Normal | |
28 hi link hgtestOutput Comment | |
29 | |
30 if exists("hgtest_fold") | |
31 setlocal foldmethod=syntax | |
32 endif | |
33 | |
34 syn sync match hgtestSync grouphere NONE "^$" | |
35 syn sync maxlines=200 | |
36 | |
37 " It's okay to set tab settings here, because an indent of two spaces is specified | |
38 " by the file format. | |
39 setlocal tabstop=2 softtabstop=2 shiftwidth=2 expandtab | |
40 | |
41 let b:current_syntax = "hgtest" |