Mercurial > vim
annotate runtime/syntax/liquid.vim @ 5899:60cdaa05a6ad v7.4.292
updated for version 7.4.292
Problem: Searching for "a" does not match accented "a" with new regexp
engine, does match with old engine. (David B?rgin)
"ca" does not match "ca" with accented "a" with either engine.
Solution: Change the old engine, check for following composing character
also for single-byte patterns.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 13 May 2014 18:04:00 +0200 |
parents | 2eb30f341e8d |
children | dce918af0c00 |
rev | line source |
---|---|
2202 | 1 " Vim syntax file |
2 " Language: Liquid | |
3 " Maintainer: Tim Pope <vimNOSPAM@tpope.org> | |
4 " Filenames: *.liquid | |
4681
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
2202
diff
changeset
|
5 " Last Change: 2013 May 30 |
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 | |
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 | |
4681
2eb30f341e8d
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
2202
diff
changeset
|
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 | |
82 syn region liquidHighlight start="{%\s*highlight\s\+\w\+\s*%}" end="{% endhighlight %}" keepend | |
83 | |
84 for s:type in g:liquid_highlight_types | |
85 exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained' | |
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') | |
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 | |
95 syn keyword liquidNull null nil contained | |
96 syn match liquidEmpty "\<empty\>" contained | |
97 | |
98 syn keyword liquidOperator and or not contained | |
99 syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter | |
100 | |
101 syn keyword liquidFilter date capitalize downcase upcase first last join sort size strip_html strip_newlines newline_to_br replace replace_first remove remove_first truncate truncatewords prepend append minus plus times divided_by contained | |
102 | |
103 syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained | |
104 syn keyword liquidRepeat for endfor tablerow endtablerow in contained | |
105 syn match liquidRepeat "\%({%\s*\)\@<=empty\>" contained | |
106 syn keyword liquidKeyword assign cycle include with contained | |
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 |