@@ -107,7 +107,7 @@ function hljsDefineCshtmlRazor(hljs) {
107107 {
108108 relevance : 10
109109 }
110- ) ;
110+ ) ;
111111 var razor_inline_expresion = {
112112 begin : "@[a-zA-Z]+" ,
113113 returnBegin : true ,
@@ -118,7 +118,7 @@ function hljsDefineCshtmlRazor(hljs) {
118118 begin : '@' ,
119119 className : SPECIAL_SYMBOL_CLASSNAME
120120 } ,
121- {
121+ {
122122 begin : '".*(?!$)"' ,
123123 skip : true
124124 } ,
@@ -143,7 +143,7 @@ function hljsDefineCshtmlRazor(hljs) {
143143 {
144144 begin : "</text>" ,
145145 className : SPECIAL_SYMBOL_CLASSNAME ,
146- endsParent : true ,
146+ endsParent : true
147147 }
148148 ]
149149 } ;
@@ -217,14 +217,26 @@ function hljsDefineCshtmlRazor(hljs) {
217217 closed_brace
218218 ]
219219 } ;
220+ var razor_helper_block = {
221+ begin : "^\\s*@helper[\\s]*[^{]+[\\s]*{" ,
222+ returnBegin : true ,
223+ returnEnd : true ,
224+ end : "}" ,
225+ subLanguage : "cshtml-razor" ,
226+ contains : [
227+ { begin : "@helper" , className : SPECIAL_SYMBOL_CLASSNAME } ,
228+ { begin : "{" , className : SPECIAL_SYMBOL_CLASSNAME } ,
229+ closed_brace
230+ ]
231+ } ;
220232 var razor_code_block_variants = [
221233 { begin : "@for[\\s]*\\([^{]+[\\s]*{" , end : "}" } ,
222234 { begin : "@if[\\s]*\\([^{]+[\\s]*{" , end : "}" } ,
223235 { begin : "@switch[\\s]*\\([^{]+[\\s]*{" , end : "}" } ,
224236 { begin : "@while[\\s]*\\([^{]+[\\s]*{" , end : "}" } ,
225237 { begin : "@using[\\s]*\\([^{]+[\\s]*{" , end : "}" } ,
226238 { begin : "@lock[\\s]*\\([^{]+[\\s]*{" , end : "}" } ,
227- { begin : "@foreach[\\s]*\\([^{]+[\\s]*{" , end : "}" } ,
239+ { begin : "@foreach[\\s]*\\([^{]+[\\s]*{" , end : "}" }
228240 ] ;
229241 var razor_code_block = {
230242 variants : razor_code_block_variants ,
@@ -256,8 +268,8 @@ function hljsDefineCshtmlRazor(hljs) {
256268 { begin : "}" , className : SPECIAL_SYMBOL_CLASSNAME } ,
257269 {
258270 variants : [
259- { begin : "[\\s]*else\\sif[\\s]*\\([^{]+[\\s]*{" , } ,
260- { begin : "[\\s]*else[\\s]*" , }
271+ { begin : "[\\s]*else\\sif[\\s]*\\([^{]+[\\s]*{" } ,
272+ { begin : "[\\s]*else[\\s]*" }
261273 ] ,
262274 subLanguage : "cs"
263275 } ,
@@ -268,8 +280,7 @@ function hljsDefineCshtmlRazor(hljs) {
268280 ]
269281 } ,
270282 braces ,
271- closed_brace ,
272- //razor_block
283+ closed_brace
273284 ]
274285 } ;
275286 var section_begin = "@section[\\s]+[a-zA-Z0-9]+[\\s]*{" ;
@@ -338,9 +349,10 @@ function hljsDefineCshtmlRazor(hljs) {
338349 } ;
339350
340351 var result = {
341- aliases : [ 'cshtml' , 'razor' , 'razor-cshtml' ] ,
352+ aliases : [ 'cshtml' , 'razor' , 'razor-cshtml' ] ,
342353 contains : [
343354 razor_directives ,
355+ razor_helper_block ,
344356 razor_block ,
345357 razor_code_block ,
346358 razor_section_block ,
@@ -365,8 +377,8 @@ function hljsDefineCshtmlRazor(hljs) {
365377 result . contains = result . contains . concat ( xml_blocks ) ;
366378
367379 [ razor_block , razor_code_block , razor_try_block ]
368- . forEach ( function ( mode ) {
369- var razorModes = result . contains . filter ( function ( c ) { return c !== mode ; } ) ;
380+ . forEach ( function ( mode ) {
381+ var razorModes = result . contains . filter ( function ( c ) { return c !== mode ; } ) ;
370382 var replacerIndex = mode . contains . indexOf ( CONTENT_REPLACER ) ;
371383 mode . contains . splice . apply ( mode . contains , [ replacerIndex , 1 ] . concat ( razorModes ) ) ;
372384 } ) ;
0 commit comments