alm
Version:
The best IDE for TypeScript
46 lines (45 loc) • 1.91 kB
JavaScript
;
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'] }
]
};