diff --git a/src/server/client.ts b/src/server/client.ts index 60486e80371..4cee592fb6c 100644 --- a/src/server/client.ts +++ b/src/server/client.ts @@ -208,9 +208,9 @@ module ts.server { return response.body[0]; } - getNavigateToItems(searchTerm: string): NavigateToItem[] { + getNavigateToItems(searchValue: string): NavigateToItem[] { var args: protocol.NavtoRequestArgs = { - searchTerm, + searchValue, file: this.host.getScriptFileNames()[0] }; diff --git a/src/server/protocol.d.ts b/src/server/protocol.d.ts index b07fb20d48d..a4541d2666d 100644 --- a/src/server/protocol.d.ts +++ b/src/server/protocol.d.ts @@ -676,7 +676,11 @@ declare module ts.server.protocol { * Search term to navigate to from current location; term can * be '.*' or an identifier prefix. */ - searchTerm: string; + searchValue: string; + /** + * Optional limit on the number of items to return. + */ + maxResultCount?: number; } /** diff --git a/src/server/session.ts b/src/server/session.ts index 19f6cd3645e..319690f3bfe 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -52,30 +52,6 @@ module ts.server { return 1; } } - - function sortNavItems(items: ts.NavigateToItem[]) { - return items.sort((a, b) => { - if (a.matchKind < b.matchKind) { - return -1; - } - else if (a.matchKind == b.matchKind) { - var lowa = a.name.toLowerCase(); - var lowb = b.name.toLowerCase(); - if (lowa < lowb) { - return -1; - } - else if (lowa == lowb) { - return 0; - } - else { - return 1; - } - } - else { - return 1; - } - }) - } function formatDiag(fileName: string, project: Project, diag: ts.Diagnostic) { return { @@ -404,7 +380,7 @@ module ts.server { var position = compilerService.host.lineColToPosition(file, line, col); var quickInfo = compilerService.languageService.getQuickInfoAtPosition(file, position); if (!quickInfo) { - throw Errors.NoContent; + return undefined; } var displayString = ts.displayPartsToString(quickInfo.displayParts); @@ -625,7 +601,7 @@ module ts.server { return this.decorateNavigationBarItem(project, fileName, items); } - getNavigateToItems(searchTerm: string, fileName: string): protocol.NavtoItem[] { + getNavigateToItems(searchValue: string, fileName: string, maxResultCount?: number): protocol.NavtoItem[] { var file = ts.normalizePath(fileName); var project = this.projectService.getProjectForFile(file); if (!project) { @@ -633,7 +609,7 @@ module ts.server { } var compilerService = project.compilerService; - var navItems = sortNavItems(compilerService.languageService.getNavigateToItems(searchTerm)); + var navItems = compilerService.languageService.getNavigateToItems(searchValue, maxResultCount); if (!navItems) { throw Errors.NoContent; } @@ -690,6 +666,7 @@ module ts.server { try { var request = JSON.parse(message); var response: any; + var errorMessage: string; switch (request.command) { case CommandNames.Definition: { var defArgs = request.arguments; @@ -714,6 +691,9 @@ module ts.server { case CommandNames.Quickinfo: { var quickinfoArgs = request.arguments; response = this.getQuickInfo(quickinfoArgs.line, quickinfoArgs.col, quickinfoArgs.file); + if (!response) { + errorMessage = "No info at this location"; + } break; } case CommandNames.Format: { @@ -765,7 +745,7 @@ module ts.server { } case CommandNames.Navto: { var navtoArgs = request.arguments; - response = this.getNavigateToItems(navtoArgs.searchTerm, navtoArgs.file); + response = this.getNavigateToItems(navtoArgs.searchValue, navtoArgs.file, navtoArgs.maxResultCount); break; } case CommandNames.Brace: { @@ -788,6 +768,9 @@ module ts.server { if (response) { this.output(response, request.command, request.seq); } + else if (errorMessage) { + this.output(undefined, request.command, request.seq, errorMessage); + } } catch (err) { if (err instanceof OperationCanceledException) {