Insert one additional space for function literals
This commit is contained in:
+19
-2
@@ -23,8 +23,11 @@ import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
@@ -35,6 +38,7 @@ import org.jetbrains.jet.lang.psi.JetQualifiedExpression;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.plugin.completion.JetLookupObject;
|
||||
import org.jetbrains.jet.plugin.formatter.JetCodeStyleSettings;
|
||||
import org.jetbrains.jet.plugin.quickfix.ImportInsertHelper;
|
||||
|
||||
/**
|
||||
@@ -100,8 +104,14 @@ public class JetFunctionInsertHandler implements InsertHandler<LookupElement> {
|
||||
if (openingBracketIndex == -1) {
|
||||
// Insert ()/{} if it's not already exist
|
||||
if (braces) {
|
||||
document.insertString(endOffset, " {}");
|
||||
openingBracketIndex = endOffset + 1;
|
||||
if (isInsertSpacesInOneLineFunctionEnabled(offsetElement.getProject())) {
|
||||
document.insertString(endOffset, " { }");
|
||||
openingBracketIndex = endOffset + 2;
|
||||
}
|
||||
else {
|
||||
document.insertString(endOffset, " {}");
|
||||
openingBracketIndex = endOffset + 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
document.insertString(endOffset, "()");
|
||||
@@ -125,6 +135,13 @@ public class JetFunctionInsertHandler implements InsertHandler<LookupElement> {
|
||||
PsiDocumentManager.getInstance(context.getProject()).commitDocument(context.getDocument());
|
||||
}
|
||||
|
||||
private static boolean isInsertSpacesInOneLineFunctionEnabled(Project project) {
|
||||
CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(project);
|
||||
JetCodeStyleSettings jetSettings = settings.getCustomSettings(JetCodeStyleSettings.class);
|
||||
|
||||
return jetSettings.INSERT_WHITESPACES_IN_SIMPLE_ONE_LINE_METHOD;
|
||||
}
|
||||
|
||||
private static void addImport(final InsertionContext context, final @NotNull LookupElement item) {
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
fun <T> jet.Array<T>.filter(predicate : (T) -> jet.Boolean) : java.util.List<T> = throw UnsupportedOperationException()
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
args.fil<caret>
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
fun <T> jet.Array<T>.filter(predicate : (T) -> jet.Boolean) : java.util.List<T> = throw UnsupportedOperationException()
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
args.filter {<caret>}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
fun <T> jet.Array<T>.filter(predicate : (T) -> jet.Boolean) : java.util.List<T> = throw UnsupportedOperationException()
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
args.filter {<caret>}
|
||||
args.filter { <caret> }
|
||||
}
|
||||
|
||||
@@ -23,9 +23,12 @@ import com.intellij.codeInsight.lookup.LookupElementPresentation;
|
||||
import com.intellij.codeInsight.lookup.LookupManager;
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import junit.framework.Assert;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.plugin.PluginTestCaseBase;
|
||||
import org.jetbrains.jet.plugin.formatter.JetCodeStyleSettings;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@@ -76,6 +79,18 @@ public class CompletionHandlerTest extends LightCompletionTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testFunctionLiteralInsertWhenNoSpacesForBraces() {
|
||||
CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject());
|
||||
JetCodeStyleSettings jetSettings = settings.getCustomSettings(JetCodeStyleSettings.class);
|
||||
|
||||
try {
|
||||
jetSettings.INSERT_WHITESPACES_IN_SIMPLE_ONE_LINE_METHOD = false;
|
||||
doTest();
|
||||
} finally {
|
||||
jetSettings.INSERT_WHITESPACES_IN_SIMPLE_ONE_LINE_METHOD = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void testHigherOrderFunction() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user