UNPKG

5.78 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11Object.defineProperty(exports, "__esModule", { value: true });
12const assert = require("assert");
13const convert_1 = require("../convert");
14class CodeHighlightAdapter {
15 /** @returns A {Boolean} indicating this adapter can adapt the server based on the given serverCapabilities. */
16 static canAdapt(serverCapabilities) {
17 return serverCapabilities.documentHighlightProvider === true;
18 }
19 /**
20 * Public: Creates highlight markers for a given editor position. Throws an error if documentHighlightProvider is not
21 * a registered capability.
22 *
23 * @param connection A {LanguageClientConnection} to the language server that provides highlights.
24 * @param serverCapabilities The {ServerCapabilities} of the language server that will be used.
25 * @param editor The Atom {TextEditor} containing the text to be highlighted.
26 * @param position The Atom {Point} to fetch highlights for.
27 * @returns A {Promise} of an {Array} of {Range}s to be turned into highlights.
28 */
29 static highlight(connection, serverCapabilities, editor, position) {
30 return __awaiter(this, void 0, void 0, function* () {
31 assert(serverCapabilities.documentHighlightProvider, "Must have the documentHighlight capability");
32 const highlights = yield connection.documentHighlight(convert_1.default.editorToTextDocumentPositionParams(editor, position));
33 if (highlights === null) {
34 return [];
35 }
36 return highlights.map((highlight) => {
37 return convert_1.default.lsRangeToAtomRange(highlight.range);
38 });
39 });
40 }
41}
42exports.default = CodeHighlightAdapter;
43//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1oaWdobGlnaHQtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9hZGFwdGVycy9jb2RlLWhpZ2hsaWdodC1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLHdDQUFnQztBQUloQyxNQUFxQixvQkFBb0I7SUFDdkMsK0dBQStHO0lBQ3hHLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQXNDO1FBQzNELE9BQU8sa0JBQWtCLENBQUMseUJBQXlCLEtBQUssSUFBSSxDQUFBO0lBQzlELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxNQUFNLENBQU8sU0FBUyxDQUMzQixVQUFvQyxFQUNwQyxrQkFBc0MsRUFDdEMsTUFBa0IsRUFDbEIsUUFBZTs7WUFFZixNQUFNLENBQUMsa0JBQWtCLENBQUMseUJBQXlCLEVBQUUsNENBQTRDLENBQUMsQ0FBQTtZQUNsRyxNQUFNLFVBQVUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBTyxDQUFDLGtDQUFrQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBQ25ILElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtnQkFDdkIsT0FBTyxFQUFFLENBQUE7YUFDVjtZQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNsQyxPQUFPLGlCQUFPLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3BELENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUFBO0NBQ0Y7QUEvQkQsdUNBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIilcbmltcG9ydCBDb252ZXJ0IGZyb20gXCIuLi9jb252ZXJ0XCJcbmltcG9ydCB7IFBvaW50LCBUZXh0RWRpdG9yLCBSYW5nZSB9IGZyb20gXCJhdG9tXCJcbmltcG9ydCB7IExhbmd1YWdlQ2xpZW50Q29ubmVjdGlvbiwgU2VydmVyQ2FwYWJpbGl0aWVzIH0gZnJvbSBcIi4uL2xhbmd1YWdlY2xpZW50XCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29kZUhpZ2hsaWdodEFkYXB0ZXIge1xuICAvKiogQHJldHVybnMgQSB7Qm9vbGVhbn0gaW5kaWNhdGluZyB0aGlzIGFkYXB0ZXIgY2FuIGFkYXB0IHRoZSBzZXJ2ZXIgYmFzZWQgb24gdGhlIGdpdmVuIHNlcnZlckNhcGFiaWxpdGllcy4gKi9cbiAgcHVibGljIHN0YXRpYyBjYW5BZGFwdChzZXJ2ZXJDYXBhYmlsaXRpZXM6IFNlcnZlckNhcGFiaWxpdGllcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZXJ2ZXJDYXBhYmlsaXRpZXMuZG9jdW1lbnRIaWdobGlnaHRQcm92aWRlciA9PT0gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFB1YmxpYzogQ3JlYXRlcyBoaWdobGlnaHQgbWFya2VycyBmb3IgYSBnaXZlbiBlZGl0b3IgcG9zaXRpb24uIFRocm93cyBhbiBlcnJvciBpZiBkb2N1bWVudEhpZ2hsaWdodFByb3ZpZGVyIGlzIG5vdFxuICAgKiBhIHJlZ2lzdGVyZWQgY2FwYWJpbGl0eS5cbiAgICpcbiAgICogQHBhcmFtIGNvbm5lY3Rpb24gQSB7TGFuZ3VhZ2VDbGllbnRDb25uZWN0aW9ufSB0byB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRoYXQgcHJvdmlkZXMgaGlnaGxpZ2h0cy5cbiAgICogQHBhcmFtIHNlcnZlckNhcGFiaWxpdGllcyBUaGUge1NlcnZlckNhcGFiaWxpdGllc30gb2YgdGhlIGxhbmd1YWdlIHNlcnZlciB0aGF0IHdpbGwgYmUgdXNlZC5cbiAgICogQHBhcmFtIGVkaXRvciBUaGUgQXRvbSB7VGV4dEVkaXRvcn0gY29udGFpbmluZyB0aGUgdGV4dCB0byBiZSBoaWdobGlnaHRlZC5cbiAgICogQHBhcmFtIHBvc2l0aW9uIFRoZSBBdG9tIHtQb2ludH0gdG8gZmV0Y2ggaGlnaGxpZ2h0cyBmb3IuXG4gICAqIEByZXR1cm5zIEEge1Byb21pc2V9IG9mIGFuIHtBcnJheX0gb2Yge1JhbmdlfXMgdG8gYmUgdHVybmVkIGludG8gaGlnaGxpZ2h0cy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgaGlnaGxpZ2h0KFxuICAgIGNvbm5lY3Rpb246IExhbmd1YWdlQ2xpZW50Q29ubmVjdGlvbixcbiAgICBzZXJ2ZXJDYXBhYmlsaXRpZXM6IFNlcnZlckNhcGFiaWxpdGllcyxcbiAgICBlZGl0b3I6IFRleHRFZGl0b3IsXG4gICAgcG9zaXRpb246IFBvaW50XG4gICk6IFByb21pc2U8UmFuZ2VbXT4ge1xuICAgIGFzc2VydChzZXJ2ZXJDYXBhYmlsaXRpZXMuZG9jdW1lbnRIaWdobGlnaHRQcm92aWRlciwgXCJNdXN0IGhhdmUgdGhlIGRvY3VtZW50SGlnaGxpZ2h0IGNhcGFiaWxpdHlcIilcbiAgICBjb25zdCBoaWdobGlnaHRzID0gYXdhaXQgY29ubmVjdGlvbi5kb2N1bWVudEhpZ2hsaWdodChDb252ZXJ0LmVkaXRvclRvVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMoZWRpdG9yLCBwb3NpdGlvbikpXG4gICAgaWYgKGhpZ2hsaWdodHMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgICByZXR1cm4gaGlnaGxpZ2h0cy5tYXAoKGhpZ2hsaWdodCkgPT4ge1xuICAgICAgcmV0dXJuIENvbnZlcnQubHNSYW5nZVRvQXRvbVJhbmdlKGhpZ2hsaWdodC5yYW5nZSlcbiAgICB9KVxuICB9XG59XG4iXX0=
\No newline at end of file