Activate "around operators" space properties. Remove other from settings

This commit is contained in:
Nikolay Krasko
2012-03-12 17:43:29 +04:00
parent 7c8170cddd
commit ae1138c4ba
9 changed files with 266 additions and 57 deletions
@@ -101,6 +101,13 @@ public class JetBlock extends AbstractBlock {
Indent childIndent = Indent.getNoneIndent();
Alignment childAlignment = null;
if (child.getElementType() == JetNodeTypes.OPERATION_REFERENCE) {
ASTNode operationNode = child.getFirstChildNode();
if (operationNode != null) {
return new JetBlock(operationNode, childAlignment, childIndent, wrap, mySettings, mySpacingBuilder);
}
}
ASTNode childParent = child.getTreeParent();
if (CODE_BLOCKS.contains(myNode.getElementType())) {
@@ -23,6 +23,8 @@ import com.intellij.psi.codeStyle.CustomCodeStyleSettings;
public class JetCodeStyleSettings extends CustomCodeStyleSettings {
public boolean SPACE_AROUND_RANGE = false;
public boolean SPACE_BEFORE_TYPE_COLON = true;
public boolean SPACE_AFTER_TYPE_COLON = true;
@@ -22,6 +22,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.codeStyle.CodeStyleSettings;
import com.intellij.psi.tree.TokenSet;
import org.jetbrains.annotations.NotNull;
import static org.jetbrains.jet.JetNodeTypes.*;
@@ -46,7 +47,6 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder {
JetCodeStyleSettings jetSettings = settings.getCustomSettings(JetCodeStyleSettings.class);
return new SpacingBuilder(settings)
// ============ Line breaks ==============
.after(NAMESPACE_HEADER).blankLines(1)
@@ -65,10 +65,19 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder {
.beforeInside(RBRACE, CLASS_BODY).lineBreakInCode()
.beforeInside(RBRACE, BLOCK).lineBreakInCode()
// =============== Spacing ================
// =============== Spacing ================
.before(COMMA).spaceIf(settings.SPACE_BEFORE_COMMA)
.after(COMMA).spaceIf(settings.SPACE_AFTER_COMMA)
.around(EQ).spaceIf(settings.SPACE_AROUND_ASSIGNMENT_OPERATORS)
.around(TokenSet.create(EQ, MULTEQ, DIVEQ, PLUSEQ, MINUSEQ, PERCEQ)).spaceIf(settings.SPACE_AROUND_ASSIGNMENT_OPERATORS)
.around(TokenSet.create(ANDAND, OROR)).spaceIf(settings.SPACE_AROUND_LOGICAL_OPERATORS)
.around(TokenSet.create(EQEQ, EXCLEQ, EQEQEQ, EXCLEQEQEQ)).spaceIf(settings.SPACE_AROUND_EQUALITY_OPERATORS)
.aroundInside(TokenSet.create(LT, GT, LTEQ, GTEQ), BINARY_EXPRESSION).spaceIf(settings.SPACE_AROUND_RELATIONAL_OPERATORS)
.around(TokenSet.create(PLUS, MINUS)).spaceIf(settings.SPACE_AROUND_ADDITIVE_OPERATORS)
.around(TokenSet.create(MUL, DIV, PERC)).spaceIf(settings.SPACE_AROUND_MULTIPLICATIVE_OPERATORS)
.around(TokenSet.create(PLUSPLUS, MINUSMINUS, MINUS, PLUS, EXCL)).spaceIf(settings.SPACE_AROUND_UNARY_OPERATOR)
.around(RANGE).spaceIf(jetSettings.SPACE_AROUND_RANGE)
.beforeInside(BLOCK, FUN).spaceIf(settings.SPACE_BEFORE_METHOD_LBRACE)
// TODO: Ask for better API
@@ -81,7 +90,9 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder {
.beforeInside(COLON, TYPE_PARAMETER).spaceIf(jetSettings.SPACE_BEFORE_TYPE_COLON)
.afterInside(COLON, TYPE_PARAMETER).spaceIf(jetSettings.SPACE_AFTER_TYPE_COLON)
.beforeInside(COLON, VALUE_PARAMETER).spaceIf(jetSettings.SPACE_BEFORE_TYPE_COLON)
.afterInside(COLON, VALUE_PARAMETER).spaceIf(jetSettings.SPACE_AFTER_TYPE_COLON);
.afterInside(COLON, VALUE_PARAMETER).spaceIf(jetSettings.SPACE_AFTER_TYPE_COLON)
;
}
@Override
@@ -59,67 +59,70 @@ public class JetLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSetti
"SPACE_AROUND_LOGICAL_OPERATORS",
"SPACE_AROUND_EQUALITY_OPERATORS",
"SPACE_AROUND_RELATIONAL_OPERATORS",
"SPACE_AROUND_BITWISE_OPERATORS",
// "SPACE_AROUND_BITWISE_OPERATORS",
"SPACE_AROUND_ADDITIVE_OPERATORS",
"SPACE_AROUND_MULTIPLICATIVE_OPERATORS",
"SPACE_AROUND_SHIFT_OPERATORS",
// "SPACE_AROUND_SHIFT_OPERATORS",
"SPACE_AROUND_UNARY_OPERATOR",
"SPACE_AFTER_COMMA",
"SPACE_AFTER_COMMA_IN_TYPE_ARGUMENTS",
"SPACE_BEFORE_COMMA",
"SPACE_AFTER_SEMICOLON",
"SPACE_BEFORE_SEMICOLON",
"SPACE_WITHIN_PARENTHESES",
"SPACE_WITHIN_METHOD_CALL_PARENTHESES",
"SPACE_WITHIN_EMPTY_METHOD_CALL_PARENTHESES",
"SPACE_WITHIN_METHOD_PARENTHESES",
"SPACE_WITHIN_EMPTY_METHOD_PARENTHESES",
"SPACE_WITHIN_IF_PARENTHESES",
"SPACE_WITHIN_WHILE_PARENTHESES",
"SPACE_WITHIN_FOR_PARENTHESES",
"SPACE_WITHIN_TRY_PARENTHESES",
"SPACE_WITHIN_CATCH_PARENTHESES",
"SPACE_WITHIN_SWITCH_PARENTHESES",
// "SPACE_AFTER_COMMA_IN_TYPE_ARGUMENTS",
"SPACE_BEFORE_COMMA"
// "SPACE_AFTER_SEMICOLON",
// "SPACE_BEFORE_SEMICOLON",
// "SPACE_WITHIN_PARENTHESES",
// "SPACE_WITHIN_METHOD_CALL_PARENTHESES",
// "SPACE_WITHIN_EMPTY_METHOD_CALL_PARENTHESES",
// "SPACE_WITHIN_METHOD_PARENTHESES",
// "SPACE_WITHIN_EMPTY_METHOD_PARENTHESES",
// "SPACE_WITHIN_IF_PARENTHESES",
// "SPACE_WITHIN_WHILE_PARENTHESES",
// "SPACE_WITHIN_FOR_PARENTHESES",
// "SPACE_WITHIN_TRY_PARENTHESES",
// "SPACE_WITHIN_CATCH_PARENTHESES",
// "SPACE_WITHIN_SWITCH_PARENTHESES",
// "SPACE_WITHIN_SYNCHRONIZED_PARENTHESES",
"SPACE_WITHIN_CAST_PARENTHESES",
"SPACE_WITHIN_BRACKETS",
"SPACE_WITHIN_BRACES",
// "SPACE_WITHIN_CAST_PARENTHESES",
// "SPACE_WITHIN_BRACKETS",
// "SPACE_WITHIN_BRACES",
// "SPACE_WITHIN_ARRAY_INITIALIZER_BRACES",
"SPACE_AFTER_TYPE_CAST",
"SPACE_BEFORE_METHOD_CALL_PARENTHESES",
"SPACE_BEFORE_METHOD_PARENTHESES",
"SPACE_BEFORE_IF_PARENTHESES",
"SPACE_BEFORE_WHILE_PARENTHESES",
"SPACE_BEFORE_FOR_PARENTHESES",
"SPACE_BEFORE_TRY_PARENTHESES",
"SPACE_BEFORE_CATCH_PARENTHESES",
"SPACE_BEFORE_SWITCH_PARENTHESES",
"SPACE_BEFORE_SYNCHRONIZED_PARENTHESES",
"SPACE_BEFORE_CLASS_LBRACE",
"SPACE_BEFORE_METHOD_LBRACE",
"SPACE_BEFORE_IF_LBRACE",
"SPACE_BEFORE_ELSE_LBRACE",
"SPACE_BEFORE_WHILE_LBRACE",
"SPACE_BEFORE_FOR_LBRACE",
"SPACE_BEFORE_DO_LBRACE",
"SPACE_BEFORE_SWITCH_LBRACE",
"SPACE_BEFORE_TRY_LBRACE",
"SPACE_BEFORE_CATCH_LBRACE",
"SPACE_BEFORE_FINALLY_LBRACE",
"SPACE_BEFORE_SYNCHRONIZED_LBRACE",
"SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE",
"SPACE_BEFORE_ANNOTATION_ARRAY_INITIALIZER_LBRACE",
"SPACE_BEFORE_ELSE_KEYWORD",
"SPACE_BEFORE_WHILE_KEYWORD",
"SPACE_BEFORE_CATCH_KEYWORD",
"SPACE_BEFORE_FINALLY_KEYWORD",
"SPACE_BEFORE_QUEST",
"SPACE_AFTER_QUEST",
"SPACE_BEFORE_COLON",
"SPACE_AFTER_COLON",
"SPACE_BEFORE_TYPE_PARAMETER_LIST"
// "SPACE_AFTER_TYPE_CAST",
// "SPACE_BEFORE_METHOD_CALL_PARENTHESES",
// "SPACE_BEFORE_METHOD_PARENTHESES",
// "SPACE_BEFORE_IF_PARENTHESES",
// "SPACE_BEFORE_WHILE_PARENTHESES",
// "SPACE_BEFORE_FOR_PARENTHESES",
// "SPACE_BEFORE_TRY_PARENTHESES",
// "SPACE_BEFORE_CATCH_PARENTHESES",
// "SPACE_BEFORE_SWITCH_PARENTHESES",
// "SPACE_BEFORE_SYNCHRONIZED_PARENTHESES",
// "SPACE_BEFORE_CLASS_LBRACE",
// "SPACE_BEFORE_METHOD_LBRACE",
// "SPACE_BEFORE_IF_LBRACE",
// "SPACE_BEFORE_ELSE_LBRACE",
// "SPACE_BEFORE_WHILE_LBRACE",
// "SPACE_BEFORE_FOR_LBRACE",
// "SPACE_BEFORE_DO_LBRACE",
// "SPACE_BEFORE_SWITCH_LBRACE",
// "SPACE_BEFORE_TRY_LBRACE",
// "SPACE_BEFORE_CATCH_LBRACE",
// "SPACE_BEFORE_FINALLY_LBRACE",
// "SPACE_BEFORE_SYNCHRONIZED_LBRACE",
// "SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE",
// "SPACE_BEFORE_ANNOTATION_ARRAY_INITIALIZER_LBRACE",
// "SPACE_BEFORE_ELSE_KEYWORD",
// "SPACE_BEFORE_WHILE_KEYWORD",
// "SPACE_BEFORE_CATCH_KEYWORD",
// "SPACE_BEFORE_FINALLY_KEYWORD",
// "SPACE_BEFORE_QUEST",
// "SPACE_AFTER_QUEST",
// "SPACE_BEFORE_COLON",
// "SPACE_AFTER_COLON",
// "SPACE_BEFORE_TYPE_PARAMETER_LIST"
);
consumer.showCustomOption(JetCodeStyleSettings.class, "SPACE_AROUND_RANGE", "Around range (..)",
CodeStyleSettingsCustomizable.SPACES_AROUND_OPERATORS);
consumer.showCustomOption(JetCodeStyleSettings.class, "SPACE_AFTER_TYPE_COLON", "Space after colon, before declarations' type",
CodeStyleSettingsCustomizable.SPACES_OTHER);
@@ -0,0 +1,39 @@
class Some {
fun some() {
var int : Int=0
int=12
int+=12
int-=12
int*=12
int/=12
int%=12
true&&true
true||false
12===3
12!==3
12==3
12!=3
12<=3
12>=3
12<3
12>3
12+3-12
12%3*12/3
!true
int++
++int
int--
--int
+12
-12
1..2
}
}
@@ -0,0 +1,39 @@
class Some {
fun some() {
var int : Int = 0
int = 12
int += 12
int -= 12
int *= 12
int /= 12
int %= 12
true && true
true || false
12 === 3
12 !== 3
12 == 3
12 != 3
12 <= 3
12 >= 3
12 < 3
12 > 3
12 + 3 - 12
12 % 3 * 12 / 3
! true
int ++
++ int
int --
-- int
+ 12
- 12
1 .. 2
}
}
@@ -0,0 +1,39 @@
class Some {
fun some() {
var int : Int = 0
int = 12
int += 12
int -= 12
int *= 12
int /= 12
int %= 12
true && true
true || false
12 === 3
12 !== 3
12 == 3
12 != 3
12 <= 3
12 >= 3
12 < 3
12 > 3
12 + 3 - 12
12 % 3 * 12 / 3
! true
int ++
++ int
int --
-- int
+ 12
- 12
1 .. 2
}
}
@@ -0,0 +1,39 @@
class Some {
fun some() {
var int : Int=0
int=12
int+=12
int-=12
int*=12
int/=12
int%=12
true&&true
true||false
12===3
12!==3
12==3
12!=3
12<=3
12>=3
12<3
12>3
12+3-12
12%3*12/3
!true
int++
++int
int--
--int
+12
-12
1..2
}
}
@@ -24,6 +24,21 @@ import org.jetbrains.jet.plugin.formatter.JetCodeStyleSettings;
* Based on com.intellij.psi.formatter.java.JavaFormatterTest
*/
public class JetFormatterTest extends AbstractJetFormatterTest {
public void testAddSpacesAroundOperations() throws Exception {
getSettings().SPACE_AROUND_ASSIGNMENT_OPERATORS = true;
getSettings().SPACE_AROUND_LOGICAL_OPERATORS = true;
getSettings().SPACE_AROUND_EQUALITY_OPERATORS = true;
getSettings().SPACE_AROUND_RELATIONAL_OPERATORS = true;
getSettings().SPACE_AROUND_ADDITIVE_OPERATORS = true;
getSettings().SPACE_AROUND_MULTIPLICATIVE_OPERATORS = true;
getSettings().SPACE_AROUND_UNARY_OPERATOR = true;
getJetSettings().SPACE_AROUND_RANGE = true;
doTest();
getSettings().clearCodeStyleSettings();
}
public void testBlockFor() throws Exception {
doTest();
}
@@ -54,6 +69,21 @@ public class JetFormatterTest extends AbstractJetFormatterTest {
doTest();
}
public void testRemoveSpacesAroundOperations() throws Exception {
getSettings().SPACE_AROUND_ASSIGNMENT_OPERATORS = false;
getSettings().SPACE_AROUND_LOGICAL_OPERATORS = false;
getSettings().SPACE_AROUND_EQUALITY_OPERATORS = false;
getSettings().SPACE_AROUND_RELATIONAL_OPERATORS = false;
getSettings().SPACE_AROUND_ADDITIVE_OPERATORS = false;
getSettings().SPACE_AROUND_MULTIPLICATIVE_OPERATORS = false;
getSettings().SPACE_AROUND_UNARY_OPERATOR = false;
getJetSettings().SPACE_AROUND_RANGE = false;
doTest();
getSettings().clearCodeStyleSettings();
}
public void testSpaceAroundTypeColon() throws Exception {
getJetSettings().SPACE_AFTER_TYPE_COLON = false;
getJetSettings().SPACE_BEFORE_TYPE_COLON = true;