diff --git a/README.md b/README.md
index 6576fc8..c3158d6 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,9 @@
# rideplugin
![Build](https://github.com/wavesplatform/ride-intellij-plugin/workflows/Build/badge.svg)
-[![Version](https://img.shields.io/jetbrains/plugin/v/PLUGIN_ID.svg)](https://plugins.jetbrains.com/plugin/PLUGIN_ID)
-[![Downloads](https://img.shields.io/jetbrains/plugin/d/PLUGIN_ID.svg)](https://plugins.jetbrains.com/plugin/PLUGIN_ID)
-
-## Template ToDo list
-- [x] Create a new [IntelliJ Platform Plugin Template][template] project.
-- [ ] Get familiar with the [template documentation][template].
-- [ ] Verify the [pluginGroup](./gradle.properties), [plugin ID](./src/main/resources/META-INF/plugin.xml) and [sources package](./src/main/kotlin).
-- [ ] Review the [Legal Agreements](https://plugins.jetbrains.com/docs/marketplace/legal-agreements.html).
-- [ ] [Publish a plugin manually](https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html?from=IJPluginTemplate) for the first time.
-- [ ] Set the Plugin ID in the above README badges.
-- [ ] Set the [Deployment Token](https://plugins.jetbrains.com/docs/marketplace/plugin-upload.html).
-- [ ] Click the Watch button on the top of the [IntelliJ Platform Plugin Template][template] to be notified about releases containing new features and fixes.
+[![Version](https://img.shields.io/jetbrains/plugin/v/20416-ride.svg)](https://plugins.jetbrains.com/plugin/20416-ride)
+[![Downloads](https://img.shields.io/jetbrains/plugin/d/20416-ride.svg)](https://plugins.jetbrains.com/plugin/PLUGIN_ID)
+
The plugin provides support for RIDE language
@@ -21,6 +12,7 @@ Features:
Syntax validation
Keyword completion
Syntax highlighting and color schemes
+ Built-in structures, types and functions completion
@@ -28,7 +20,7 @@ Features:
- Using IDE built-in plugin system:
- Settings/Preferences > Plugins > Marketplace > Search for "ride-lang-idea-plugin" >
+ Settings/Preferences > Plugins > Marketplace > Search for "ride" >
Install Plugin
- Manually:
diff --git a/gradle.properties b/gradle.properties
index 05bf6ee..7622c36 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -11,7 +11,7 @@ platformVersion=2021.3.3
platformPlugins=
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
pluginSinceBuild = 213
-pluginUntilBuild = 222.*
+pluginUntilBuild = 223.*
# Opt-out flag for bundling Kotlin standard library -> https://plugins.jetbrains.com/docs/intellij/kotlin.html#kotlin-standard-library
# suppress inspection "UnusedProperty"
diff --git a/src/main/gen/com/wavesplatform/rideplugin/parser/RideParser.java b/src/main/gen/com/wavesplatform/rideplugin/parser/RideParser.java
index 7e51068..1c9ffee 100644
--- a/src/main/gen/com/wavesplatform/rideplugin/parser/RideParser.java
+++ b/src/main/gen/com/wavesplatform/rideplugin/parser/RideParser.java
@@ -496,8 +496,8 @@ private static boolean else_block_1(PsiBuilder b, int l) {
}
/* ********************************************************** */
- // ELSE IF if_cond (THEN? (expr | closure))
- // | ELSE IF LPAREN? if_cond RPAREN? (THEN? (expr | closure))
+ // ELSE IF if_cond (THEN (expr | closure))
+ // | ELSE IF LPAREN? if_cond RPAREN? (THEN (expr | closure))
public static boolean else_if_block(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "else_if_block")) return false;
if (!nextTokenIs(b, ELSE)) return false;
@@ -509,7 +509,7 @@ public static boolean else_if_block(PsiBuilder b, int l) {
return r;
}
- // ELSE IF if_cond (THEN? (expr | closure))
+ // ELSE IF if_cond (THEN (expr | closure))
private static boolean else_if_block_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "else_if_block_0")) return false;
boolean r;
@@ -521,24 +521,17 @@ private static boolean else_if_block_0(PsiBuilder b, int l) {
return r;
}
- // THEN? (expr | closure)
+ // THEN (expr | closure)
private static boolean else_if_block_0_3(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "else_if_block_0_3")) return false;
boolean r;
Marker m = enter_section_(b);
- r = else_if_block_0_3_0(b, l + 1);
+ r = consumeToken(b, THEN);
r = r && else_if_block_0_3_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
- // THEN?
- private static boolean else_if_block_0_3_0(PsiBuilder b, int l) {
- if (!recursion_guard_(b, l, "else_if_block_0_3_0")) return false;
- consumeToken(b, THEN);
- return true;
- }
-
// expr | closure
private static boolean else_if_block_0_3_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "else_if_block_0_3_1")) return false;
@@ -548,7 +541,7 @@ private static boolean else_if_block_0_3_1(PsiBuilder b, int l) {
return r;
}
- // ELSE IF LPAREN? if_cond RPAREN? (THEN? (expr | closure))
+ // ELSE IF LPAREN? if_cond RPAREN? (THEN (expr | closure))
private static boolean else_if_block_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "else_if_block_1")) return false;
boolean r;
@@ -576,24 +569,17 @@ private static boolean else_if_block_1_4(PsiBuilder b, int l) {
return true;
}
- // THEN? (expr | closure)
+ // THEN (expr | closure)
private static boolean else_if_block_1_5(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "else_if_block_1_5")) return false;
boolean r;
Marker m = enter_section_(b);
- r = else_if_block_1_5_0(b, l + 1);
+ r = consumeToken(b, THEN);
r = r && else_if_block_1_5_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
- // THEN?
- private static boolean else_if_block_1_5_0(PsiBuilder b, int l) {
- if (!recursion_guard_(b, l, "else_if_block_1_5_0")) return false;
- consumeToken(b, THEN);
- return true;
- }
-
// expr | closure
private static boolean else_if_block_1_5_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "else_if_block_1_5_1")) return false;
@@ -1472,8 +1458,8 @@ public static boolean literal_expr(PsiBuilder b, int l) {
return r;
}
- // IF if_cond (THEN? (expr | closure)) else_if_block* else_block?
- // | IF LPAREN if_cond RPAREN (THEN? (expr | closure)) else_if_block* else_block?
+ // IF if_cond (THEN (expr | closure)) else_if_block* else_block?
+ // | IF LPAREN if_cond RPAREN (THEN (expr | closure)) else_if_block* else_block?
public static boolean if_expr(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_expr")) return false;
if (!nextTokenIsSmart(b, IF)) return false;
@@ -1485,7 +1471,7 @@ public static boolean if_expr(PsiBuilder b, int l) {
return r;
}
- // IF if_cond (THEN? (expr | closure)) else_if_block* else_block?
+ // IF if_cond (THEN (expr | closure)) else_if_block* else_block?
private static boolean if_expr_0(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_expr_0")) return false;
boolean r;
@@ -1499,24 +1485,17 @@ private static boolean if_expr_0(PsiBuilder b, int l) {
return r;
}
- // THEN? (expr | closure)
+ // THEN (expr | closure)
private static boolean if_expr_0_2(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_expr_0_2")) return false;
boolean r;
Marker m = enter_section_(b);
- r = if_expr_0_2_0(b, l + 1);
+ r = consumeTokenSmart(b, THEN);
r = r && if_expr_0_2_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
- // THEN?
- private static boolean if_expr_0_2_0(PsiBuilder b, int l) {
- if (!recursion_guard_(b, l, "if_expr_0_2_0")) return false;
- consumeTokenSmart(b, THEN);
- return true;
- }
-
// expr | closure
private static boolean if_expr_0_2_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_expr_0_2_1")) return false;
@@ -1544,7 +1523,7 @@ private static boolean if_expr_0_4(PsiBuilder b, int l) {
return true;
}
- // IF LPAREN if_cond RPAREN (THEN? (expr | closure)) else_if_block* else_block?
+ // IF LPAREN if_cond RPAREN (THEN (expr | closure)) else_if_block* else_block?
private static boolean if_expr_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_expr_1")) return false;
boolean r;
@@ -1559,24 +1538,17 @@ private static boolean if_expr_1(PsiBuilder b, int l) {
return r;
}
- // THEN? (expr | closure)
+ // THEN (expr | closure)
private static boolean if_expr_1_4(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_expr_1_4")) return false;
boolean r;
Marker m = enter_section_(b);
- r = if_expr_1_4_0(b, l + 1);
+ r = consumeTokenSmart(b, THEN);
r = r && if_expr_1_4_1(b, l + 1);
exit_section_(b, m, null, r);
return r;
}
- // THEN?
- private static boolean if_expr_1_4_0(PsiBuilder b, int l) {
- if (!recursion_guard_(b, l, "if_expr_1_4_0")) return false;
- consumeTokenSmart(b, THEN);
- return true;
- }
-
// expr | closure
private static boolean if_expr_1_4_1(PsiBuilder b, int l) {
if (!recursion_guard_(b, l, "if_expr_1_4_1")) return false;
diff --git a/src/main/grammars/Ride.bnf b/src/main/grammars/Ride.bnf
index 0229ff4..ab63970 100644
--- a/src/main/grammars/Ride.bnf
+++ b/src/main/grammars/Ride.bnf
@@ -211,11 +211,11 @@ index_expr ::= (
) LBRACKET expr RBRACKET (DOT expr)?
private prefix_group ::= if_expr
-if_expr ::= IF if_cond (THEN? (expr | closure)) else_if_block* else_block?
-| IF LPAREN if_cond RPAREN (THEN? (expr | closure)) else_if_block* else_block? {pin=1}
+if_expr ::= IF if_cond (THEN (expr | closure)) else_if_block* else_block?
+| IF LPAREN if_cond RPAREN (THEN (expr | closure)) else_if_block* else_block? {pin=1}
if_cond ::= expr
-else_if_block ::= ELSE IF if_cond (THEN? (expr | closure))
-| ELSE IF LPAREN? if_cond RPAREN? (THEN? (expr | closure)) {pin=2}
+else_if_block ::= ELSE IF if_cond (THEN (expr | closure))
+| ELSE IF LPAREN? if_cond RPAREN? (THEN (expr | closure)) {pin=2}
else_block ::= ELSE (expr | closure) {pin = 1}
private primary_group ::= simple_ref_expr | paren_expr | literal_expr
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index b54bae6..521d15e 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -39,8 +39,8 @@
-
-
+
+