Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
213 changes: 212 additions & 1 deletion Erlang.plist
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@
<key>include</key>
<string>#macro-directive</string>
</dict>
<dict>
<key>include</key>
<string>#doc-directive</string>
</dict>
<dict>
<key>include</key>
<string>#directive</string>
Expand Down Expand Up @@ -536,6 +540,82 @@
</dict>
</array>
</dict>
<key>doc-directive</key>
<dict>
<key>begin</key>
<string>^\s*+(-)\s*+((module)?doc)\s*([(]\s*)?(~[bBsS]?)?((["]{3,})\s*)(\S.*)?$</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.directive.begin.erlang</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.control.directive.doc.erlang</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.begin.erlang</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>storage.type.string.erlang</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>comment.block.documentation.erlang</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.erlang</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>invalid.illegal.string.erlang</string>
</dict>
</dict>
<key>end</key>
<string>^(\s*(\7))\s*([)]\s*)?(\.)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.block.documentation.erlang</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.erlang</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.section.directive.end.Erlang</string>
</dict>
</dict>
<key>name</key>
<string>meta.directive.doc.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\G</string>
<key>contentName</key>
<string>comment.block.documentation.erlang</string>
<key>while</key>
<string>(^)(?!\s*(\5))</string>
</dict>
</array>
</dict>
<key>docstring</key>
<dict>
<key>begin</key>
Expand Down Expand Up @@ -577,6 +657,13 @@
</dict>
<key>name</key>
<string>string.quoted.triple.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>everything-else</key>
<dict>
Expand Down Expand Up @@ -646,6 +733,10 @@
<key>include</key>
<string>#sigil-docstring</string>
</dict>
<dict>
<key>include</key>
<string>#sigil-docstring-verbatim</string>
</dict>
<dict>
<key>include</key>
<string>#sigil-string</string>
Expand Down Expand Up @@ -1656,6 +1747,16 @@
<key>name</key>
<string>invalid.illegal.string.erlang</string>
</dict>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>internal-string-body-verbatim</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
Expand Down Expand Up @@ -2691,7 +2792,7 @@
<key>sigil-docstring</key>
<dict>
<key>begin</key>
<string>(~[bBsS]?)((["]{3,})\s*)(\S.*)?$</string>
<string>(~[bs])((["]{3,})\s*)(\S.*)?$</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
Expand Down Expand Up @@ -2734,6 +2835,67 @@
</dict>
<key>name</key>
<string>string.quoted.tripple.sigil.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body</string>
</dict>
</array>
</dict>
<key>sigil-docstring-verbatim</key>
<dict>
<key>begin</key>
<string>(~[BS]?)((["]{3,})\s*)(\S.*)?$</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.erlang</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.string.quoted.triple.begin.erlang</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.erlang</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>invalid.illegal.string.erlang</string>
</dict>
</dict>
<key>comment</key>
<string>Only whitespace characters are allowed after the beggining and before the closing sequences and those cannot be in the same line</string>
<key>end</key>
<string>^(\s*(\3))(?!")</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.string.quoted.triple.end.erlang</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.erlang</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.tripple.sigil.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>sigil-string</key>
<dict>
Expand Down Expand Up @@ -2863,6 +3025,13 @@
</dict>
<key>name</key>
<string>string.quoted.curly-brackets.sigil.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>sigil-string-double-quote</key>
<dict>
Expand Down Expand Up @@ -2930,6 +3099,13 @@
</dict>
<key>name</key>
<string>string.quoted.double.sigil.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>sigil-string-less-greater</key>
<dict>
Expand Down Expand Up @@ -2997,6 +3173,13 @@
</dict>
<key>name</key>
<string>string.quoted.less-greater.sigil.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>sigil-string-parenthesis</key>
<dict>
Expand Down Expand Up @@ -3064,6 +3247,13 @@
</dict>
<key>name</key>
<string>string.quoted.parenthesis.sigil.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>sigil-string-single-character</key>
<dict>
Expand Down Expand Up @@ -3131,6 +3321,13 @@
</dict>
<key>name</key>
<string>string.quoted.other.sigil.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>sigil-string-single-quote</key>
<dict>
Expand Down Expand Up @@ -3198,6 +3395,13 @@
</dict>
<key>name</key>
<string>string.quoted.single.sigil.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>sigil-string-square-brackets</key>
<dict>
Expand Down Expand Up @@ -3265,6 +3469,13 @@
</dict>
<key>name</key>
<string>string.quoted.square-brackets.sigil.erlang</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#internal-string-body-verbatim</string>
</dict>
</array>
</dict>
<key>string</key>
<dict>
Expand Down
47 changes: 44 additions & 3 deletions tests/snap/docstring.erl
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
-module(docstring).
-moduledoc """
Triple quoted strings examples
""".

-export([f/0]).
-export([f1/0, f2/0, f3/0, f4/0, f5/0,
g1/0, g2/0, g3/0, g4/0, g5/0]).

%% -doc attributes without parentheses

-doc """
Docstring examples
""".
f() ->
f1() ->
"""
Line "1"
Line "2"
Expand All @@ -24,10 +30,45 @@ Not escaped: \"\\t \\r \\xFF\" and \"\"\"

"""""
""""
FIXME: previous line is not a closing delimiter because opening-closing delimiter have five double quote characters
previous line is not a closing delimiter because opening-closing delimiter have five double quote characters
""""" = "\"\"\"\"",
X = lists:seq(1,3), % just to check is syntax highlight is still ok

ok.

-doc ~s"""""
Hello\n
""""".
f2() -> ok.

-doc "Hello\n".
f3() -> ok.

-doc ~s"Hello\n".
f4() -> ok.

-doc <<"Hello\n"/utf8>>.
f5() -> ok.

%% -doc attributes with parentheses

-doc("""
Hello\n
""").
g1() -> ok.

-doc(~B"""""
Hello\n
""""").
g2() -> ok.

-doc("Hello\n").
g3() -> ok.

-doc(~B"Hello\n").
g4() -> ok.

-doc(<<"Hello\n"/utf8>>).
g5() -> ok.

-define(THIS_IS_THE_END, "end"). % just to check is syntax highlight is still ok
Loading