jq.vim (5680B)
1 " Vim compiler file 2 " Language: jq 3 " Maintainer: Vito <vito.blog@gmail.com> 4 " Last Change: 2024 Apr 17 5 " Upstream: https://github.com/vito-c/jq.vim 6 " 2025 Apr 16 by Vim Project (set 'cpoptions' for line continuation, #17121) 7 " 8 " Quit when a (custom) syntax file was already loaded 9 if exists('b:current_syntax') 10 finish 11 endif 12 13 let s:cpo_save = &cpo 14 set cpo&vim 15 16 " syn include @jqHtml syntax/html.vim " Doc comment HTML 17 18 " jqTodo 19 syntax keyword jqTodo contained TODO FIXME NOTE XXX 20 21 " jqKeywords 22 syntax keyword jqKeywords and or not empty 23 syntax keyword jqKeywords try catch 24 syntax keyword jqKeywords reduce as label break foreach 25 syntax keyword jqKeywords import include module modulemeta 26 syntax keyword jqKeywords env nth has in while error stderr debug 27 28 " jqConditional 29 syntax keyword jqConditional if then elif else end 30 31 " jqConditions 32 syntax keyword jqCondtions true false null 33 34 " jqSpecials 35 syntax keyword jqType type 36 syntax match jqType /[\|;]/ " not really a type I did this for coloring reasons though :help group-name 37 syntax region jqParentheses start=+(+ end=+)+ fold transparent 38 39 " jq Functions 40 syntax keyword jqFunction add all any arrays ascii_downcase floor 41 syntax keyword jqFunction ascii_upcase booleans bsearch builtins capture combinations 42 syntax keyword jqFunction \contains del delpaths endswith explode 43 syntax keyword jqFunction finites first flatten format from_entries 44 syntax keyword jqFunction fromdate fromdateiso8601 fromjson fromstream get_jq_origin 45 syntax keyword jqFunction get_prog_origin get_search_list getpath gmtime group_by 46 syntax keyword jqFunction gsub halt halt_error implode index indices infinite 47 syntax keyword jqFunction input input_filename input_line_number inputs inside 48 syntax keyword jqFunction isempty isfinite isinfinite isnan isnormal iterables 49 syntax keyword jqFunction join keys keys_unsorted last leaf_paths 50 syntax keyword jqFunction length limit localtime ltrimstr map map_values 51 syntax keyword jqFunction match max max_by min min_by 52 syntax keyword jqFunction mktime nan normals now 53 syntax keyword jqFunction nulls numbers objects path paths range 54 syntax keyword jqFunction recurse recurse_down repeat reverse rindex 55 syntax keyword jqFunction rtrimstr scalars scalars_or_empty scan select 56 syntax keyword jqFunction setpath sort sort_by split splits with_entries 57 syntax keyword jqFunction startswith strflocaltime strftime strings strptime sub 58 syntax keyword jqFunction test to_entries todate todateiso8601 tojson __loc__ 59 syntax keyword jqFunction tonumber tostream tostring transpose truncate_stream 60 syntax keyword jqFunction unique unique_by until utf8bytelength values walk 61 " TODO: $__loc__ is going to be a pain 62 63 " jq Math Functions 64 syntax keyword jqFunction acos acosh asin asinh atan atanh cbrt ceil cos cosh 65 syntax keyword jqFunction erf erfc exp exp10 exp2 expm1 fabs floor gamma j0 j1 66 syntax keyword jqFunction lgamma lgamma_r log log10 log1p log2 logb nearbyint 67 syntax keyword jqFunction pow10 rint round significand sin sinh sqrt tan tanh 68 syntax keyword jqFunction tgamma trunc y0 y1 69 syntax keyword jqFunction atan2 copysign drem fdim fmax fmin fmod frexp hypot 70 syntax keyword jqFunction jn ldexp modf nextafter nexttoward pow remainder 71 syntax keyword jqFunction scalb scalbln yn 72 syntax keyword jqFunction fma 73 74 " jq SQL-style Operators 75 syntax keyword jqFunction INDEX JOIN IN 76 77 " Macro 78 syntax match jqMacro "@\%(text\|json\|html\|uri\|[ct]sv\|sh\|base64d\?\)\>" 79 80 " Comments 81 syntax match jqComment "#.*" contains=jqTodo 82 83 " Variables 84 syn match jqVariables /$[_A-Za-z0-9]\+/ 85 86 " Definition 87 syntax keyword jqKeywords def nextgroup=jqNameDefinition skipwhite 88 syn match jqNameDefinition /\<[_A-Za-z0-9]\+\>/ contained nextgroup=jqPostNameDefinition 89 syn match jqNameDefinition /`[^`]\+`/ contained nextgroup=jqPostNameDefinition 90 91 " Strings 92 syn region jqError start=+'+ end=+'\|$\|[;)]\@=+ 93 syn region jqString matchgroup=jqQuote 94 \ start=+"+ skip=+\\[\\"]+ end=+"+ 95 \ contains=@Spell,jqInterpolation 96 syn region jqInterpolation matchgroup=jqInterpolationDelimiter 97 \ start=+\%([^\\]\%(\\\\\)*\\\)\@<!\\(+ end=+)+ 98 \ contained contains=TOP 99 100 " Operators 101 syn match jqOperator /:\|\([-+*/%<>=]\|\/\/\)=\?\|[!|]=\|?\/\// 102 "syn region jqRange matchgroup=jqSquareBracket start=+\[+ skip=+:+ end=+\]+ 103 104 " Errors 105 syn keyword jqError _assign _flatten _modify _nwise _plus _negate _minus _multiply 106 syn keyword jqError _divide _mod _strindices _equal _notequal _less _greater _lesseq 107 syn keyword jqError _greatereq _sort_by_impl _group_by_impl _min_by_impl _max_by_impl _match_impl _input 108 " TODO: these errors should show up when doing def _flatten: as well 109 110 " Numbers 111 syn match jqNumber /\<0[dDfFlL]\?\>/ " Just a bare 0 112 syn match jqNumber /\<[1-9]\d*[dDfFlL]\?\>/ " A multi-digit number - octal numbers with leading 0's are deprecated in Scala 113 114 if !exists('jq_quote_highlight') 115 highlight def link jqQuote String 116 else 117 highlight def link jqQuote Type 118 endif 119 120 hi def link jqCondtions Boolean 121 hi def link jqVariables Identifier 122 hi def link jqNameDefinition Function 123 hi def link jqTodo Todo 124 hi def link jqComment Comment 125 hi def link jqKeywords Keyword 126 hi def link jqType Type 127 hi def link jqOperator Operator 128 hi def link jqFunction Function 129 hi def link jqMacro Macro 130 hi def link jqError Error 131 hi def link jqString String 132 hi def link jqInterpolationDelimiter Delimiter 133 hi def link jqConditional Conditional 134 hi def link jqNumber Number 135 136 let &cpo = s:cpo_save 137 unlet s:cpo_save