|
| 1 | +let b:is_bash=1 |
| 2 | +runtime! syntax/sh.vim |
| 3 | + |
| 4 | +syn keyword shsStatement test_done |
| 5 | +syn keyword shsStatement test_set_editor test_set_index_version test_decode_color lf_to_nul nul_to_q q_to_nul q_to_cr q_to_tab qz_to_tab_space append_cr remove_cr generate_zero_bytes sane_unset test_tick test_pause debug test_commit test_merge test_commit_bulk test_chmod test_modebits test_unconfig test_config test_config_global write_script test_unset_prereq test_set_prereq test_have_prereq test_declared_prereq test_verify_prereq test_external test_external_without_stderr test_path_is_file test_path_is_dir test_path_exists test_dir_is_empty test_file_not_empty test_path_is_missing test_line_count test_file_size list_contains test_must_fail_acceptable test_must_fail test_might_fail test_expect_code test_i18ncmp test_i18ngrep verbose test_must_be_empty test_cmp_rev test_cmp_fspath test_seq test_when_finished test_atexit test_create_repo test_ln_s_add test_write_lines perl test_bool_env test_skip_or_die mingw_test_cmp test_env test_match_signal test_copy_bytes nongit depacketize hex2oct test_set_hash test_detect_hash test_oid_init test_oid_cache test_oid test_oid_to_path test_set_port test_bitmap_traversal test_path_is_hidden test_subcommand |
| 6 | +syn keyword shsStatement test_cmp test_cmp_config test_cmp_bin packetize |
| 7 | + |
| 8 | +syn region shsTest fold start="\<test_expect_\w\+\(_hd\)\?\>" end="$" contains=shsTestTitle |
| 9 | +syn region shsTest fold start="\<test_expect_\w\+\(_hd\)\?\>\s\+\<[A-Z_,]\+\>" end="$" contains=shsPrereq |
| 10 | +syn region shsTest fold start="\<test_lazy_prereq\>\s\+\<[A-Z_,]\+\>" end="$" contains=shsPrereqLazy |
| 11 | + |
| 12 | +syn keyword shsTestStatement contained containedin=shsTest test_expect_success test_expect_failure test_expect_unstable test_lazy_prereq test_expect_success_hd test_expect_failure_hd test_expect_unstable_hd |
| 13 | + |
| 14 | +syn region shsTestTitle contained start=' 'hs=s+1 end=' 'me=e-1 nextgroup=shsTestBody contains=shSingleQuote,shDoubleQuote |
| 15 | + |
| 16 | +" multiple line body |
| 17 | +syn region shsTestBody contained transparent excludenl matchgroup=shQuote start=+ '\\\?$+hs=s+1,rs=e end=+'$+ contains=@shSubShList |
| 18 | +syn region shsTestBody contained transparent excludenl matchgroup=shQuote start=+ "\\\?$+hs=s+1,rs=e end=+"$+ contains=@shSubShList |
| 19 | +syn region shsTestBody contained transparent excludenl matchgroup=shHDBody start=+ <<-\?'\z(\w\+\)'$+hs=e,rs=e end=+^\s*\z2$+ contains=@shSubShList |
| 20 | + |
| 21 | +" single line body |
| 22 | +syn region shsTestBody contained oneline transparent excludenl keepend matchgroup=shQuote start=+ '+hs=s+1 end=+'$+ contains=@shSubShList |
| 23 | +syn region shsTestBody contained oneline transparent excludenl keepend matchgroup=shQuote start=+ "+hs=s+1 end=+"$+ contains=@shSubShList |
| 24 | + |
| 25 | +" heredoc quotes |
| 26 | +syn region shHereDoc matchgroup=shRedir start="<<\s*\\\"\z(.\{-1,\}\)\\\"" matchgroup=shRedir end="^\z1\s*$" |
| 27 | +syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\"\z(.\{-1,\}\)\\\"" matchgroup=shRedir end="^\s*\z1\s*$" |
| 28 | +syn region shHereDoc matchgroup=shRedir start="<<\s*\\\\\z([^ \t|>]\+\)" matchgroup=shRedir end="^\z1\s*$" |
| 29 | +syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\\\z([^ \t|>]\+\)" matchgroup=shRedir end="^\s*\z1\s*$" |
| 30 | +syn region shHereDoc matchgroup=shRedir start="<<\s*\\\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shRedir end="^\z1\s*$" contains=@shDblQuoteList |
| 31 | +syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shRedir end="^\s*\z1\s*$" contains=@shDblQuoteList |
| 32 | +syn region shHereDoc matchgroup=shRedir start="<<\s*\\\\\_$\_s*\\\\\z([^ \t|>]\+\)" matchgroup=shRedir end="^\z1\s*$" |
| 33 | +syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\\\_$\_s*\\\\\z([^ \t|>]\+\)" matchgroup=shRedir end="^\s*\z1\s*$" |
| 34 | +syn region shHereDoc matchgroup=shRedir start="<<\s*\\\\\_$\_s*'\z(.\{-1,\}\)'" matchgroup=shRedir end="^\z1\s*$" |
| 35 | +syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\\\_$\_s*'\z(.\{-1,\}\)'" matchgroup=shRedir end="^\s*\z1\s*$" |
| 36 | +syn region shHereDoc matchgroup=shRedir start="<<\s*\\\\\_$\_s*\\\"\z(.\{-1,\}\)\\\"" matchgroup=shRedir end="^\z1\s*$" |
| 37 | +syn region shHereDoc matchgroup=shRedir start="<<-\s*\\\\\_$\_s*\\\"\z(.\{-1,\}\)\\\"" matchgroup=shRedir end="^\s*\z1\s*$" |
| 38 | + |
| 39 | +syn match shsPrereq contained "\<[A-Z_,]\+\>" nextgroup=shsTestTitle |
| 40 | +syn match shsPrereqLazy contained "\<[A-Z_,]\+\>" nextgroup=shsTestBody |
| 41 | + |
| 42 | +syn cluster shCommandSubList add=shsTest,shsStatement |
| 43 | + |
| 44 | +hi def link shsStatement Statement |
| 45 | +hi def link shsTestStatement Function |
| 46 | +hi def link shsPrereq Identifier |
| 47 | +hi def link shsPrereqLazy shsPrereq |
| 48 | +hi def link shsTestBody shRedir |
| 49 | + |
| 50 | +let b:current_syntax='sharness' |
0 commit comments