@@ -33,49 +33,53 @@ public class CompletionHandler{
33
33
34
34
CompletableFuture <Either <List <CompletionItem >, CompletionList >> completion (TextDocumentPositionParams position ){
35
35
return CompletableFutures .computeAsync (cancelChecker ->{
36
- ICompilationUnit unit = JDTUtils .resolveCompilationUnit (position .getTextDocument ().getUri ());
37
- List <CompletionItem > completionItems = this .computeContentAssist (unit ,
38
- position .getPosition ().getLine (),
39
- position .getPosition ().getCharacter (), new CancellableProgressMonitor (cancelChecker ));
36
+ List <CompletionItem > completionItems ;
37
+ try {
38
+ ICompilationUnit unit = JDTUtils .resolveCompilationUnit (position .getTextDocument ().getUri ());
39
+ completionItems = this .computeContentAssist (unit ,
40
+ position .getPosition ().getLine (),
41
+ position .getPosition ().getCharacter (), new CancellableProgressMonitor (cancelChecker ));
42
+ } catch (Exception e ) {
43
+ JavaLanguageServerPlugin .logException ("Problem with codeComplete for " + position .getTextDocument ().getUri (), e );
44
+ completionItems = Collections .emptyList ();
45
+ }
40
46
CompletionList $ = new CompletionList ();
41
47
$ .setItems (completionItems );
42
48
JavaLanguageServerPlugin .logInfo ("Completion request completed" );
43
49
return Either .forRight ($ );
44
50
});
45
51
}
46
52
47
- private List <CompletionItem > computeContentAssist (ICompilationUnit unit , int line , int column , IProgressMonitor monitor ) {
53
+ private List <CompletionItem > computeContentAssist (ICompilationUnit unit , int line , int column , IProgressMonitor monitor ) throws JavaModelException {
48
54
CompletionResponses .clear ();
49
55
if (unit == null ) {
50
56
return Collections .emptyList ();
51
57
}
52
58
List <CompletionItem > proposals = new ArrayList <>();
53
- try {
54
- final int offset = JsonRpcHelpers .toOffset (unit .getBuffer (), line , column );
55
- CompletionProposalRequestor collector = new CompletionProposalRequestor (unit , offset );
56
- // Allow completions for unresolved types - since 3.3
57
- collector .setAllowsRequiredProposals (CompletionProposal .FIELD_REF , CompletionProposal .TYPE_REF , true );
58
- collector .setAllowsRequiredProposals (CompletionProposal .FIELD_REF , CompletionProposal .TYPE_IMPORT , true );
59
- collector .setAllowsRequiredProposals (CompletionProposal .FIELD_REF , CompletionProposal .FIELD_IMPORT , true );
60
59
61
- collector .setAllowsRequiredProposals (CompletionProposal .METHOD_REF , CompletionProposal .TYPE_REF , true );
62
- collector .setAllowsRequiredProposals (CompletionProposal .METHOD_REF , CompletionProposal .TYPE_IMPORT , true );
63
- collector .setAllowsRequiredProposals (CompletionProposal .METHOD_REF , CompletionProposal .METHOD_IMPORT , true );
60
+ final int offset = JsonRpcHelpers .toOffset (unit .getBuffer (), line , column );
61
+ CompletionProposalRequestor collector = new CompletionProposalRequestor (unit , offset );
62
+ // Allow completions for unresolved types - since 3.3
63
+ collector .setAllowsRequiredProposals (CompletionProposal .FIELD_REF , CompletionProposal .TYPE_REF , true );
64
+ collector .setAllowsRequiredProposals (CompletionProposal .FIELD_REF , CompletionProposal .TYPE_IMPORT , true );
65
+ collector .setAllowsRequiredProposals (CompletionProposal .FIELD_REF , CompletionProposal .FIELD_IMPORT , true );
64
66
65
- collector .setAllowsRequiredProposals (CompletionProposal .CONSTRUCTOR_INVOCATION , CompletionProposal .TYPE_REF , true );
67
+ collector .setAllowsRequiredProposals (CompletionProposal .METHOD_REF , CompletionProposal .TYPE_REF , true );
68
+ collector .setAllowsRequiredProposals (CompletionProposal .METHOD_REF , CompletionProposal .TYPE_IMPORT , true );
69
+ collector .setAllowsRequiredProposals (CompletionProposal .METHOD_REF , CompletionProposal .METHOD_IMPORT , true );
66
70
67
- collector .setAllowsRequiredProposals (CompletionProposal .ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION , CompletionProposal .TYPE_REF , true );
68
- collector .setAllowsRequiredProposals (CompletionProposal .ANONYMOUS_CLASS_DECLARATION , CompletionProposal .TYPE_REF , true );
71
+ collector .setAllowsRequiredProposals (CompletionProposal .CONSTRUCTOR_INVOCATION , CompletionProposal .TYPE_REF , true );
69
72
70
- collector .setAllowsRequiredProposals (CompletionProposal .TYPE_REF , CompletionProposal .TYPE_REF , true );
73
+ collector .setAllowsRequiredProposals (CompletionProposal .ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION , CompletionProposal .TYPE_REF , true );
74
+ collector .setAllowsRequiredProposals (CompletionProposal .ANONYMOUS_CLASS_DECLARATION , CompletionProposal .TYPE_REF , true );
71
75
72
- if (offset >-1 && !monitor .isCanceled ()) {
73
- unit .codeComplete (offset , collector , monitor );
74
- proposals .addAll (collector .getCompletionItems ());
75
- }
76
- } catch (JavaModelException e ) {
77
- JavaLanguageServerPlugin .logException ("Problem with codeComplete for " + unit .getElementName (), e );
76
+ collector .setAllowsRequiredProposals (CompletionProposal .TYPE_REF , CompletionProposal .TYPE_REF , true );
77
+
78
+ if (offset >-1 && !monitor .isCanceled ()) {
79
+ unit .codeComplete (offset , collector , monitor );
80
+ proposals .addAll (collector .getCompletionItems ());
78
81
}
82
+
79
83
return proposals ;
80
84
}
81
85
}
0 commit comments