-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());
- });
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const coc_nvim_1 = __webpack_require__(1);
-const vscode_languageserver_protocol_1 = __webpack_require__(3);
-const api_1 = __importDefault(__webpack_require__(40));
-function objAreEqual(a, b) {
- let keys = Object.keys(a);
- for (let i = 0; i < keys.length; i++) { // tslint:disable-line
- let key = keys[i];
- if (a[key] !== b[key]) {
- return false;
- }
- }
- return true;
-}
-class FileConfigurationManager {
- constructor(client) {
- this.client = client;
- this.cachedMap = new Map();
- }
- ensureConfigurationOptions(document, insertSpaces, tabSize) {
- return __awaiter(this, void 0, void 0, function* () {
- const file = this.client.toPath(document.uri);
- let options = {
- tabSize,
- insertSpaces
- };
- let cachedOption = this.cachedMap.get(document.uri);
- const currentOptions = this.getFileOptions(options, document);
- if (cachedOption
- && objAreEqual(cachedOption.formatOptions, currentOptions.formatOptions)
- && objAreEqual(cachedOption.preferences, currentOptions.preferences))
- return;
- this.cachedMap.set(document.uri, currentOptions);
- const args = Object.assign({ file }, currentOptions);
- yield this.client.execute('configure', args, vscode_languageserver_protocol_1.CancellationToken.None);
- });
- }
- ensureConfigurationForDocument(document) {
- return __awaiter(this, void 0, void 0, function* () {
- let opts = yield coc_nvim_1.workspace.getFormatOptions(document.uri);
- return this.ensureConfigurationOptions(document, opts.insertSpaces, opts.tabSize);
- });
- }
- reset() {
- this.cachedMap.clear();
- }
- getLanguageConfiguration(languageId) {
- return coc_nvim_1.workspace.getConfiguration(languageId);
- }
- isTypeScriptDocument(languageId) {
- return languageId.startsWith('typescript');
- }
- formatEnabled(document) {
- let { languageId, uri } = document;
- let language = languageId.startsWith('typescript') ? 'typescript' : 'javascript';
- const config = coc_nvim_1.workspace.getConfiguration(`${language}.format`, uri);
- return config.get('enabled');
- }
- enableJavascript() {
- const config = coc_nvim_1.workspace.getConfiguration('tsserver');
- return !!config.get('enableJavascript');
- }
- getFileOptions(options, document) {
- const lang = this.isTypeScriptDocument(document.languageId) ? 'typescript' : 'javascript';
- return {
- formatOptions: this.getFormatOptions(options, lang, document.uri),
- preferences: this.getPreferences(lang, document.uri)
- };
- }
- getFormatOptions(options, language, uri) {
- const config = coc_nvim_1.workspace.getConfiguration(`${language}.format`, uri);
- return {
- tabSize: options.tabSize,
- indentSize: options.tabSize,
- convertTabsToSpaces: options.insertSpaces,
- // We can use \n here since the editor normalizes later on to its line endings.
- newLineCharacter: '\n',
- insertSpaceAfterCommaDelimiter: config.get('insertSpaceAfterCommaDelimiter'),
- insertSpaceAfterConstructor: config.get('insertSpaceAfterConstructor'),
- insertSpaceAfterSemicolonInForStatements: config.get('insertSpaceAfterSemicolonInForStatements'),
- insertSpaceBeforeAndAfterBinaryOperators: config.get('insertSpaceBeforeAndAfterBinaryOperators'),
- insertSpaceAfterKeywordsInControlFlowStatements: config.get('insertSpaceAfterKeywordsInControlFlowStatements'),
- insertSpaceAfterFunctionKeywordForAnonymousFunctions: config.get('insertSpaceAfterFunctionKeywordForAnonymousFunctions'),
- insertSpaceBeforeFunctionParenthesis: config.get('insertSpaceBeforeFunctionParenthesis'),
- insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: config.get('insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis'),
- insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: config.get('insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets'),
- insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: config.get('insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces'),
- insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: config.get('insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces'),
- insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces: config.get('insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces'),
- insertSpaceAfterTypeAssertion: config.get('insertSpaceAfterTypeAssertion'),
- placeOpenBraceOnNewLineForFunctions: config.get('placeOpenBraceOnNewLineForFunctions'),
- placeOpenBraceOnNewLineForControlBlocks: config.get('placeOpenBraceOnNewLineForControlBlocks'),
- semicolons: config.get('semicolons', undefined)
- };
- }
- getCompleteOptions(languageId) {
- const lang = this.isTypeScriptDocument(languageId) ? 'typescript' : 'javascript';
- const config = coc_nvim_1.workspace.getConfiguration(`${lang}.suggest`);
- return {
- enabled: config.get('enabled', true),
- names: config.get('names', true),
- paths: config.get('paths', true),
- completeFunctionCalls: config.get('completeFunctionCalls', true),
- autoImports: config.get('autoImports', true),
- includeAutomaticOptionalChainCompletions: config.get('includeAutomaticOptionalChainCompletions', true)
- };
- }
- getPreferences(language, uri) {
- if (this.client.apiVersion.lt(api_1.default.v290)) {
- return {};
- }
- const config = coc_nvim_1.workspace.getConfiguration(`${language}.preferences`, uri);
- // getImportModuleSpecifierEndingPreference available on ts 2.9.0
- const preferences = {
- quotePreference: this.getQuoteStyle(config),
- importModuleSpecifierPreference: getImportModuleSpecifier(config),
- importModuleSpecifierEnding: getImportModuleSpecifierEndingPreference(config),
- allowTextChangesInNewFiles: uri.startsWith('file:'),
- allowRenameOfImportPath: true,
- providePrefixAndSuffixTextForRename: true,
- };
- return preferences;
- }
- getQuoteStyle(config) {
- let quoteStyle = config.get('quoteStyle', 'auto');
- if (this.client.apiVersion.gte(api_1.default.v333) || quoteStyle != 'auto')
- return quoteStyle;
- return 'single';
- }
-}
-exports.default = FileConfigurationManager;
-function getImportModuleSpecifier(config) {
- let val = config.get('importModuleSpecifier');
- switch (val) {
- case 'relative':
- return 'relative';
- case 'non-relative':
- return 'non-relative';
- default:
- return 'auto';
- }
-}
-function getImportModuleSpecifierEndingPreference(config) {
- switch (config.get('importModuleSpecifierEnding')) {
- case 'minimal': return 'minimal';
- case 'index': return 'index';
- case 'js': return 'js';
- default: return 'auto';
- }
-}
-
-
-/***/ }),
-/* 94 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-