KT-1719 Navigate -> Symbol... completions are not super helpful for extension functions
#KT-1719 fixed
This commit is contained in:
@@ -42,6 +42,7 @@ abstract public class JetFunction extends JetTypeParameterListOwner
|
||||
return (JetParameterList) findChildByType(JetNodeTypes.VALUE_PARAMETER_LIST);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<JetParameter> getValueParameters() {
|
||||
JetParameterList list = getValueParameterList();
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.jetbrains.jet.plugin.caches;
|
||||
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Collections2;
|
||||
import com.intellij.navigation.ChooseByNameContributor;
|
||||
import com.intellij.navigation.NavigationItem;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -48,7 +50,7 @@ public class GotoSymbolContributor implements ChooseByNameContributor {
|
||||
final Collection<? extends NavigationItem> functions = StubIndex.getInstance().get(
|
||||
JetIndexKeys.FUNCTIONS_SHORT_NAME_KEY, name, project, scope);
|
||||
|
||||
final List<NavigationItem> items = new ArrayList<NavigationItem>(functions);
|
||||
final List<NavigationItem> items = new ArrayList<NavigationItem>(Collections2.filter(functions, Predicates.notNull()));
|
||||
return ArrayUtil.toObjectArray(items, NavigationItem.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,11 +16,15 @@
|
||||
|
||||
package org.jetbrains.jet.plugin.presentation;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.Collections2;
|
||||
import com.intellij.navigation.ColoredItemPresentation;
|
||||
import com.intellij.navigation.ItemPresentation;
|
||||
import com.intellij.navigation.ItemPresentationProvider;
|
||||
import com.intellij.openapi.editor.colors.TextAttributesKey;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.jetbrains.jet.lang.psi.JetNamedFunction;
|
||||
import org.jetbrains.jet.lang.psi.JetParameter;
|
||||
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
||||
import org.jetbrains.jet.lang.psi.JetTypeReference;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
@@ -28,6 +32,7 @@ import org.jetbrains.jet.plugin.JetIconProvider;
|
||||
import org.jetbrains.jet.util.QualifiedNamesUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* @author Nikolay Krasko
|
||||
@@ -43,15 +48,35 @@ public class JetFunctionPresenter implements ItemPresentationProvider<JetNamedFu
|
||||
|
||||
@Override
|
||||
public String getPresentableText() {
|
||||
return function.getName();
|
||||
StringBuilder presentation = new StringBuilder(function.getName());
|
||||
|
||||
Collection<String> paramsStrings = Collections2.transform(function.getValueParameters(), new Function<JetParameter, String>() {
|
||||
@Override
|
||||
public String apply(JetParameter parameter) {
|
||||
if (parameter != null) {
|
||||
JetTypeReference reference = parameter.getTypeReference();
|
||||
if (reference != null) {
|
||||
String text = reference.getText();
|
||||
if (text != null) {
|
||||
return text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "?";
|
||||
}
|
||||
});
|
||||
|
||||
presentation.append("(").append(StringUtils.join(paramsStrings, ",")).append(")");
|
||||
return presentation.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getLocationString() {
|
||||
FqName name = JetPsiUtil.getFQName(function);
|
||||
if (name != null) {
|
||||
JetTypeReference typeRef = function.getReturnTypeRef();
|
||||
String extensionLocation = typeRef != null ? "for " + typeRef.getText() + " " : "";
|
||||
JetTypeReference receiverTypeRef = function.getReceiverTypeRef();
|
||||
String extensionLocation = receiverTypeRef != null ? "for " + receiverTypeRef.getText() + " " : "";
|
||||
return String.format("(%sin %s)", extensionLocation, QualifiedNamesUtil.withoutLastSegment(name));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user