Mercurial > vim
annotate runtime/syntax/liquid.vim @ 28161:acfb2cedbe8d
Added tag v8.2.4604 for changeset 859b037faea84ef1cbad52dff5ed4d88d58c16b5
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 21 Mar 2022 21:00:06 +0100 |
parents | dce918af0c00 |
children |
rev | line source |
---|---|
2202 | 1 " Vim syntax file |
2 " Language: Liquid | |
3 " Maintainer: Tim Pope <vimNOSPAM@tpope.org> | |
4 " Filenames: *.liquid | |
28141 | 5 " Last Change: 2022 Mar 15 |
2202 | 6 |
7 if exists('b:current_syntax') | |
8 finish | |
9 endif | |
10 | |
11 if !exists('main_syntax') | |
12 let main_syntax = 'liquid' | |
13 endif | |
14 | |
15 if !exists('g:liquid_default_subtype') | |
16 let g:liquid_default_subtype = 'html' | |
17 endif | |
18 | |
19 if !exists('b:liquid_subtype') && main_syntax == 'liquid' | |
20 let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") | |
21 let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+') | |
22 if b:liquid_subtype == '' | |
23 let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+') | |
24 endif | |
25 if b:liquid_subtype == '' | |
26 let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$') | |
27 endif | |
28 if b:liquid_subtype == '' | |
29 let b:liquid_subtype = g:liquid_default_subtype | |
30 endif | |
31 endif | |
32 | |
33 if exists('b:liquid_subtype') && b:liquid_subtype != '' | |
34 exe 'runtime! syntax/'.b:liquid_subtype.'.vim' | |
35 unlet! b:current_syntax | |
36 endif | |
37 | |
38 syn case match | |
39 | |
40 if exists('b:liquid_subtype') && b:liquid_subtype != 'yaml' | |
41 " YAML Front Matter | |
42 syn include @liquidYamlTop syntax/yaml.vim | |
43 unlet! b:current_syntax | |
44 syn region liquidYamlHead start="\%^---$" end="^---\s*$" keepend contains=@liquidYamlTop,@Spell | |
45 endif | |
46 | |
47 if !exists('g:liquid_highlight_types') | |
48 let g:liquid_highlight_types = [] | |
49 endif | |
50 | |
51 if !exists('s:subtype') | |
52 let s:subtype = exists('b:liquid_subtype') ? b:liquid_subtype : '' | |
53 | |
54 for s:type in map(copy(g:liquid_highlight_types),'matchstr(v:val,"[^=]*$")') | |
55 if s:type =~ '\.' | |
56 let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') | |
57 endif | |
58 exe 'syn include @liquidHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' | |
59 unlet! b:current_syntax | |
60 endfor | |
61 unlet! s:type | |
62 | |
63 if s:subtype == '' | |
64 unlet! b:liquid_subtype | |
65 else | |
66 let b:liquid_subtype = s:subtype | |
67 endif | |
68 unlet s:subtype | |
69 endif | |
70 | |
28141 | 71 syn region liquidStatement matchgroup=liquidDelimiter start="{%-\=" end="-\=%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend |
72 syn region liquidExpression matchgroup=liquidDelimiter start="{{-\=" end="-\=}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend | |
73 syn region liquidComment matchgroup=liquidDelimiter start="{%-\=\s*comment\s*-\=%}" end="{%-\=\s*endcomment\s*-\=%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend | |
74 syn region liquidRaw matchgroup=liquidDelimiter start="{%-\=\s*raw\s*-\=%}" end="{%-\=\s*endraw\s*-\=%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend | |
2202 | 75 |
4681
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
2202
diff
changeset
|
76 syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,liquidRaw,@liquidStatement,liquidYamlHead |
2202 | 77 syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression |
78 syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,liquidFloat,liquidBoolean,liquidNull,liquidEmpty,liquidPipe,liquidForloop | |
79 | |
80 syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained | |
81 syn keyword liquidKeyword endhighlight contained | |
28141 | 82 syn region liquidHighlight start="{%-\=\s*highlight\s\+\w\+\s*-\=%}" end="{%-\= endhighlight -\=%}" keepend |
2202 | 83 |
84 for s:type in g:liquid_highlight_types | |
85 exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained' | |
28141 | 86 exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%-\=\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*-\=%}" end="{%-\= endhighlight -\=%}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') |
2202 | 87 endfor |
88 unlet! s:type | |
89 | |
90 syn region liquidString matchgroup=liquidQuote start=+"+ end=+"+ contained | |
91 syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained | |
92 syn match liquidNumber "-\=\<\d\+\>" contained | |
93 syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained | |
94 syn keyword liquidBoolean true false contained | |
28141 | 95 syn keyword liquidNull null nil blank contained |
2202 | 96 syn match liquidEmpty "\<empty\>" contained |
97 | |
98 syn keyword liquidOperator and or not contained | |
99 syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter | |
100 | |
28141 | 101 syn keyword liquidFilter date capitalize downcase upcase escape escape_once first last join sort size where uniq strip_html strip_newlines newline_to_br replace replace_first remove remove_first slice split strip truncate truncatewords prepend append url_encode url_decode abs at_most at_least ceil divided_by floor minus plus round times modulo contained |
2202 | 102 |
103 syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained | |
28141 | 104 syn keyword liquidRepeat for endfor tablerow endtablerow in break continue limit offset reversed contained |
105 syn match liquidRepeat "\%({%-\=\s*\)\@<=empty\>" contained | |
106 syn keyword liquidKeyword assign capture endcapture increasement decreasement cycle include with render contained | |
2202 | 107 |
108 syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained | |
109 syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained | |
110 syn keyword liquidForloopAttribute length index index0 rindex rindex0 first last contained | |
111 | |
112 syn keyword liquidTablerowloop tablerowloop nextgroup=liquidTablerowloopDot contained | |
113 syn match liquidTablerowloopDot "\." nextgroup=liquidTableForloopAttribute contained | |
114 syn keyword liquidTablerowloopAttribute length index index0 col col0 index0 rindex rindex0 first last col_first col_last contained | |
115 | |
116 hi def link liquidDelimiter PreProc | |
117 hi def link liquidComment Comment | |
118 hi def link liquidTypeHighlight Type | |
119 hi def link liquidConditional Conditional | |
120 hi def link liquidRepeat Repeat | |
121 hi def link liquidKeyword Keyword | |
122 hi def link liquidOperator Operator | |
123 hi def link liquidString String | |
124 hi def link liquidQuote Delimiter | |
125 hi def link liquidNumber Number | |
126 hi def link liquidFloat Float | |
127 hi def link liquidEmpty liquidNull | |
128 hi def link liquidNull liquidBoolean | |
129 hi def link liquidBoolean Boolean | |
130 hi def link liquidFilter Function | |
131 hi def link liquidForloop Identifier | |
132 hi def link liquidForloopAttribute Identifier | |
133 | |
134 let b:current_syntax = 'liquid' | |
135 | |
136 if exists('main_syntax') && main_syntax == 'liquid' | |
137 unlet main_syntax | |
138 endif |