Skip to content

Commit c560b85

Browse files
author
angelozerr
committed
Implement getCodeFixes request. See
#97
1 parent 8015e8b commit c560b85

11 files changed

+158
-1
lines changed

core/ts.core/src/ts/client/CommandNames.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ public enum CommandNames {
2222
"format"), References("references"), Occurrences("occurrences"), Configure(
2323
"configure"), SemanticDiagnosticsSync("semanticDiagnosticsSync",
2424
"2.0.3"), SyntacticDiagnosticsSync("syntacticDiagnosticsSync",
25-
"2.0.3"), Implementation("implementation", "2.0.6");
25+
"2.0.3"), Implementation("implementation",
26+
"2.0.6"), GetCodeFixes("2.1.0");
2627

2728
private final String name;
2829
private final String sinceVersion;

core/ts.core/src/ts/client/ITypeScriptServiceClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package ts.client;
1212

1313
import ts.TypeScriptException;
14+
import ts.client.codefixes.ITypeScriptGetCodeFixesCollector;
1415
import ts.client.completions.ITypeScriptCompletionCollector;
1516
import ts.client.completions.ITypeScriptCompletionEntryDetailsCollector;
1617
import ts.client.definition.ITypeScriptDefinitionCollector;
@@ -97,4 +98,8 @@ void syntacticDiagnosticsSync(String file, Boolean includeLinePosition, ITypeScr
9798

9899
void implementation(String fileName, int line, int offset, ITypeScriptDefinitionCollector collector)
99100
throws TypeScriptException;
101+
102+
// Since 2.1.0
103+
void getCodeFixes(String fileName, IPositionProvider positionProvider, int startLine, int startOffset, int endLine,
104+
int endOffset, ITypeScriptGetCodeFixesCollector collector) throws TypeScriptException;
100105
}

core/ts.core/src/ts/client/TypeScriptServiceClient.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.eclipsesource.json.JsonValue;
2828

2929
import ts.TypeScriptException;
30+
import ts.client.codefixes.ITypeScriptGetCodeFixesCollector;
3031
import ts.client.completions.ITypeScriptCompletionCollector;
3132
import ts.client.completions.ITypeScriptCompletionEntryDetailsCollector;
3233
import ts.client.definition.ITypeScriptDefinitionCollector;
@@ -43,6 +44,7 @@
4344
import ts.internal.client.RequestItem;
4445
import ts.internal.client.protocol.ChangeRequest;
4546
import ts.internal.client.protocol.CloseRequest;
47+
import ts.internal.client.protocol.CodeFixRequest;
4648
import ts.internal.client.protocol.CompletionDetailsRequest;
4749
import ts.internal.client.protocol.CompletionsRequest;
4850
import ts.internal.client.protocol.ConfigureRequest;
@@ -330,6 +332,16 @@ public void implementation(String fileName, int line, int offset, ITypeScriptDef
330332
execute(request);
331333
}
332334

