contrib/vim/hgtest.vim
author Jim Hague <jim.hague@acm.org>
Thu, 05 Apr 2012 12:31:21 +0100
branchstable
changeset 16364 f64b25f147d7
parent 12509 4746a2e4b239
child 18052 6db1642288c0
permissions -rw-r--r--
tests: avoid test-hup hanging on AIX test-hup hangs on AIX. Under ksh89 on AIX (the default shell), echo Hello; while [ ! -s not-there ]; do true; done produces no output while the loop executes. Replacing 'true' with 'sleep 0' fixes, as does using a less broken shell. ksh93 is fine. Update check-code.py to look for this, and make same change in test-serve.t. In fact test-serve works fine, probably because of additional commands between echo and the loop, but that's a subtlety not easy to test for.

" Vim syntax file
" Language: Mercurial unified tests
" Author: Steve Losh (steve@stevelosh.com)
"
" Add the following line to your ~/.vimrc to enable:
" au BufNewFile,BufRead *.t set filetype=hgtest
"
" If you want folding you'll need the following line as well:
" let hgtest_fold=1
"
" You might also want to set the starting foldlevel for hgtest files:
" autocmd Syntax hgtest setlocal foldlevel=1

if exists("b:current_syntax")
  finish
endif

syn include @Shell syntax/sh.vim

syn match hgtestComment /^[^ ].*$/
syn region hgtestOutput start=/^  [^$>]/ start=/^  $/ end=/\v.(\n\n*[^ ])\@=/me=s end=/^  [$>]/me=e-3 end=/^$/ fold containedin=hgtestBlock
syn match hgtestCommandStart /^  \$ / containedin=hgtestCommand
syn region hgtestCommand start=/^  \$ /hs=s+4,rs=s+4 end=/^  [^>]/me=e-3 end=/^  $/me=e-2 containedin=hgtestBlock contains=@Shell keepend
syn region hgtestBlock start=/^  /ms=e-2 end=/\v.(\n\n*[^ ])\@=/me=s end=/^$/me=e-1 fold keepend

hi link hgtestCommandStart Keyword
hi link hgtestComment Normal
hi link hgtestOutput Comment

if exists("hgtest_fold")
  setlocal foldmethod=syntax
endif

syn sync match hgtestSync grouphere NONE "^$"
syn sync maxlines=200

" It's okay to set tab settings here, because an indent of two spaces is specified
" by the file format.
setlocal tabstop=2 softtabstop=2 shiftwidth=2 expandtab

let b:current_syntax = "hgtest"