@@ -28,51 +28,33 @@ function! s:syntax_available(language)
28
28
return ! empty (globpath (&runtimepath , ' syntax/' . a: language . ' .vim' ))
29
29
endfunction
30
30
31
- " "
32
- " Register {language} for a given {tag}. If [attr_override] is given and not
33
- " empty, it will be used for the attribute pattern.
34
- function ! s: register_language (language , tag , ... )
35
- let attr_override = a: 0 ? a: 1 : ' '
36
- let attr = ! empty (attr_override) ? attr_override : s: attr (' lang' , a: language )
37
-
38
- if s: syntax_available (a: language )
39
- execute ' syntax include @' . a: language . ' syntax/' . a: language . ' .vim'
40
- unlet ! b: current_syntax
41
- execute ' syntax region vue_' . a: language
42
- \ ' keepend'
43
- \ ' start=/<' . a: tag . ' \>\_[^>]*' . attr . ' \_[^>]*>/'
44
- \ ' end="</' . a: tag . ' >"me=s-1'
45
- \ ' contains=@' . a: language . ' ,vueSurroundingTag'
46
- \ ' fold'
47
- endif
48
- endfunction
49
-
50
- let s: language_config = [
51
- \ {' lang' : ' less' , ' args' : [' less' , ' style' ]},
52
- \ {' lang' : ' pug' , ' args' : [' pug' , ' template' , s: attr (' lang' , ' \%(pug\|jade\)' )]},
53
- \ {' lang' : ' slm' , ' args' : [' slm' , ' template' ]},
54
- \ {' lang' : ' handlebars' , ' args' : [' handlebars' , ' template' ]},
55
- \ {' lang' : ' haml' , ' args' : [' haml' , ' template' ]},
56
- \ {' lang' : ' typescript' , ' args' : [' typescript' , ' script' , ' \%(lang=\("\|'' \)[^\1]*\(ts\|typescript\)[^\1]*\1\|ts\)' ]},
57
- \ {' lang' : ' coffee' , ' args' : [' coffee' , ' script' ]},
58
- \ {' lang' : ' stylus' , ' args' : [' stylus' , ' style' ]},
59
- \ {' lang' : ' sass' , ' args' : [' sass' , ' style' ]},
60
- \ {' lang' : ' scss' , ' args' : [' scss' , ' style' ]},
31
+ let s: languages = [
32
+ \ {' name' : ' less' , ' tag' : ' style' },
33
+ \ {' name' : ' pug' , ' tag' : ' template' , ' attr_pattern' : s: attr (' lang' , ' \%(pug\|jade\)' )},
34
+ \ {' name' : ' slm' , ' tag' : ' template' },
35
+ \ {' name' : ' handlebars' , ' tag' : ' template' },
36
+ \ {' name' : ' haml' , ' tag' : ' template' },
37
+ \ {' name' : ' typescript' , ' tag' : ' script' , ' attr_pattern' : ' \%(lang=\("\|'' \)[^\1]*\(ts\|typescript\)[^\1]*\1\|ts\)' },
38
+ \ {' name' : ' coffee' , ' tag' : ' script' },
39
+ \ {' name' : ' stylus' , ' tag' : ' style' },
40
+ \ {' name' : ' sass' , ' tag' : ' style' },
41
+ \ {' name' : ' scss' , ' tag' : ' style' },
61
42
\ ]
62
- let s: language_dict = {}
63
- for item in s: language_config
64
- let s: language_dict [item.lang] = item.args
65
- endfor
66
43
67
- if exists (" g:vue_pre_processors" )
68
- let pre_processors = g: vue_pre_processors
69
- else
70
- let pre_processors = map (copy (s: language_config ), {k , v - > v .lang})
71
- endif
44
+ for s: language in s: languages
45
+ if ! exists (" g:vue_pre_processors" ) || index (g: vue_pre_processors , s: language .name) != -1
46
+ let s: attr_pattern = has_key (s: language , ' attr_pattern' ) ? s: language .attr_pattern : s: attr (' lang' , s: language .name)
72
47
73
- for language in pre_processors
74
- if has_key (s: language_dict , language )
75
- call call (" s:register_language" , get (s: language_dict , language ))
48
+ if s: syntax_available (s: language .name)
49
+ execute ' syntax include @' . s: language .name . ' syntax/' . s: language .name . ' .vim'
50
+ unlet ! b: current_syntax
51
+ execute ' syntax region vue_' . s: language .name
52
+ \ ' keepend'
53
+ \ ' start=/<' . s: language .tag . ' \>\_[^>]*' . s: attr_pattern . ' \_[^>]*>/'
54
+ \ ' end="</' . s: language .tag . ' >"me=s-1'
55
+ \ ' contains=@' . s: language .name . ' ,vueSurroundingTag'
56
+ \ ' fold'
57
+ endif
76
58
endif
77
59
endfor
78
60
0 commit comments