Skip to content

Commit 5b6c65f

Browse files
Added support for getOccurrences to the server.
1 parent 68b38b3 commit 5b6c65f

3 files changed

Lines changed: 41 additions & 1 deletion

File tree

src/server/client.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,7 @@ module ts.server {
446446
if (!response.body) {
447447
return undefined;
448448
}
449+
449450
var helpItems: protocol.SignatureHelpItems = response.body;
450451
var span = helpItems.applicableSpan;
451452
var start = this.lineOffsetToPosition(fileName, span.start);
@@ -465,7 +466,26 @@ module ts.server {
465466
}
466467

467468
getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[] {
468-
throw new Error("Not Implemented Yet.");
469+
var lineOffset = this.positionToOneBasedLineOffset(fileName, position);
470+
var args: protocol.FileLocationRequestArgs = {
471+
file: fileName,
472+
line: lineOffset.line,
473+
offset: lineOffset.offset,
474+
};
475+
476+
var request = this.processRequest<protocol.OccurrencesRequest>(CommandNames.Occurrences, args);
477+
var response = this.processResponse<protocol.OccurrencesResponse>(request);
478+
479+
return response.body.map(entry => {
480+
var fileName = entry.file;
481+
var start = this.lineOffsetToPosition(fileName, entry.start);
482+
var end = this.lineOffsetToPosition(fileName, entry.end);
483+
return {
484+
fileName,
485+
textSpan: ts.createTextSpanFromBounds(start, end),
486+
isWriteAccess: entry.isWriteAccess,
487+
};
488+
});
469489
}
470490

471491
getOutliningSpans(fileName: string): OutliningSpan[] {

src/server/protocol.d.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,25 @@ declare module ts.server.protocol {
165165
body?: FileSpan[];
166166
}
167167

168+
/**
169+
* Get occurrences request; value of command field is
170+
* "occurrences". Return response giving spans that are relevant
171+
* in the file at a given line and column.
172+
*/
173+
export interface OccurrencesRequest extends FileLocationRequest {
174+
}
175+
176+
export interface OccurrencesResponseItem extends FileSpan {
177+
/**
178+
* True if the occurrence is a write location, false otherwise.
179+
*/
180+
isWriteAccess: boolean;
181+
}
182+
183+
export interface OccurrencesResponse extends Response {
184+
body?: OccurrencesResponseItem[];
185+
}
186+
168187
/**
169188
* Find references request; value of command field is
170189
* "references". Return response giving the file locations that

src/server/session.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ module ts.server {
8989
export var Geterr = "geterr";
9090
export var NavBar = "navbar";
9191
export var Navto = "navto";
92+
export var Occurrences = "occurrences";
9293
export var Open = "open";
9394
export var Quickinfo = "quickinfo";
9495
export var References = "references";

0 commit comments

Comments
 (0)