UNPKG

atom-languageclient

Version:
40 lines 6.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const assert = require("assert"); const convert_1 = require("../convert"); const atom_1 = require("atom"); class SignatureHelpAdapter { constructor(server, grammarScopes) { this._disposables = new atom_1.CompositeDisposable(); this._connection = server.connection; this._capabilities = server.capabilities; this._grammarScopes = grammarScopes; } /** @returns A {Boolean} indicating this adapter can adapt the server based on the given serverCapabilities. */ static canAdapt(serverCapabilities) { return serverCapabilities.signatureHelpProvider != null; } dispose() { this._disposables.dispose(); } attach(register) { const { signatureHelpProvider } = this._capabilities; assert(signatureHelpProvider != null); let triggerCharacters; if (signatureHelpProvider && Array.isArray(signatureHelpProvider.triggerCharacters)) { triggerCharacters = new Set(signatureHelpProvider.triggerCharacters); } this._disposables.add(register({ priority: 1, grammarScopes: this._grammarScopes, triggerCharacters, getSignatureHelp: this.getSignatureHelp.bind(this), })); } /** Public: Retrieves signature help for a given editor and position. */ getSignatureHelp(editor, point) { return this._connection.signatureHelp(convert_1.default.editorToTextDocumentPositionParams(editor, point)); } } exports.default = SignatureHelpAdapter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLWhlbHAtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9hZGFwdGVycy9zaWduYXR1cmUtaGVscC1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsaUNBQWlDO0FBQ2pDLHdDQUFnQztBQUVoQywrQkFBNkQ7QUFHN0QsTUFBcUIsb0JBQW9CO0lBTXZDLFlBQVksTUFBb0IsRUFBRSxhQUF1QjtRQUxqRCxpQkFBWSxHQUF3QixJQUFJLDBCQUFtQixFQUFFLENBQUE7UUFNbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFBO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQTtRQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsK0dBQStHO0lBQ3hHLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQXNDO1FBQzNELE9BQU8sa0JBQWtCLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFBO0lBQ3pELENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQXVDO1FBQ25ELE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUE7UUFDcEQsTUFBTSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxDQUFBO1FBRXJDLElBQUksaUJBQTBDLENBQUE7UUFDOUMsSUFBSSxxQkFBcUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDbkYsaUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtTQUNyRTtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixRQUFRLENBQUM7WUFDUCxRQUFRLEVBQUUsQ0FBQztZQUNYLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNsQyxpQkFBaUI7WUFDakIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDbkQsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRUQsd0VBQXdFO0lBQ2pFLGdCQUFnQixDQUFDLE1BQWtCLEVBQUUsS0FBWTtRQUN0RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGlCQUFPLENBQUMsa0NBQWtDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDbEcsQ0FBQztDQUNGO0FBNUNELHVDQTRDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgYXRvbUlkZSBmcm9tIFwiYXRvbS1pZGUtYmFzZVwiXG5pbXBvcnQgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKVxuaW1wb3J0IENvbnZlcnQgZnJvbSBcIi4uL2NvbnZlcnRcIlxuaW1wb3J0IHsgQWN0aXZlU2VydmVyIH0gZnJvbSBcIi4uL3NlcnZlci1tYW5hZ2VyXCJcbmltcG9ydCB7IENvbXBvc2l0ZURpc3Bvc2FibGUsIFBvaW50LCBUZXh0RWRpdG9yIH0gZnJvbSBcImF0b21cIlxuaW1wb3J0IHsgTGFuZ3VhZ2VDbGllbnRDb25uZWN0aW9uLCBTZXJ2ZXJDYXBhYmlsaXRpZXMsIFNpZ25hdHVyZUhlbHAgfSBmcm9tIFwiLi4vbGFuZ3VhZ2VjbGllbnRcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaWduYXR1cmVIZWxwQWRhcHRlciB7XG4gIHByaXZhdGUgX2Rpc3Bvc2FibGVzOiBDb21wb3NpdGVEaXNwb3NhYmxlID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICBwcml2YXRlIF9jb25uZWN0aW9uOiBMYW5ndWFnZUNsaWVudENvbm5lY3Rpb25cbiAgcHJpdmF0ZSBfY2FwYWJpbGl0aWVzOiBTZXJ2ZXJDYXBhYmlsaXRpZXNcbiAgcHJpdmF0ZSBfZ3JhbW1hclNjb3Blczogc3RyaW5nW11cblxuICBjb25zdHJ1Y3RvcihzZXJ2ZXI6IEFjdGl2ZVNlcnZlciwgZ3JhbW1hclNjb3Blczogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9jb25uZWN0aW9uID0gc2VydmVyLmNvbm5lY3Rpb25cbiAgICB0aGlzLl9jYXBhYmlsaXRpZXMgPSBzZXJ2ZXIuY2FwYWJpbGl0aWVzXG4gICAgdGhpcy5fZ3JhbW1hclNjb3BlcyA9IGdyYW1tYXJTY29wZXNcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyBBIHtCb29sZWFufSBpbmRpY2F0aW5nIHRoaXMgYWRhcHRlciBjYW4gYWRhcHQgdGhlIHNlcnZlciBiYXNlZCBvbiB0aGUgZ2l2ZW4gc2VydmVyQ2FwYWJpbGl0aWVzLiAqL1xuICBwdWJsaWMgc3RhdGljIGNhbkFkYXB0KHNlcnZlckNhcGFiaWxpdGllczogU2VydmVyQ2FwYWJpbGl0aWVzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNlcnZlckNhcGFiaWxpdGllcy5zaWduYXR1cmVIZWxwUHJvdmlkZXIgIT0gbnVsbFxuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpXG4gIH1cblxuICBwdWJsaWMgYXR0YWNoKHJlZ2lzdGVyOiBhdG9tSWRlLlNpZ25hdHVyZUhlbHBSZWdpc3RyeSk6IHZvaWQge1xuICAgIGNvbnN0IHsgc2lnbmF0dXJlSGVscFByb3ZpZGVyIH0gPSB0aGlzLl9jYXBhYmlsaXRpZXNcbiAgICBhc3NlcnQoc2lnbmF0dXJlSGVscFByb3ZpZGVyICE9IG51bGwpXG5cbiAgICBsZXQgdHJpZ2dlckNoYXJhY3RlcnM6IFNldDxzdHJpbmc+IHwgdW5kZWZpbmVkXG4gICAgaWYgKHNpZ25hdHVyZUhlbHBQcm92aWRlciAmJiBBcnJheS5pc0FycmF5KHNpZ25hdHVyZUhlbHBQcm92aWRlci50cmlnZ2VyQ2hhcmFjdGVycykpIHtcbiAgICAgIHRyaWdnZXJDaGFyYWN0ZXJzID0gbmV3IFNldChzaWduYXR1cmVIZWxwUHJvdmlkZXIudHJpZ2dlckNoYXJhY3RlcnMpXG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgcmVnaXN0ZXIoe1xuICAgICAgICBwcmlvcml0eTogMSxcbiAgICAgICAgZ3JhbW1hclNjb3BlczogdGhpcy5fZ3JhbW1hclNjb3BlcyxcbiAgICAgICAgdHJpZ2dlckNoYXJhY3RlcnMsXG4gICAgICAgIGdldFNpZ25hdHVyZUhlbHA6IHRoaXMuZ2V0U2lnbmF0dXJlSGVscC5iaW5kKHRoaXMpLFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICAvKiogUHVibGljOiBSZXRyaWV2ZXMgc2lnbmF0dXJlIGhlbHAgZm9yIGEgZ2l2ZW4gZWRpdG9yIGFuZCBwb3NpdGlvbi4gKi9cbiAgcHVibGljIGdldFNpZ25hdHVyZUhlbHAoZWRpdG9yOiBUZXh0RWRpdG9yLCBwb2ludDogUG9pbnQpOiBQcm9taXNlPFNpZ25hdHVyZUhlbHAgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24uc2lnbmF0dXJlSGVscChDb252ZXJ0LmVkaXRvclRvVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMoZWRpdG9yLCBwb2ludCkpXG4gIH1cbn1cbiJdfQ==