UNPKG

alm

Version:

The best IDE for TypeScript

46 lines (45 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tokenization_1 = require("./tokenization"); var autocomplete_1 = require("./autocomplete"); var jsonHover_1 = require("./jsonHover"); var formatting_1 = require("./formatting"); function setupMonacoJson() { monaco.languages.register({ id: 'json', extensions: ['.json', '.bowerrc', '.jshintrc', '.jscsrc', '.eslintrc', '.babelrc'], aliases: ['JSON', 'json'], mimetypes: ['application/json'], }); monaco.languages.onLanguage('json', function () { var languageId = 'json'; // Tokenizer monaco.languages.setTokensProvider(languageId, tokenization_1.createTokenizationSupport(true)); /** Setup bracket matching etc. */ monaco.languages.setLanguageConfiguration(languageId, richEditConfiguration); /** Setup Completion Adapter */ monaco.languages.registerCompletionItemProvider(languageId, new autocomplete_1.CompletionAdapter()); /** Setup hover support */ monaco.languages.registerHoverProvider(languageId, new jsonHover_1.ProvideHover()); /** Formatting */ monaco.languages.registerDocumentFormattingEditProvider(languageId, new formatting_1.DocumentFormattingEditProvider()); monaco.languages.registerDocumentRangeFormattingEditProvider(languageId, new formatting_1.DocumentRangeFormattingEditProvider()); }); } exports.setupMonacoJson = setupMonacoJson; var richEditConfiguration = { wordPattern: /(-?\d*\.\d\w*)|([^\[\{\]\}\:\"\,\s]+)/g, comments: { lineComment: '//', blockComment: ['/*', '*/'] }, brackets: [ ['{', '}'], ['[', ']'] ], autoClosingPairs: [ { open: '{', close: '}', notIn: ['string'] }, { open: '[', close: ']', notIn: ['string'] }, { open: '"', close: '"', notIn: ['string'] } ] };