vroom.vim 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. " Vim syntax file
  2. " Language: Vroom (vim testing and executable documentation)
  3. " Maintainer: David Barnett (https://github.com/google/vim-ft-vroom)
  4. " Last Change: 2014 Jul 23
  5. " quit when a syntax file was already loaded
  6. if exists('b:current_syntax')
  7. finish
  8. endif
  9. let s:cpo_save = &cpo
  10. set cpo-=C
  11. syn include @vroomVim syntax/vim.vim
  12. syn include @vroomShell syntax/sh.vim
  13. syntax region vroomAction
  14. \ matchgroup=vroomOutput
  15. \ start='\m^ ' end='\m$' keepend
  16. \ contains=vroomControlBlock
  17. syntax region vroomAction
  18. \ matchgroup=vroomOutput
  19. \ start='\m^ & ' end='\m$' keepend
  20. \ contains=vroomControlBlock
  21. syntax match vroomOutput '\m^ &$'
  22. syntax region vroomMessageBody
  23. \ matchgroup=vroomMessage
  24. \ start='\m^ \~ ' end='\m$' keepend
  25. \ contains=vroomControlBlock
  26. syntax region vroomColoredAction
  27. \ matchgroup=vroomInput
  28. \ start='\m^ > ' end='\m$' keepend
  29. \ contains=vimNotation,vroomControlBlock
  30. syntax region vroomAction
  31. \ matchgroup=vroomInput
  32. \ start='\m^ % ' end='\m$' keepend
  33. \ contains=vimNotation,vroomControlBlock
  34. syntax region vroomAction
  35. \ matchgroup=vroomContinuation
  36. \ start='\m^ |' end='\m$' keepend
  37. syntax region vroomAction
  38. \ start='\m^ \ze:' end='\m$' keepend
  39. \ contains=@vroomVim,vroomControlBlock
  40. syntax region vroomAction
  41. \ matchgroup=vroomDirective
  42. \ start='\m^ @\i\+' end='\m$' keepend
  43. \ contains=vroomControlBlock
  44. syntax region vroomSystemAction
  45. \ matchgroup=vroomSystem
  46. \ start='\m^ ! ' end='\m$' keepend
  47. \ contains=@vroomShell,vroomControlBlock
  48. syntax region vroomHijackAction
  49. \ matchgroup=vroomHijack
  50. \ start='\m^ \$ ' end='\m$' keepend
  51. \ contains=vroomControlBlock
  52. syntax match vroomControlBlock contains=vroomControlEscape,@vroomControls
  53. \ '\v \([^&()][^()]*\)$'
  54. syntax match vroomControlEscape '\m&' contained
  55. syntax cluster vroomControls
  56. \ contains=vroomDelay,vroomMode,vroomBuffer,vroomRange
  57. \,vroomChannel,vroomBind,vroomStrictness
  58. syntax match vroomRange '\v\.(,\+?(\d+|\$)?)?' contained
  59. syntax match vroomRange '\v\d*,\+?(\d+|\$)?' contained
  60. syntax match vroomBuffer '\v\d+,@!' contained
  61. syntax match vroomDelay '\v\d+(\.\d+)?s' contained
  62. syntax match vroomMode '\v<%(regex|glob|verbatim)' contained
  63. syntax match vroomChannel '\v<%(stderr|stdout|command|status)>' contained
  64. syntax match vroomBind '\v<bind>' contained
  65. syntax match vroomStrictness '\v\<%(STRICT|RELAXED|GUESS-ERRORS)\>' contained
  66. highlight default link vroomInput Identifier
  67. highlight default link vroomDirective vroomInput
  68. highlight default link vroomControlBlock vroomInput
  69. highlight default link vroomSystem vroomInput
  70. highlight default link vroomOutput Statement
  71. highlight default link vroomContinuation Constant
  72. highlight default link vroomHijack Special
  73. highlight default link vroomColoredAction Statement
  74. highlight default link vroomSystemAction vroomSystem
  75. highlight default link vroomHijackAction vroomHijack
  76. highlight default link vroomMessage vroomOutput
  77. highlight default link vroomMessageBody Constant
  78. highlight default link vroomControlEscape Special
  79. highlight default link vroomBuffer vroomInput
  80. highlight default link vroomRange Include
  81. highlight default link vroomMode Constant
  82. highlight default link vroomDelay Type
  83. highlight default link vroomStrictness vroomMode
  84. highlight default link vroomChannel vroomMode
  85. highlight default link vroomBind vroomMode
  86. let b:current_syntax = 'vroom'
  87. let &cpo = s:cpo_save
  88. unlet s:cpo_save