diff --git a/.vscode/settings.json b/.vscode/settings.json index 6fa94426d27..cdda7eb0062 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,6 +12,6 @@ "out*/**": true, "extensions/**/out/**": true }, - "tslint.enable": true, + "tslint.enable": false, "tslint.rulesDirectory": "node_modules/tslint-microsoft-contrib" } \ No newline at end of file diff --git a/src/vs/editor/editor.main.js b/src/vs/editor/editor.main.js index 702a9ee4593..55ae4a167ed 100644 --- a/src/vs/editor/editor.main.js +++ b/src/vs/editor/editor.main.js @@ -9,7 +9,10 @@ define([ 'vs/editor/contrib/quickOpen/browser/quickOutline.contribution', 'vs/editor/contrib/quickOpen/browser/gotoLine.contribution', 'vs/editor/contrib/quickOpen/browser/quickCommand.contribution', - 'vs/languages/languages.main' + 'vs/languages/languages.main', + "vs/languages/javascript/common/javascript.contribution", + "vs/languages/typescript/common/typescript.contribution", + "vs/languages/json/common/json.contribution" ], function() { }); \ No newline at end of file diff --git a/src/vs/languages/javascript/common/javascript.contribution.ts b/src/vs/languages/javascript/common/javascript.contribution.ts index 5835df2a0e7..695036f51b6 100644 --- a/src/vs/languages/javascript/common/javascript.contribution.ts +++ b/src/vs/languages/javascript/common/javascript.contribution.ts @@ -12,185 +12,172 @@ import {LanguageExtensions} from 'vs/editor/common/modes/languageExtensionPoint' import Options = require('vs/languages/typescript/common/options'); let defaults = Options.javaScriptOptions; -let enable = false; -if (enable) { +LanguageExtensions.registerCompatMode({ + id: 'javascript', + extensions: ['.js', '.es6'], + firstLine: '^#!.*\\bnode', + filenames: ['jakefile'], + aliases: ['JavaScript', 'javascript', 'js'], + mimetypes: ['text/javascript'], + moduleId: 'vs/languages/javascript/common/javascript', + ctorName: 'JSMode' +}); - LanguageExtensions.registerCompatMode({ - id: 'javascript', - extensions: ['.js', '.es6'], - firstLine: '^#!.*\\bnode', - filenames: ['jakefile'], - aliases: ['JavaScript', 'javascript', 'js'], - mimetypes: ['text/javascript'], - moduleId: 'vs/languages/javascript/common/javascript', - ctorName: 'JSMode' - }); +// ----- Registration and Configuration -------------------------------------------------------- - // ----- Registration and Configuration -------------------------------------------------------- +var configurationRegistry = platform.Registry.as(ConfigurationRegistry.Extensions.Configuration); - var configurationRegistry = platform.Registry.as(ConfigurationRegistry.Extensions.Configuration); - - configurationRegistry.registerConfiguration({ - 'id': 'javascript', - 'order': 20, - 'type': 'object', - 'title': nls.localize('jsConfigurationTitle', "JavaScript configuration"), - 'allOf': [ - { - 'type': 'object', - 'title': nls.localize('suggestSettings', "Controls how JavaScript IntelliSense works."), - 'properties': { - 'javascript.suggest.alwaysAllWords': { - 'type': 'boolean', - 'default': defaults.suggest.alwaysAllWords, - 'description': nls.localize('allwaysAllWords', "Always include all words from the current document."), - }, - 'javascript.suggest.useCodeSnippetsOnMethodSuggest': { - 'type': 'boolean', - 'default': defaults.suggest.useCodeSnippetsOnMethodSuggest, - 'description': nls.localize('useCodeSnippetsOnMethodSuggest', "Complete functions with their parameter signature."), - } - } - }, - { - 'title': nls.localize('compilationSettings', "Controls how JavaScript validation works."), - 'type': 'object', - 'properties': { - 'javascript.validate.enable': { - 'type': 'boolean', - 'default': true, - 'description': nls.localize('vsclint', "Controls VSCode's JavaScript validation. If set to false both syntax and semantic validation is disabled"), - }, - 'javascript.validate.semanticValidation': { - 'type': 'boolean', - 'default': defaults.validate.semanticValidation, - 'description': nls.localize('semanticValidation', "Run linter checks for JavaScript files - overrides validate.lint.* settings."), - }, - 'javascript.validate.syntaxValidation': { - 'type': 'boolean', - 'default': defaults.validate.syntaxValidation, - 'description': nls.localize('syntaxValidation', "Check JavaScript files for syntax errors."), - } - } - }, - { - 'type': 'object', - 'title': nls.localize('lint', "Controls various aspects of validation."), - 'properties': { - 'javascript.validate.lint.curlyBracketsMustNotBeOmitted': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.curlyBracketsMustNotBeOmitted, - 'description': nls.localize('lint.curlyBracketsMustNotBeOmitted', "Don't spare curly brackets."), - }, - 'javascript.validate.lint.emptyBlocksWithoutComment': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.emptyBlocksWithoutComment, - 'description': nls.localize('lint.emptyBlocksWithoutComment', "Empty block should have a comment."), - }, - 'javascript.validate.lint.comparisonOperatorsNotStrict': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.comparisonOperatorsNotStrict, - 'description': nls.localize('lint.comparisonOperatorsNotStrict', "Use '!==' and '===' instead of '!=' and '=='."), - }, - 'javascript.validate.lint.missingSemicolon': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.missingSemicolon, - 'description': nls.localize('lint.missingSemicolon', "Missing semicolon."), - }, - 'javascript.validate.lint.unknownTypeOfResults': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.unknownTypeOfResults, - 'description': nls.localize('lint.unknownTypeOfResults', "Unexpected output of the 'typeof' operator."), - }, - 'javascript.validate.lint.semicolonsInsteadOfBlocks': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.semicolonsInsteadOfBlocks, - 'description': nls.localize('lint.semicolonsInsteadOfBlocks', "Semicolon instead of block."), - }, - 'javascript.validate.lint.functionsInsideLoops': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.functionsInsideLoops, - 'description': nls.localize('lint.functionsInsideLoops', "Function inside loop."), - }, - 'javascript.validate.lint.newOnLowercaseFunctions': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.newOnLowercaseFunctions, - 'description': nls.localize('lint.newOnLowercaseFunctions', "Function with lowercase name used as constructor."), - }, - 'javascript.validate.lint.tripleSlashReferenceAlike': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.tripleSlashReferenceAlike, - 'description': nls.localize('lint.tripleSlashReferenceAlike', "Looks for mistyped triple-slash references."), - }, - 'javascript.validate.lint.unusedVariables': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.unusedVariables, - 'description': nls.localize('lint.unusedVariables', "Unused local variable."), - }, - 'javascript.validate.lint.unusedFunctions': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.unusedFunctions, - 'description': nls.localize('lint.unusedFunctions', "Unused local function."), - }, - - // below rules are changing the severity of some - // TypeScript diagnostics, e.g ignore unknown property - 'javascript.validate.lint.parametersDontMatchSignature': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.parametersDontMatchSignature, - 'description': nls.localize('lint.parametersDontMatchSignature', "Parameters don't match a function signature"), - }, - 'javascript.validate.lint.redeclaredVariables': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.redeclaredVariables, - 'description': nls.localize('lint.redeclaredVariables', "Don't re-declare a variable and change its type."), - }, - 'javascript.validate.lint.undeclaredVariables': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.undeclaredVariables, - 'description': nls.localize('lint.undeclaredVariables', "Don't use an undeclared variable."), - }, - 'javascript.validate.lint.unknownProperty': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.unknownProperty, - 'description': nls.localize('lint.unknownProperty', "Don't use an unknown property."), - }, - 'javascript.validate.lint.unknownModule': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.unknownModule, - 'description': nls.localize('lint.unknownModule', "Don't require an unknown module."), - }, - 'javascript.validate.lint.forcedTypeConversion': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.forcedTypeConversion, - 'description': nls.localize('lint.forcedTypeConversion', "Don't re-declare a variable type by an assignment."), - }, - 'javascript.validate.lint.mixedTypesArithmetics': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.mixedTypesArithmetics, - 'description': nls.localize('lint.mixedTypesArithmetics', "Only use numbers for arithmetic operations."), - }, - 'javascript.validate.lint.primitivesInInstanceOf': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.primitivesInInstanceOf, - 'description': nls.localize('lint.primitivesInInstanceOf', "Don't use instanceof with primitive types."), - }, - 'javascript.validate.lint.newOnReturningFunctions': { - 'enum': ['ignore', 'warning', 'error'], - 'default': defaults.validate.lint.newOnReturningFunctions, - 'description': nls.localize('lint.newOnReturningFunctions', "Function with return statement used as constructor."), - } +configurationRegistry.registerConfiguration({ + 'id': 'javascript', + 'order': 20, + 'type': 'object', + 'title': nls.localize('jsConfigurationTitle', "JavaScript configuration"), + 'allOf': [ + { + 'type': 'object', + 'title': nls.localize('suggestSettings', "Controls how JavaScript IntelliSense works."), + 'properties': { + 'javascript.suggest.alwaysAllWords': { + 'type': 'boolean', + 'default': defaults.suggest.alwaysAllWords, + 'description': nls.localize('allwaysAllWords', "Always include all words from the current document."), + }, + 'javascript.suggest.useCodeSnippetsOnMethodSuggest': { + 'type': 'boolean', + 'default': defaults.suggest.useCodeSnippetsOnMethodSuggest, + 'description': nls.localize('useCodeSnippetsOnMethodSuggest', "Complete functions with their parameter signature."), } } - ] - }); -} else { - LanguageExtensions.registerLanguage({ - id: 'javascript', - extensions: ['.js', '.es6'], - firstLine: '^#!.*\\bnode', - filenames: ['jakefile'], - aliases: ['JavaScript', 'javascript', 'js'], - mimetypes: ['text/javascript'] - }); -} \ No newline at end of file + }, + { + 'title': nls.localize('compilationSettings', "Controls how JavaScript validation works."), + 'type': 'object', + 'properties': { + 'javascript.validate.enable': { + 'type': 'boolean', + 'default': true, + 'description': nls.localize('vsclint', "Controls VSCode's JavaScript validation. If set to false both syntax and semantic validation is disabled"), + }, + 'javascript.validate.semanticValidation': { + 'type': 'boolean', + 'default': defaults.validate.semanticValidation, + 'description': nls.localize('semanticValidation', "Run linter checks for JavaScript files - overrides validate.lint.* settings."), + }, + 'javascript.validate.syntaxValidation': { + 'type': 'boolean', + 'default': defaults.validate.syntaxValidation, + 'description': nls.localize('syntaxValidation', "Check JavaScript files for syntax errors."), + } + } + }, + { + 'type': 'object', + 'title': nls.localize('lint', "Controls various aspects of validation."), + 'properties': { + 'javascript.validate.lint.curlyBracketsMustNotBeOmitted': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.curlyBracketsMustNotBeOmitted, + 'description': nls.localize('lint.curlyBracketsMustNotBeOmitted', "Don't spare curly brackets."), + }, + 'javascript.validate.lint.emptyBlocksWithoutComment': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.emptyBlocksWithoutComment, + 'description': nls.localize('lint.emptyBlocksWithoutComment', "Empty block should have a comment."), + }, + 'javascript.validate.lint.comparisonOperatorsNotStrict': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.comparisonOperatorsNotStrict, + 'description': nls.localize('lint.comparisonOperatorsNotStrict', "Use '!==' and '===' instead of '!=' and '=='."), + }, + 'javascript.validate.lint.missingSemicolon': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.missingSemicolon, + 'description': nls.localize('lint.missingSemicolon', "Missing semicolon."), + }, + 'javascript.validate.lint.unknownTypeOfResults': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.unknownTypeOfResults, + 'description': nls.localize('lint.unknownTypeOfResults', "Unexpected output of the 'typeof' operator."), + }, + 'javascript.validate.lint.semicolonsInsteadOfBlocks': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.semicolonsInsteadOfBlocks, + 'description': nls.localize('lint.semicolonsInsteadOfBlocks', "Semicolon instead of block."), + }, + 'javascript.validate.lint.functionsInsideLoops': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.functionsInsideLoops, + 'description': nls.localize('lint.functionsInsideLoops', "Function inside loop."), + }, + 'javascript.validate.lint.newOnLowercaseFunctions': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.newOnLowercaseFunctions, + 'description': nls.localize('lint.newOnLowercaseFunctions', "Function with lowercase name used as constructor."), + }, + 'javascript.validate.lint.tripleSlashReferenceAlike': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.tripleSlashReferenceAlike, + 'description': nls.localize('lint.tripleSlashReferenceAlike', "Looks for mistyped triple-slash references."), + }, + 'javascript.validate.lint.unusedVariables': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.unusedVariables, + 'description': nls.localize('lint.unusedVariables', "Unused local variable."), + }, + 'javascript.validate.lint.unusedFunctions': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.unusedFunctions, + 'description': nls.localize('lint.unusedFunctions', "Unused local function."), + }, + + // below rules are changing the severity of some + // TypeScript diagnostics, e.g ignore unknown property + 'javascript.validate.lint.parametersDontMatchSignature': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.parametersDontMatchSignature, + 'description': nls.localize('lint.parametersDontMatchSignature', "Parameters don't match a function signature"), + }, + 'javascript.validate.lint.redeclaredVariables': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.redeclaredVariables, + 'description': nls.localize('lint.redeclaredVariables', "Don't re-declare a variable and change its type."), + }, + 'javascript.validate.lint.undeclaredVariables': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.undeclaredVariables, + 'description': nls.localize('lint.undeclaredVariables', "Don't use an undeclared variable."), + }, + 'javascript.validate.lint.unknownProperty': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.unknownProperty, + 'description': nls.localize('lint.unknownProperty', "Don't use an unknown property."), + }, + 'javascript.validate.lint.unknownModule': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.unknownModule, + 'description': nls.localize('lint.unknownModule', "Don't require an unknown module."), + }, + 'javascript.validate.lint.forcedTypeConversion': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.forcedTypeConversion, + 'description': nls.localize('lint.forcedTypeConversion', "Don't re-declare a variable type by an assignment."), + }, + 'javascript.validate.lint.mixedTypesArithmetics': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.mixedTypesArithmetics, + 'description': nls.localize('lint.mixedTypesArithmetics', "Only use numbers for arithmetic operations."), + }, + 'javascript.validate.lint.primitivesInInstanceOf': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.primitivesInInstanceOf, + 'description': nls.localize('lint.primitivesInInstanceOf', "Don't use instanceof with primitive types."), + }, + 'javascript.validate.lint.newOnReturningFunctions': { + 'enum': ['ignore', 'warning', 'error'], + 'default': defaults.validate.lint.newOnReturningFunctions, + 'description': nls.localize('lint.newOnReturningFunctions', "Function with return statement used as constructor."), + } + } + } + ] +}); \ No newline at end of file diff --git a/src/vs/languages/languages.main.js b/src/vs/languages/languages.main.js index 1f43a1b509a..65e24bfaeac 100644 --- a/src/vs/languages/languages.main.js +++ b/src/vs/languages/languages.main.js @@ -6,12 +6,10 @@ define([ "vs/languages/css/common/css.contribution", "vs/languages/handlebars/common/handlebars.contribution", "vs/languages/html/common/html.contribution", - "vs/languages/javascript/common/javascript.contribution", "vs/languages/markdown/common/markdown.contribution", "vs/languages/php/common/php.contribution", "vs/languages/plaintext/common/plaintext.contribution", "vs/languages/razor/common/razor.contribution", - "vs/languages/typescript/common/typescript.contribution", "vs/languages/less/common/less.contribution", "vs/languages/sass/common/sass.contribution" ], function() {