UNPKG

atom-languageclient

Version:
43 lines 5.78 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const assert = require("assert"); const convert_1 = require("../convert"); class CodeHighlightAdapter { /** @returns A {Boolean} indicating this adapter can adapt the server based on the given serverCapabilities. */ static canAdapt(serverCapabilities) { return serverCapabilities.documentHighlightProvider === true; } /** * Public: Creates highlight markers for a given editor position. Throws an error if documentHighlightProvider is not * a registered capability. * * @param connection A {LanguageClientConnection} to the language server that provides highlights. * @param serverCapabilities The {ServerCapabilities} of the language server that will be used. * @param editor The Atom {TextEditor} containing the text to be highlighted. * @param position The Atom {Point} to fetch highlights for. * @returns A {Promise} of an {Array} of {Range}s to be turned into highlights. */ static highlight(connection, serverCapabilities, editor, position) { return __awaiter(this, void 0, void 0, function* () { assert(serverCapabilities.documentHighlightProvider, "Must have the documentHighlight capability"); const highlights = yield connection.documentHighlight(convert_1.default.editorToTextDocumentPositionParams(editor, position)); if (highlights === null) { return []; } return highlights.map((highlight) => { return convert_1.default.lsRangeToAtomRange(highlight.range); }); }); } } exports.default = CodeHighlightAdapter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1oaWdobGlnaHQtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9hZGFwdGVycy9jb2RlLWhpZ2hsaWdodC1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLHdDQUFnQztBQUloQyxNQUFxQixvQkFBb0I7SUFDdkMsK0dBQStHO0lBQ3hHLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQXNDO1FBQzNELE9BQU8sa0JBQWtCLENBQUMseUJBQXlCLEtBQUssSUFBSSxDQUFBO0lBQzlELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxNQUFNLENBQU8sU0FBUyxDQUMzQixVQUFvQyxFQUNwQyxrQkFBc0MsRUFDdEMsTUFBa0IsRUFDbEIsUUFBZTs7WUFFZixNQUFNLENBQUMsa0JBQWtCLENBQUMseUJBQXlCLEVBQUUsNENBQTRDLENBQUMsQ0FBQTtZQUNsRyxNQUFNLFVBQVUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBTyxDQUFDLGtDQUFrQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBQ25ILElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtnQkFDdkIsT0FBTyxFQUFFLENBQUE7YUFDVjtZQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNsQyxPQUFPLGlCQUFPLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3BELENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUFBO0NBQ0Y7QUEvQkQsdUNBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIilcbmltcG9ydCBDb252ZXJ0IGZyb20gXCIuLi9jb252ZXJ0XCJcbmltcG9ydCB7IFBvaW50LCBUZXh0RWRpdG9yLCBSYW5nZSB9IGZyb20gXCJhdG9tXCJcbmltcG9ydCB7IExhbmd1YWdlQ2xpZW50Q29ubmVjdGlvbiwgU2VydmVyQ2FwYWJpbGl0aWVzIH0gZnJvbSBcIi4uL2xhbmd1YWdlY2xpZW50XCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29kZUhpZ2hsaWdodEFkYXB0ZXIge1xuICAvKiogQHJldHVybnMgQSB7Qm9vbGVhbn0gaW5kaWNhdGluZyB0aGlzIGFkYXB0ZXIgY2FuIGFkYXB0IHRoZSBzZXJ2ZXIgYmFzZWQgb24gdGhlIGdpdmVuIHNlcnZlckNhcGFiaWxpdGllcy4gKi9cbiAgcHVibGljIHN0YXRpYyBjYW5BZGFwdChzZXJ2ZXJDYXBhYmlsaXRpZXM6IFNlcnZlckNhcGFiaWxpdGllcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZXJ2ZXJDYXBhYmlsaXRpZXMuZG9jdW1lbnRIaWdobGlnaHRQcm92aWRlciA9PT0gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFB1YmxpYzogQ3JlYXRlcyBoaWdobGlnaHQgbWFya2VycyBmb3IgYSBnaXZlbiBlZGl0b3IgcG9zaXRpb24uIFRocm93cyBhbiBlcnJvciBpZiBkb2N1bWVudEhpZ2hsaWdodFByb3ZpZGVyIGlzIG5vdFxuICAgKiBhIHJlZ2lzdGVyZWQgY2FwYWJpbGl0eS5cbiAgICpcbiAgICogQHBhcmFtIGNvbm5lY3Rpb24gQSB7TGFuZ3VhZ2VDbGllbnRDb25uZWN0aW9ufSB0byB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRoYXQgcHJvdmlkZXMgaGlnaGxpZ2h0cy5cbiAgICogQHBhcmFtIHNlcnZlckNhcGFiaWxpdGllcyBUaGUge1NlcnZlckNhcGFiaWxpdGllc30gb2YgdGhlIGxhbmd1YWdlIHNlcnZlciB0aGF0IHdpbGwgYmUgdXNlZC5cbiAgICogQHBhcmFtIGVkaXRvciBUaGUgQXRvbSB7VGV4dEVkaXRvcn0gY29udGFpbmluZyB0aGUgdGV4dCB0byBiZSBoaWdobGlnaHRlZC5cbiAgICogQHBhcmFtIHBvc2l0aW9uIFRoZSBBdG9tIHtQb2ludH0gdG8gZmV0Y2ggaGlnaGxpZ2h0cyBmb3IuXG4gICAqIEByZXR1cm5zIEEge1Byb21pc2V9IG9mIGFuIHtBcnJheX0gb2Yge1JhbmdlfXMgdG8gYmUgdHVybmVkIGludG8gaGlnaGxpZ2h0cy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgaGlnaGxpZ2h0KFxuICAgIGNvbm5lY3Rpb246IExhbmd1YWdlQ2xpZW50Q29ubmVjdGlvbixcbiAgICBzZXJ2ZXJDYXBhYmlsaXRpZXM6IFNlcnZlckNhcGFiaWxpdGllcyxcbiAgICBlZGl0b3I6IFRleHRFZGl0b3IsXG4gICAgcG9zaXRpb246IFBvaW50XG4gICk6IFByb21pc2U8UmFuZ2VbXT4ge1xuICAgIGFzc2VydChzZXJ2ZXJDYXBhYmlsaXRpZXMuZG9jdW1lbnRIaWdobGlnaHRQcm92aWRlciwgXCJNdXN0IGhhdmUgdGhlIGRvY3VtZW50SGlnaGxpZ2h0IGNhcGFiaWxpdHlcIilcbiAgICBjb25zdCBoaWdobGlnaHRzID0gYXdhaXQgY29ubmVjdGlvbi5kb2N1bWVudEhpZ2hsaWdodChDb252ZXJ0LmVkaXRvclRvVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMoZWRpdG9yLCBwb3NpdGlvbikpXG4gICAgaWYgKGhpZ2hsaWdodHMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgICByZXR1cm4gaGlnaGxpZ2h0cy5tYXAoKGhpZ2hsaWdodCkgPT4ge1xuICAgICAgcmV0dXJuIENvbnZlcnQubHNSYW5nZVRvQXRvbVJhbmdlKGhpZ2hsaWdodC5yYW5nZSlcbiAgICB9KVxuICB9XG59XG4iXX0=