diff --git a/Haskell/Haskell.sublime-syntax b/Haskell/Haskell.sublime-syntax index eb26434f86..b06b26ba94 100644 --- a/Haskell/Haskell.sublime-syntax +++ b/Haskell/Haskell.sublime-syntax @@ -1381,15 +1381,21 @@ contexts: 5: constant.character.escape.control.haskell - match: (\\)\s*$ captures: - 1: punctuation.separator.continuation.haskell + 1: punctuation.definition.continuation.begin.haskell push: linteral-string-continuation linteral-string-continuation: + - clear_scopes: 2 + - meta_scope: meta.string.continuation.haskell - meta_include_prototype: false - match: \\ - scope: punctuation.separator.continuation.haskell + scope: punctuation.definition.continuation.end.haskell pop: 1 - - match: (?=") + - match: \" + scope: invalid.illegal.expect-continuation-end.haskell + pop: 2 + - match: \S + scope: invalid.illegal.expect-continuation-end.haskell pop: 1 ###[ KEYWORDS AND OPERATORS ]################################################## diff --git a/Haskell/tests/syntax_test_haskell.hs b/Haskell/tests/syntax_test_haskell.hs index d4831588af..cb5859ccc4 100644 --- a/Haskell/tests/syntax_test_haskell.hs +++ b/Haskell/tests/syntax_test_haskell.hs @@ -3860,14 +3860,33 @@ main = do -- ^ keyword.operator.haskell "This is a\ --- ^^^^^^^^^^^^ meta.string.haskell string.quoted.double.haskell --- ^ punctuation.separator.continuation.haskell +-- ^^^^^^^^^^ meta.string.haskell string.quoted.double.haskell +-- ^^ meta.string.continuation.haskell - string +-- ^ punctuation.definition.continuation.begin.haskell + "This is a\ \multi-line string literal\ - \example" --- ^^^^^^^^^ meta.string.haskell string.quoted.double.haskell --- ^ punctuation.separator.continuation.haskell +-- <- meta.string.continuation.haskell - string +-- ^^ meta.string.continuation.haskell - string +-- ^ punctuation.definition.continuation.end.haskell +-- ^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.haskell string.quoted.double.haskell +-- ^^ meta.string.continuation.haskell - string +-- ^ punctuation.definition.continuation.begin.haskell + "This is a\ + \multi-line string literal\ + /example" +-- <- meta.string.continuation.haskell - string +-- ^^ meta.string.continuation.haskell - string +-- ^ invalid.illegal.expect-continuation-end.haskell +-- ^^^^^^^^ meta.string.haskell string.quoted.double.haskell -- ^ punctuation.definition.string.end.haskell + "This is a\ + " +-- <- meta.string.continuation.haskell - string +-- ^^ meta.string.continuation.haskell - string +-- ^ invalid.illegal.expect-continuation-end.haskell +-- ^ - meta.string - string - invalid + -- [ INFIX OPERATORS ] -------------------------------------------------------- ! # $ % & ⋆ + . / < = > ? @ \ ^ | - ~ : -- ascii symbols