raml.vim 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. " Vim syntax file
  2. " Language: RAML (RESTful API Modeling Language)
  3. " Maintainer: Eric Hopkins <eric.on.tech@gmail.com>
  4. " URL: https://github.com/in3d/vim-raml
  5. " License: Same as Vim
  6. " Last Change: 2018-11-03
  7. if exists("b:current_syntax")
  8. finish
  9. endif
  10. let s:cpo_save = &cpo
  11. set cpo&vim
  12. syn keyword ramlTodo contained TODO FIXME XXX NOTE
  13. syn region ramlComment display oneline start='\%(^\|\s\)#' end='$'
  14. \ contains=ramlTodo,@Spell
  15. syn region ramlVersion display oneline start='#%RAML' end='$'
  16. syn match ramlNodeProperty '!\%(![^\\^% ]\+\|[^!][^:/ ]*\)'
  17. syn match ramlAnchor '&.\+'
  18. syn match ramlAlias '\*.\+'
  19. syn match ramlDelimiter '[-,:]'
  20. syn match ramlBlock '[\[\]{}>|]'
  21. syn match ramlOperator '[?+-]'
  22. syn match ramlKey '\h\+\(?\)\?\ze\s*:'
  23. syn match ramlKey '\w\+\(\s\+\w\+\)*\(?\)\?\ze\s*:'
  24. syn match routeKey '\/\w\+\(\s\+\w\+\)*\ze\s*:'
  25. syn match routeKey 'application\/\w\+\ze\s*:'
  26. syn match routeParamKey '\/{\w\+}*\ze\s*:'
  27. syn region ramlString matchgroup=ramlStringDelimiter
  28. \ start=+\s"+ skip=+\\"+ end=+"+
  29. \ contains=ramlEscape
  30. syn region ramlString matchgroup=ramlStringDelimiter
  31. \ start=+\s'+ skip=+''+ end=+'+
  32. \ contains=ramlStringEscape
  33. syn region ramlParameter matchgroup=ramlParameterDelimiter
  34. \ start=+<<+ skip=+''+ end=+>>+
  35. syn match ramlEscape contained display +\\[\\"abefnrtv^0_ NLP]+
  36. syn match ramlEscape contained display '\\x\x\{2}'
  37. syn match ramlEscape contained display '\\u\x\{4}'
  38. syn match ramlEscape contained display '\\U\x\{8}'
  39. syn match ramlEscape display '\\\%(\r\n\|[\r\n]\)'
  40. syn match ramlStringEscape contained +''+
  41. syn match ramlNumber display
  42. \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='
  43. syn match ramlNumber display '0\o\+'
  44. syn match ramlNumber display '0x\x\+'
  45. syn match ramlNumber display '([+-]\=[iI]nf)'
  46. syn match ramlNumber display '(NaN)'
  47. syn match ramlConstant '\<[~yn]\>'
  48. syn keyword ramlConstant true True TRUE false False FALSE
  49. syn keyword ramlConstant yes Yes on ON no No off OFF
  50. syn keyword ramlConstant null Null NULL nil Nil NIL
  51. syn keyword httpVerbs get post put delete head patch options
  52. syn keyword ramlTypes string number integer date boolean file
  53. syn match ramlTimestamp '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\='
  54. syn region ramlDocumentHeader start='---' end='$' contains=ramlDirective
  55. syn match ramlDocumentEnd '\.\.\.'
  56. syn match ramlDirective contained '%[^:]\+:.\+'
  57. hi def link ramlVersion String
  58. hi def link routeInterpolation String
  59. hi def link ramlInterpolation Constant
  60. hi def link ramlTodo Todo
  61. hi def link ramlComment Comment
  62. hi def link ramlDocumentHeader PreProc
  63. hi def link ramlDocumentEnd PreProc
  64. hi def link ramlDirective Keyword
  65. hi def link ramlNodeProperty Type
  66. hi def link ramlAnchor Type
  67. hi def link ramlAlias Type
  68. hi def link ramlBlock Operator
  69. hi def link ramlOperator Operator
  70. hi def link routeParamKey SpecialChar
  71. hi def link ramlKey Identifier
  72. hi def link routeKey SpecialChar
  73. hi def link ramlParameterDelimiter Type
  74. hi def link ramlParameter Type
  75. hi def link ramlString String
  76. hi def link ramlStringDelimiter ramlString
  77. hi def link ramlEscape SpecialChar
  78. hi def link ramlStringEscape SpecialChar
  79. hi def link ramlNumber Number
  80. hi def link ramlConstant Constant
  81. hi def link ramlTimestamp Number
  82. hi def link httpVerbs Statement
  83. hi def link ramlTypes Type
  84. hi def link ramlDelimiter Delimiter
  85. let b:current_syntax = "raml"
  86. let &cpo = s:cpo_save
  87. unlet s:cpo_save