335+
// ---------------- Since 2.1.0
336+
337+
@Override
338+
public void getCodeFixes(String fileName, IPositionProvider positionProvider, int startLine, int startOffset,
339+
int endLine, int endOffset, ITypeScriptGetCodeFixesCollector collector) throws TypeScriptException {
340+
CodeFixRequest request = new CodeFixRequest(fileName, positionProvider, startLine, startOffset, endLine,
341+
endOffset, collector);
342+
execute(request);
343+
}
344+
333345
private void execute(Request request) throws TypeScriptException {
334346
if (!request.isAsynch()) {
335347
try {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package ts.client.codefixes;
2+
3+
import java.util.List;
4+
5+
public class CodeAction {
6+
7+
/** Description of the code action to display in the UI of the editor */
8+
private String description;
9+
/** Text changes to apply to each file as part of the code action */
10+
private List<FileCodeEdits> changes;
11+
12+
public String getDescription() {
13+
return description;
14+
}
15+
16+
public List<FileCodeEdits> getChanges() {
17+
return changes;
18+
}
19+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package ts.client.codefixes;
2+
3+
import ts.client.Location;
4+
5+
public class CodeEdit {
6+
7+
/**
8+
* First character of the text span to edit.
9+
*/
10+
private Location start;
11+
12+
/**
13+
* One character past last character of the text span to edit.
14+
*/
15+
private Location end;
16+
17+
/**
18+
* Replace the span defined above with this string (may be the empty
19+
* string).
20+
*/
21+
private String newText;
22+
23+
public Location getStart() {
24+
return start;
25+
}
26+
27+
public Location getEnd() {
28+
return end;
29+
}
30+
31+
public String getNewText() {
32+
return newText;
33+
}
34+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package ts.client.codefixes;
2+
3+
public class FileCodeEdits {
4+
5+
private String fileName;
6+
private CodeEdit textChanges;
7+
8+
public String getFileName() {
9+
return fileName;
10+
}
11+
12+
public CodeEdit getTextChanges() {
13+
return textChanges;
14+
}
15+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ts.client.codefixes;
2+
3+
import ts.client.ITypeScriptCollector;
4+
5+
public interface ITypeScriptGetCodeFixesCollector extends ITypeScriptCollector {
6+
7+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package ts.internal.client.protocol;
2+
3+
import com.eclipsesource.json.JsonObject;
4+
5+
import ts.TypeScriptException;
6+
import ts.client.CommandNames;
7+
import ts.client.IPositionProvider;
8+
import ts.client.codefixes.ITypeScriptGetCodeFixesCollector;
9+
10+
public class CodeFixRequest extends SimpleRequest<ITypeScriptGetCodeFixesCollector> {
11+
12+
public CodeFixRequest(String fileName, IPositionProvider positionProvider, int startLine, int startOffset,
13+
int endLine, int endOffset, ITypeScriptGetCodeFixesCollector collector) {
14+
super(CommandNames.GetCodeFixes, new CodeFixRequestArgs(fileName, startLine, startOffset, endLine, endOffset),
15+
null);
16+
super.setCollector(collector);
17+
}
18+
19+
@Override
20+
public void collect(JsonObject response) throws TypeScriptException {
21+
// TODO Auto-generated method stub
22+
23+
}
24+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package ts.internal.client.protocol;
2+
3+
public class CodeFixRequestArgs extends FileRequestArgs {
4+
5+
public CodeFixRequestArgs(String file, int startLine, int startOffset, int endLine, int endOffset) {
6+
super(file);
7+
super.add("startLine", startLine);
8+
super.add("startOffset", startOffset);
9+
super.add("endLine", endLine);
10+
super.add("endOffset", endOffset);
11+
}
12+
13+
}

core/ts.core/src/ts/resources/AbstractTypeScriptFile.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import ts.client.ITypeScriptAsynchCollector;
1818
import ts.client.ITypeScriptServiceClient;
1919
import ts.client.Location;
20+
import ts.client.codefixes.ITypeScriptGetCodeFixesCollector;
2021
import ts.client.completions.ITypeScriptCompletionCollector;
2122
import ts.client.definition.ITypeScriptDefinitionCollector;
2223
import ts.client.format.FormatOptions;
@@ -192,6 +193,20 @@ public void implementation(int position, ITypeScriptDefinitionCollector collecto
192193
client.implementation(this.getName(), line, offset, collector);
193194
}
194195

196+
@Override
197+
public void getCodeFixes(int startPosition, int endPosition, ITypeScriptGetCodeFixesCollector collector)
198+
throws TypeScriptException {
199+
this.synch();
200+
ITypeScriptServiceClient client = tsProject.getClient();
201+
Location startLocation = this.getLocation(startPosition);
202+
int startLine = startLocation.getLine();
203+
int startOffset = startLocation.getOffset();
204+
Location endLocation = this.getLocation(endPosition);
205+
int endLine = endLocation.getLine();
206+
int endOffset = endLocation.getOffset();
207+
client.getCodeFixes(this.getName(), this, startLine, startOffset, endLine, endOffset, collector);
208+
}
209+
195210
private class TypeScriptNavBarCollector implements ITypeScriptNavBarCollector, ITypeScriptAsynchCollector {
196211

197212
@Override

core/ts.core/src/ts/resources/ITypeScriptFile.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import ts.TypeScriptException;
1414
import ts.client.IPositionProvider;
15+
import ts.client.codefixes.ITypeScriptGetCodeFixesCollector;
1516
import ts.client.completions.ITypeScriptCompletionCollector;
1617
import ts.client.definition.ITypeScriptDefinitionCollector;
1718
import ts.client.format.FormatOptions;
@@ -149,6 +150,17 @@ public interface ITypeScriptFile extends IPositionProvider {
149150
*/
150151
void implementation(int position, ITypeScriptDefinitionCollector collector) throws TypeScriptException;
151152

153+
/**
154+
* Get code fixes.
155+
*
156+
* @param startPosition
157+
* @param endPosition
158+
* @param collector
159+
* @throws TypeScriptException
160+
*/
161+
void getCodeFixes(int startPosition, int endPosition, ITypeScriptGetCodeFixesCollector collector)
162+
throws TypeScriptException;
163+
152164
void addNavbarListener(INavbarListener listener);
153165

154166
void removeNavbarListener(INavbarListener listener);

0 commit comments

Comments
 (0)