Skip to content

Commit 1c694c9

Browse files
committed
Include __typename in field completion (#164)
1 parent a784387 commit 1c694c9

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/main/com/intellij/lang/jsgraphql/ide/completion/GraphQLCompletionContributor.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ protected void addCompletions(@NotNull final CompletionParameters parameters, Pr
182182
@Override
183183
protected void addCompletions(@NotNull final CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) {
184184

185+
// move "__*" fields to bottom
186+
final CompletionResultSet orderedResult = updateResult(parameters, result);
187+
185188
final PsiElement completionElement = Optional.ofNullable(parameters.getOriginalPosition()).orElse(parameters.getPosition());
186189

187190
GraphQLTypeScopeProvider typeScopeProvider = PsiTreeUtil.getParentOfType(completionElement, GraphQLTypeScopeProvider.class);
@@ -234,14 +237,16 @@ protected void addCompletions(@NotNull final CompletionParameters parameters, Pr
234237
break;
235238
}
236239
}
237-
result.addElement(element);
240+
orderedResult.addElement(element);
238241
});
239242
}
240243
if (!(typeScopeProvider instanceof GraphQLOperationDefinition)) {
241244
// show the '...' except when top level selection in an operation
242-
result.addElement(LookupElementBuilder.create("...").withInsertHandler((ctx, item) -> {
245+
orderedResult.addElement(LookupElementBuilder.create("...").withInsertHandler((ctx, item) -> {
243246
AutoPopupController.getInstance(ctx.getProject()).autoPopupMemberLookup(ctx.getEditor(), null);
244247
}));
248+
// and add the built-in __typename option
249+
orderedResult.addElement(LookupElementBuilder.create("__typename"));
245250
}
246251
}
247252
}
@@ -1079,7 +1084,7 @@ public int compareTo(LookupElementComparator other) {
10791084
}
10801085

10811086
private String getSortText(LookupElement element) {
1082-
if (element.getLookupString().startsWith("__")) {
1087+
if (element.getLookupString().startsWith("__") || element.getLookupString().startsWith("...")) {
10831088
return "|" + element.getLookupString();
10841089
}
10851090
return element.getLookupString();

src/test/com/intellij/lang/jsgraphql/operations/JSGraphQLOperationsCodeInsightTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public void testCompletionNestedFieldArg3() {
9999

100100
@Test
101101
public void testCompletionFieldExtension() {
102-
doTestCompletion("CompletionFieldExtension.graphql", Lists.newArrayList("...", "enumField", "extended", "fieldWithArg", "fieldWithInput", "id", "name", "search"));
102+
doTestCompletion("CompletionFieldExtension.graphql", Lists.newArrayList("enumField", "extended", "fieldWithArg", "fieldWithInput", "id", "name", "search", "...", "__typename"));
103103
}
104104

105105

@@ -112,7 +112,7 @@ public void testCompletionFragmentDefinition() {
112112

113113
@Test
114114
public void testCompletionFragmentField() {
115-
doTestCompletion("CompletionFragmentField.graphql", Lists.newArrayList("...", "id"));
115+
doTestCompletion("CompletionFragmentField.graphql", Lists.newArrayList("id", "...", "__typename"));
116116
}
117117

118118
@Test

0 commit comments

Comments
 (0)