Skip to content

Commit a82eb19

Browse files
cmagliefacchinm
authored andcommitted
autocomplete: extracted ArduinoCompletion to Completion generation method
1 parent 6d4dd65 commit a82eb19

File tree

1 file changed

+68
-63
lines changed

1 file changed

+68
-63
lines changed

app/src/cc/arduino/autocomplete/ClangCompletionProvider.java

Lines changed: 68 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import javax.swing.text.JTextComponent;
3737

3838
import org.fife.ui.autocomplete.Completion;
39-
import org.fife.ui.autocomplete.CompletionProvider;
4039
import org.fife.ui.autocomplete.DefaultCompletionProvider;
4140
import org.fife.ui.autocomplete.FunctionCompletion;
4241
import org.fife.ui.autocomplete.LanguageAwareCompletionProvider;
@@ -117,79 +116,85 @@ protected List<Completion> getCompletionsImpl(JTextComponent textarea) {
117116
}
118117

119118
String enteredText = getAlreadyEnteredText(textarea);
120-
121119
for (ArduinoCompletion cc : allCc) {
122120
// Filter completions based on already entered text
123121
if (!cc.getCompletion().getTypedText().startsWith(enteredText)) {
124122
continue;
125123
}
126124

127-
if (cc.type.equals("Function")) {
128-
List<Parameter> params = new ArrayList<>();
129-
int i=0;
130-
String fancyParameters = "(";
131-
for (CompletionChunk chunk : cc.completion.chunks) {
132-
if (chunk.placeholder != null) {
133-
ArduinoParameter p = cc.parameters.get(i);
134-
params.add(new Parameter(p.type, p.name));
135-
fancyParameters += (p.name.equals("") ? p.type : p.name) + ", ";
136-
i++;
137-
}
138-
}
139-
int lastComma = fancyParameters.lastIndexOf(",");
140-
if (lastComma > 0) {
141-
fancyParameters = fancyParameters.substring(0, lastComma);
142-
}
143-
fancyParameters += ")";
144-
145-
FunctionCompletion compl = new FunctionCompletion(this,
146-
cc.getCompletion().getTypedText(),
147-
cc.getCompletion().getResultType());
148-
compl.setParams(params);
149-
compl.setShortDescription(fancyParameters + " : " + cc.getCompletion().getResultType());
150-
res.add(compl);
151-
continue;
152-
}
153-
154-
String returnType = "";
155-
String typedText = null;
156-
String template = "";
157-
String fancyParameters = "(";
158-
159-
for (CompletionChunk chunk : cc.completion.chunks) {
160-
if (chunk.t != null) {
161-
template += chunk.t;
162-
}
163-
if (chunk.res != null) {
164-
returnType = chunk.res;
165-
}
166-
if (chunk.typedtext != null) {
167-
template += chunk.typedtext;
168-
typedText = chunk.typedtext;
169-
}
170-
if (chunk.placeholder != null) {
171-
String[] spl = chunk.placeholder.split(" ");
172-
template += "${" + spl[spl.length - 1] + "}";
173-
fancyParameters += spl[spl.length - 1] + ", ";
174-
}
175-
if (chunk.info != null) {
176-
//System.out.println("INFO: "+chunk.info);
177-
}
178-
}
179-
template += "${cursor}";
180-
int lastComma = fancyParameters.lastIndexOf(",");
181-
if (lastComma > 0) {
182-
fancyParameters = fancyParameters.substring(0, lastComma);
183-
}
184-
fancyParameters += ")";
185-
//System.out.println("TEMPLATE: " + template);
186-
TemplateCompletion compl = new TemplateCompletion(this, typedText, fancyParameters + " : " + returnType , template);
187-
res.add(compl);
125+
Completion completion = createCompletionFromArduinoCompletion(cc);
126+
res.add(completion);
188127
}
189128
return res;
190129
} catch (Exception e) {
191130
e.printStackTrace();
192131
return res;
193132
}
194133
}
134+
135+
private Completion createCompletionFromArduinoCompletion(ArduinoCompletion cc) {
136+
if (cc.type.equals("Function")) {
137+
List<Parameter> params = new ArrayList<>();
138+
int i = 0;
139+
String shortDesc = "(";
140+
for (CompletionChunk chunk : cc.completion.chunks) {
141+
if (chunk.placeholder != null) {
142+
ArduinoParameter p = cc.parameters.get(i);
143+
params.add(new Parameter(p.type, p.name));
144+
shortDesc += (p.name.equals("") ? p.type : p.name) + ", ";
145+
i++;
146+
}
147+
}
148+
int lastComma = shortDesc.lastIndexOf(",");
149+
if (lastComma > 0) {
150+
shortDesc = shortDesc.substring(0, lastComma);
151+
}
152+
shortDesc += ")";
153+
154+
FunctionCompletion compl = new FunctionCompletion(this,
155+
cc.getCompletion().getTypedText(),
156+
cc.getCompletion().getResultType());
157+
compl.setParams(params);
158+
compl.setShortDescription(shortDesc + " : "
159+
+ cc.getCompletion().getResultType());
160+
return compl;
161+
} else {
162+
163+
String returnType = "";
164+
String typedText = null;
165+
String template = "";
166+
String shortDesc = "";
167+
168+
for (CompletionChunk chunk : cc.completion.chunks) {
169+
if (chunk.t != null) {
170+
template += chunk.t;
171+
shortDesc += chunk.t;
172+
}
173+
if (chunk.res != null) {
174+
returnType = chunk.res;
175+
}
176+
if (chunk.typedtext != null) {
177+
template += chunk.typedtext;
178+
typedText = chunk.typedtext;
179+
}
180+
if (chunk.placeholder != null) {
181+
String[] spl = chunk.placeholder.split(" ");
182+
template += "${" + spl[spl.length - 1] + "}";
183+
shortDesc += spl[spl.length - 1] + ", ";
184+
}
185+
if (chunk.info != null) {
186+
// System.out.println("INFO: "+chunk.info);
187+
}
188+
}
189+
template += "${cursor}";
190+
int lastComma = shortDesc.lastIndexOf(",");
191+
if (lastComma > 0) {
192+
shortDesc = shortDesc.substring(0, lastComma);
193+
}
194+
shortDesc += ")";
195+
System.out.println("TEMPLATE: " + template);
196+
return new TemplateCompletion(this, typedText,
197+
shortDesc + " : " + returnType, template);
198+
}
199+
}
195200
}

0 commit comments

Comments
 (0)