Skip to content

Commit b6c7195

Browse files
committed
Multi-Line Function Parameter Support
1 parent 06cfb6b commit b6c7195

File tree

1 file changed

+157
-24
lines changed

1 file changed

+157
-24
lines changed

src/papyrus-lang-vscode/syntaxes/papyrus/papyrus.tmLanguage

+157-24
Original file line numberDiff line numberDiff line change
@@ -403,10 +403,85 @@
403403
<key>name</key>
404404
<string>constant.character.escape.papyrus</string>
405405
</dict>
406-
<key>params</key>
406+
<key>parameter-start-comma</key>
407+
<dict>
408+
<key>match</key>
409+
<string>,\s*([\w\[\]:]+)\s+(\w+)\b(?:\s*(=))?</string>
410+
<key>captures</key>
411+
<dict>
412+
<key>1</key>
413+
<dict>
414+
<key>name</key>
415+
<string>storage.type.variable.papyrus</string>
416+
</dict>
417+
<key>2</key>
418+
<dict>
419+
<key>name</key>
420+
<string>variable.parameter.papyrus</string>
421+
</dict>
422+
<key>3</key>
423+
<dict>
424+
<key>name</key>
425+
<string>keyword.operator.assignment.papyrus</string>
426+
</dict>
427+
</dict>
428+
<key>name</key>
429+
<string>meta.parameter.papyrus</string>
430+
</dict>
431+
<key>parameter-start-pattern</key>
432+
<dict>
433+
<key>match</key>
434+
<string>\G\s*([\w\[\]:]+)\s+(\w+)\b(?:\s*(=))?</string>
435+
<key>captures</key>
436+
<dict>
437+
<key>1</key>
438+
<dict>
439+
<key>name</key>
440+
<string>storage.type.variable.papyrus</string>
441+
</dict>
442+
<key>2</key>
443+
<dict>
444+
<key>name</key>
445+
<string>variable.parameter.papyrus</string>
446+
</dict>
447+
<key>3</key>
448+
<dict>
449+
<key>name</key>
450+
<string>keyword.operator.assignment.papyrus</string>
451+
</dict>
452+
</dict>
453+
<key>name</key>
454+
<string>meta.parameter.papyrus</string>
455+
</dict>
456+
<key>parameter-comma-at-start</key>
457+
<dict>
458+
<key>match</key>
459+
<string>\G\s*,</string>
460+
<key>name</key>
461+
<string>invalid.illegal.function.papyrus</string>
462+
</dict>
463+
<key>parameter-newline-escape-with-comma</key>
407464
<dict>
465+
<key>begin</key>
466+
<string>,\s*(\\)\s*\n</string>
467+
<key>beginCaptures</key>
468+
<dict>
469+
<key>1</key>
470+
<dict>
471+
<key>name</key>
472+
<string>constant.character.escape.papyrus</string>
473+
</dict>
474+
</dict>
475+
<key>end</key>
476+
<string>\n|(?=,\s*\\|\\|\))</string>
477+
<key>name</key>
478+
<string>meta.function.escapedline.comma.papyrus</string>
408479
<key>patterns</key>
409480
<array>
481+
<dict>
482+
<key>include</key>
483+
<string>#parameter-comma-at-start</string>
484+
</dict>
410485
<dict>
411486
<key>include</key>
412487
<string>#constants</string>
@@ -415,37 +490,95 @@
415490
<key>include</key>
416491
<string>#quoted-string</string>
417492
</dict>
493+
<dict>
494+
<key>include</key>
495+
<string>#parameter-start-comma</string>
496+
</dict>
497+
<dict>
498+
<key>include</key>
499+
<string>#parameter-start-pattern</string>
500+
</dict>
418501
<dict>
419502
<key>match</key>
420-
<string>(?:\G\s*|,\s*)([\w\[\]:]+)\s+(\w+)\b(?:\s*(=))?</string>
421-
<key>captures</key>
422-
<dict>
423-
<key>1</key>
424-
<dict>
425-
<key>name</key>
426-
<string>storage.type.variable.papyrus</string>
427-
</dict>
428-
<key>2</key>
429-
<dict>
430-
<key>name</key>
431-
<string>variable.parameter.papyrus</string>
432-
</dict>
433-
<key>3</key>
434-
<dict>
435-
<key>name</key>
436-
<string>keyword.operator.assignment.papyrus</string>
437-
</dict>
438-
</dict>
439-
<key>name</key>
440-
<string>meta.parameter.papyrus</string>
503+
<string>[^\s\)]+</string>
504+
<key>name</key>
505+
<string>invalid.illegal.function.papyrus</string>
506+
</dict>
507+
</array>
508+
</dict>
509+
<key>parameter-newline-escape-without-comma</key>
510+
<dict>
511+
<key>begin</key>
512+
<string>(\\)\s*\n</string>
513+
<key>beginCaptures</key>
514+
<dict>
515+
<key>1</key>
516+
<dict>
517+
<key>name</key>
518+
<string>constant.character.escape.papyrus</string>
519+
</dict>
520+
</dict>
521+
<key>end</key>
522+
<string>\n|(?=,\s*\\|\\|\))</string>
523+
<key>name</key>
524+
<string>meta.function.escapedline.nocomma.papyrus</string>
525+
<key>patterns</key>
526+
<array>
527+
<dict>
528+
<key>include</key>
529+
<string>#constants</string>
530+
</dict>
531+
<dict>
532+
<key>include</key>
533+
<string>#quoted-string</string>
534+
</dict>
535+
<dict>
536+
<key>include</key>
537+
<string>#parameter-start-comma</string>
538+
</dict>
539+
<dict>
540+
<key>match</key>
541+
<string>[^\s\)]+</string>
542+
<key>name</key>
543+
<string>invalid.illegal.function.papyrus</string>
544+
</dict>
545+
</array>
546+
</dict>
547+
<key>params</key>
548+
<dict>
549+
<key>patterns</key>
550+
<array>
551+
<dict>
552+
<key>include</key>
553+
<string>#parameter-comma-at-start</string>
554+
</dict>
555+
<dict>
556+
<key>include</key>
557+
<string>#constants</string>
558+
</dict>
559+
<dict>
560+
<key>include</key>
561+
<string>#quoted-string</string>
562+
</dict>
563+
<dict>
564+
<key>include</key>
565+
<string>#parameter-start-comma</string>
566+
</dict>
567+
<dict>
568+
<key>include</key>
569+
<string>#parameter-start-pattern</string>
570+
</dict>
571+
<dict>
572+
<key>include</key>
573+
<string>#parameter-newline-escape-with-comma</string>
441574
</dict>
442575
<dict>
443576
<key>include</key>
444-
<string>#newline-escape</string>
577+
<string>#parameter-newline-escape-without-comma</string>
445578
</dict>
446579
<dict>
447580
<key>match</key>
448-
<string>[^\s\)]+?</string>
581+
<string>^.+|[^\s\)]+?</string>
449582
<key>name</key>
450583
<string>invalid.illegal.function.papyrus</string>
451584
</dict>

0 commit comments

Comments
 (0)