Skip to content

Commit 50eae6e

Browse files
authored
Merge pull request #55 from rescript-lang/backtick-escpaing
Support escape seq in backtick strings
2 parents 08de541 + dbd046f commit 50eae6e

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
let a = "abc"
2+
3+
let str = "aaa\"bbb"
4+
5+
Js.log(` \` ccc ${a} ddd `)
6+
7+
Js.log(`a = ${a}`)
8+
9+
Js.log(``)
10+
11+
Js.log(`\``)
12+
13+
Js.log(`first line\nsecond line`)
14+
15+
Js.log(`first line\r\nsecond line`)
16+
17+
Js.log(`
18+
multi line
19+
\`
20+
multi line
21+
`)
22+
23+
let b = 34
24+
25+
let parser = %raw(`
26+
adsfadsfzz
27+
`)

syntax/rescript.vim

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,16 @@ syntax match resAttribute "\v\@([a-zA-z][A-Za-z0-9_']*)(\.([a-zA-z])[A-Za-z0-9_'
7979

8080
" String
8181
syntax match resUnicodeChar "\v\\u[A-Fa-f0-9]\{4}" contained
82-
syntax match resEscapedChar "\v\\[\\"'ntbrf]" contained
83-
syntax region resString start="\v\"" end="\v\"" contains=resEscapedQuote,resEscapedChar,resUnicodeChar
82+
syntax match resStringEscapeSeq "\v\\[\\"ntbrf]" contained
83+
syntax match resInterpolatedStringEscapeSeq "\v\\[\\`ntbrf]" contained
84+
85+
syntax region resString start="\v\"" end="\v\"" contains=resStringEscapeSeq,resUnicodeChar
8486

8587
" Interpolation
8688
syntax match resInterpolationVariable "\v\$[a-z_][A-Za-z0-0_'$]*" contained
8789
syntax region resInterpolationBlock matchgroup=resInterpolationDelimiters start="\v\$\{" end="\v\}" contained contains=TOP
88-
syntax region resString start="\v`" end="\v`" contains=resInterpolationBlock
89-
syntax region resString start="\v[a-z]`" end="\v`" contains=resInterpolationBlock,resInterpolationVariable
90+
syntax region resString start="\v`" end="\v`" contains=resInterpolationBlock,resInterpolatedStringEscapeSeq
91+
syntax region resString start="\v[a-z]`" end="\v`" contains=resInterpolationBlock,resInterpolationVariable,resInterpolatedStringEscapeSeq
9092

9193
" Polymorphic variants
9294
syntax match resPolyVariant "\v#[A-za-z][A-Za-z0-9_'$]*"
@@ -109,7 +111,8 @@ highlight default link resModuleOrVariant Function
109111
highlight default link resPolyVariant Function
110112
highlight default link resModuleChain Macro
111113
highlight default link resUnicodeChar Character
112-
highlight default link resEscapedChar Character
114+
highlight default link resStringEscapeSeq Character
115+
highlight default link resInterpolatedStringEscapeSeq Character
113116
highlight default link resString String
114117
highlight default link resInterpolationDelimiters Macro
115118
highlight default link resInterpolationVariable Macro

0 commit comments

Comments
 (0)