diff --git a/ThirdPartyNotices.txt b/ThirdPartyNotices.txt index 1c8706ebb8c..ec35852b4b5 100644 --- a/ThirdPartyNotices.txt +++ b/ThirdPartyNotices.txt @@ -19,7 +19,7 @@ This project incorporates components from the projects listed below. The origina 12. freebroccolo/atom-language-swift (https://github.com/freebroccolo/atom-language-swift) 13. HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/) 14. Ionic documentation version 1.2.4 (https://github.com/driftyco/ionic-site) -15. ionide/ionide-fsharp (https://github.com/ionide/ionide-atom-fsharp) +15. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar) 16. js-beautify version 1.6.4 (https://github.com/beautify-web/js-beautify) 17. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert) 18. language-docker (https://github.com/docker/docker) @@ -500,7 +500,7 @@ END OF ionide/ionide-fsharp NOTICES AND INFORMATION ========================================= The MIT License (MIT) -Copyright (c) 2007-2013 Einar Lielmanis and contributors. +Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index 367eecdc88a..3130c7dd97e 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -91,9 +91,17 @@ gulp.task('optimize-vscode', ['clean-optimized-vscode', 'compile-build', 'compil out: 'out-vscode' })); + +gulp.task('optimize-index-js', ['optimize-vscode'], () => { + const fullpath = path.join(process.cwd(), 'out-vscode/vs/workbench/electron-browser/bootstrap/index.js') + const contents = fs.readFileSync(fullpath).toString(); + const newContents = contents.replace('[/*BUILD->INSERT_NODE_MODULES*/]', JSON.stringify(nodeModules)); + fs.writeFileSync(fullpath, newContents); +}) + const baseUrl = `https://ticino.blob.core.windows.net/sourcemaps/${commit}/core`; gulp.task('clean-minified-vscode', util.rimraf('out-vscode-min')); -gulp.task('minify-vscode', ['clean-minified-vscode', 'optimize-vscode'], common.minifyTask('out-vscode', baseUrl)); +gulp.task('minify-vscode', ['clean-minified-vscode', 'optimize-index-js'], common.minifyTask('out-vscode', baseUrl)); // Package const darwinCreditsTemplate = product.darwinCredits && _.template(fs.readFileSync(path.join(root, product.darwinCredits), 'utf8')); diff --git a/extensions/fsharp/OSSREADME.json b/extensions/fsharp/OSSREADME.json index 6ee0c63a2e4..95d6c5b023c 100644 --- a/extensions/fsharp/OSSREADME.json +++ b/extensions/fsharp/OSSREADME.json @@ -1,8 +1,8 @@ // ATTENTION - THIS DIRECTORY CONTAINS THIRD PARTY OPEN SOURCE MATERIALS: [{ - "name": "ionide/ionide-fsharp", + "name": "ionide/ionide-fsgrammar", "version": "0.0.0", "license": "MIT", - "repositoryURL": "https://github.com/ionide/ionide-atom-fsharp", - "description": "The file syntaxes/fsharp.json was included from https://github.com/ionide/ionide-atom-fsharp/blob/develop/release/grammars/fsharp.json." + "repositoryURL": "https://github.com/ionide/ionide-fsgrammar", + "description": "The file syntaxes/fsharp.json was included from https://github.com/ionide/ionide-fsgrammar/blob/master/grammar/fsharp.json." }] diff --git a/extensions/fsharp/package.json b/extensions/fsharp/package.json index aae0597f2f7..4426dcbde61 100644 --- a/extensions/fsharp/package.json +++ b/extensions/fsharp/package.json @@ -3,6 +3,9 @@ "version": "0.1.0", "publisher": "vscode", "engines": { "vscode": "*" }, + "scripts": { + "update-grammar": "node ../../build/npm/update-grammar.js ionide/ionide-fsgrammar grammar/fsharp.json ./syntaxes/fsharp.json" + }, "contributes": { "languages": [{ "id": "fsharp", diff --git a/extensions/fsharp/syntaxes/fsharp.json b/extensions/fsharp/syntaxes/fsharp.json index f65bba136d3..bf542c56e79 100644 --- a/extensions/fsharp/syntaxes/fsharp.json +++ b/extensions/fsharp/syntaxes/fsharp.json @@ -1,533 +1,537 @@ { - "name": "F#", - "scopeName": "source.fsharp", - "fileTypes": [ - "fs" - ], - "foldingStartMarker": "", - "foldingStopMarker": "", - "patterns": [ - { - "include": "#comments" - }, - { - "include": "#constants" - }, - { - "include": "#structure" - }, - { - "include": "#attributes" - }, - { - "include": "#strings" - }, - { - "include": "#chars" - }, - { - "include": "#double_tick" - }, - { - "include": "#definition" - }, - { - "include": "#method_calls" - }, - { - "include": "#modules" - }, - { - "include": "#anonymous_functions" - }, - { - "include": "#keywords" - }, - { - "include": "#records" - }, - { - "include": "#cexprs" - }, - { - "include": "#text" - } - ], - "repository": { - "anonymous_functions": { - "patterns": [ - { - "name": "meta.function.anonymous", - "begin": "\\b(fun)\\b", - "end": "(->)", - "beginCaptures": { - "1": { - "name": "keyword.other.function-definition.fsharp" - } - }, - "endCaptures": { - "1": { - "name": "keyword.other.fsharp" - } - }, - "patterns": [ - { - "include": "#variables" - } - ] - } - ] - }, - "attributes": { - "patterns": [ - { - "name": "support.function.attribute.fsharp", - "begin": "\\[\\<", - "end": "\\>\\]", - "patterns": [ - { - "include": "$self" - } - ] - } - ] - }, - "comments": { - "patterns": [ - { - "name": "comment.block.fsharp", - "begin": "(\\(\\*(?!\\)))", - "end": "(\\*\\))", - "beginCaptures": { - "1": { - "name": "comment.block.fsharp" - } - }, - "endCaptures": { - "1": { - "name": "comment.block.fsharp" - } - } - - }, - { - "name": "comment.line.double-slash.fsharp", - "match": "//.*$" - } - ] - }, - "constants": { - "patterns": [ - { - "name": "constant.language.unit.fsharp", - "match": "\\(\\)" - }, - { - "name": "constant.numeric.floating-point.fsharp", - "match": "\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))" - }, - { - "name": "constant.numeric.integer.nativeint.fsharp", - "match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))" - }, - { - "name": "constant.others.fsharp", - "match": "\\b(true|false|null|unit)\\b" - } - ] - }, - "definition": { - "patterns": [ - { - "name": "meta.binding.fsharp", - "begin": "(val mutable|val|let mutable|let|member|static member|override|let!)(\\s+rec|mutable)?(\\s+private|internal|public)?\\s+(\\([^\\s-]*\\)|[_a-zA-Z]([_a-zA-Z0-9,\\.]|(?<=,)\\s)*)", - "end": "((``.*``)|(with)|=|$)", - "beginCaptures": { - "1": { - "name": "keyword.other.binding.fsharp" - }, - "2": { - "name": "keyword.other.function-recursive.fsharp" - }, - "3": { - "name": "keyword.other.access.fsharp" - }, - "4": { - "name": "variable.other.binding.fsharp" - } - }, - "endCaptures": { - "1": { - "name": "keyword.other.fsharp" - }, - "2": { - "name": "variable.other.binding.fsharp" - }, - "3": { - "name": "keyword.other.fsharp" - } - }, - "patterns": [ - { - "include": "#variables" - } - ] - } - ] - }, - "keywords": { - "patterns": [ - { - "name": "keyword.other.fsharp", - "match": "\\b(function|yield!|yield|class|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|member|try|finally|and|when|use|use\\!)\\b" - }, - { - "name": "meta.preprocessor.fsharp", - "begin": "^\\s*#\\s*(light)\\b", - "end": "(\\s|$)" - }, - { - "name": "keyword.other.fsharp", - "match": "(\\|>|\\->|\\<\\-|:>|:\\?>|:|\\[|\\]|\\;|<>|=|@|\\|\\||&&|{|}|\\||_|\\.\\.|\\+|\\-|\\*|\\/|\\^|\\!|\\>|\\>\\=|\\>\\>|\\<|\\<\\=|\\<\\<)" - } - ] - }, - "modules": { - "patterns": [ - { - "name": "entity.name.section.fsharp", - "begin": "\\b(namespace|module)(\\s+public|internal|private)?\\s+([a-zA-Z][a-zA-Z0-9'_. ]*)", - "end": "(\\s|$)", - "beginCaptures": { - "1": { - "name": "keyword.other.fsharp" - }, - "2": { - "name": "keyword.other.fsharp" - }, - "3": { - "name": "entity.name.section.fsharp" - } - }, - "patterns": [ - { - "name": "entity.name.section.fsharp", - "match": "(\\.)([A-Z][a-zA-Z0-9'_]*)", - "captures": { - "1": { - "name": "punctuation.separator.namespace-reference.fsharp" - }, - "2": { - "name": "entity.name.section.fsharp" - } - } - } - ] - }, - { - "name": "meta.namespace.open.fsharp", - "begin": "\\b(open)\\s+([A-Z][a-zA-Z0-9'_]*)(?=(\\.[A-Z][a-zA-Z0-9_]*)*)", - "end": "(\\s|$)", - "beginCaptures": { - "1": { - "name": "keyword.other.fsharp" - }, - "2": { - "name": "entity.name.section.fsharp" - } - }, - "patterns": [ - { - "name": "entity.name.section.fsharp", - "match": "(\\.)([a-zA-Z][a-zA-Z0-9'_]*)", - "captures": { - "1": { - "name": "punctuation.separator.namespace-reference.fsharp" - }, - "2": { - "name": "entity.name.section.fsharp" - } - } - } - ] - }, - { - "name": "meta.namespace.alias.fsharp", - "begin": "^\\s*(module)\\s+([A-Z][a-zA-Z0-9'_]*)\\s*(=)\\s*([A-Z][a-zA-Z0-9'_]*)", - "end": "(\\s|$)", - "beginCaptures": { - "1": { - "name": "keyword.other.namespace-definition.fsharp" - }, - "2": { - "name": "entity.name.type.namespace.fsharp" - }, - "3": { - "name": "punctuation.separator.namespace-definition.fsharp" - }, - "4": { - "name": "entity.name.section.fsharp" - } - }, - "patterns": [ - { - "name": "entity.name.section.fsharp", - "match": "(\\.)([A-Z][a-zA-Z0-9'_]*)", - "captures": { - "1": { - "name": "punctuation.separator.namespace-reference.fsharp" - }, - "2": { - "name": "entity.name.section.fsharp" - } - } - } - ] - } - ] - }, - "strings": { - "patterns": [ - { - "contentName": "string.quoted.literalprintf.fsharp", - "begin": "(sprintf|printf[n]|failwithf)\\s+((?=[^\\\\])(@\"))", - "end": "(\")", - "beginCaptures": { - "2": { - "name": "punctuation.definition.string.begin.fsharp" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.definition.string.end.fsharp" - } - }, - "patterns": [ - { - "name": "constant.character.string.escape.fsharp", - "match": "\"(\")" - }, - { - "name": "constant.character.string.escape.format.fsharp", - "match": "%[0\\-\\+# ]{0,3}(\\*|[0-9]{0,2})(\\.[0-9]{1,2})?([bcsdiuxXoeEfFgGMOAt]|\\+A)" - } - ] - }, - { - "name": "string.quoted.literal.fsharp", - "begin": "(?=[^\\\\])(@\")", - "end": "(\")", - "beginCaptures": { - "1": { - "name": "punctuation.definition.string.begin.fsharp" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.definition.string.end.fsharp" - } - }, - "patterns": [ - { - "name": "constant.character.string.escape.fsharp", - "match": "\"(\")" - } - ] - }, - { - "contentName": "string.quoted.tripleprintf.fsharp", - "begin": "(sprintf|printf[n]|failwithf)\\s+((?=[^\\\\])(\"\"\"))", - "end": "(\"\"\")", - "beginCaptures": { - "2": { - "name": "punctuation.definition.string.begin.fsharp" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.definition.string.end.fsharp" - } - }, - "patterns": [ - { - "name": "constant.character.string.escape.format.fsharp", - "match": "%[0\\-\\+# ]{0,3}(\\*|[0-9]{0,2})(\\.[0-9]{1,2})?([bcsdiuxXoeEfFgGMOAt]|\\+A)" - } - ] - }, - { - "name": "string.quoted.triple.fsharp", - "begin": "(?=[^\\\\])(\"\"\")", - "end": "(\"\"\")", - "beginCaptures": { - "1": { - "name": "punctuation.definition.string.begin.fsharp" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.definition.string.end.fsharp" - } - } - }, - { - "contentName": "string.quoted.doubleprintf.fsharp", - "begin": "(sprintf|printf[n]|failwithf)\\s+((?=[^\\\\])(\"))", - "end": "(\")", - "beginCaptures": { - "2": { - "name": "punctuation.definition.string.begin.fsharp" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.definition.string.end.fsharp" - } - }, - "patterns": [ - { - "name": "punctuation.separator.string.ignore-eol.fsharp", - "match": "\\\\$[ \\t]*" - }, - { - "name": "constant.character.string.escape.format.fsharp", - "match": "%[0\\-\\+# ]{0,3}(\\*|[0-9]{0,2})(\\.[0-9]{1,2})?([bcsdiuxXoeEfFgGMOAt]|\\+A)" - }, - { - "name": "constant.character.string.escape.fsharp", - "match": "\\\\([\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})" - }, - { - "name": "invalid.illeagal.character.string.fsharp", - "match": "\\\\(?![\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})." - } - ] - }, - - { - "name": "string.quoted.double.fsharp", - "begin": "(?=[^\\\\])(\")", - "end": "(\")", - "beginCaptures": { - "1": { - "name": "punctuation.definition.string.begin.fsharp" - } - }, - "endCaptures": { - "1": { - "name": "punctuation.definition.string.end.fsharp" - } - }, - "patterns": [ - { - "name": "punctuation.separator.string.ignore-eol.fsharp", - "match": "\\\\$[ \\t]*" - }, - { - "name": "constant.character.string.escape.fsharp", - "match": "\\\\([\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})" - }, - { - "name": "invalid.illeagal.character.string.fsharp", - "match": "\\\\(?![\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})." - } - ] - } - ] - }, - "variables": { - "patterns": [ - { - "name": "constant.language.unit.fsharp", - "match": "\\(\\)" - }, - { - "name": "variable.parameter.fsharp", - "match": "[a-zA-Z']\\w*" - } - ] - }, - "double_tick": { - "patterns": [ - { - "name": "variable.other.binding.fsharp", - "match": "(``)(.*)(``)", - "captures": { - "1": { - "name": "string.quoted.single.fsharp" - }, - "1": { - "name": "variable.other.binding.fsharp" - }, - "3": { - "name": "string.quoted.single.fsharp" - } - } - } - ] - }, - "records": { - "patterns": [ - { - "name": "record.fsharp", - "match": "(type)[\\s]+(private|internal|public)?[\\s]*([a-zA-Z0-9'<>^:,. ]+)((with)|(=)|(\\(\\)))", - - "captures": { - "1": { - "name": "keyword.other.fsharp" - }, - "2": { - "name": "keyword.other.fsharp" - }, - "3": { - "name": "entity.name.type.fsharp" - }, - "5": { - "name": "keyword.other.fsharp" - }, - "6": { - "name": "keyword.other.fsharp" - }, - "7": { - "name": "constant.language.unit.fsharp" - } - } - } - ] - }, - "cexprs": { - "patterns": [ - { - "name": "cexpr.fsharp", - "match": "\\b([a-zA-Z]*\\s+\\{)", - "captures": { - "1": { - "name": "keyword.other.fsharp" - } - } - } - ] - }, - "chars": { - "patterns": [ - { - "name": "char.fsharp", - "match": "('\\\\?.')", - "captures": { - "1": { - "name": "string.quoted.single.fsharp" - } - } - } - ] - }, - "text": { - "patterns": [ - { - "name": "text.fsharp", - "match": "\\\\" - } - ] - } - } + "name": "fsharp", + "scopeName": "source.fsharp", + "fileTypes": [ + "fs" + ], + "foldingStartMarker": "", + "foldingStopMarker": "", + "patterns": [ + { + "include": "#comments" + }, + { + "include": "#constants" + }, + { + "include": "#structure" + }, + { + "include": "#attributes" + }, + { + "include": "#strings" + }, + { + "include": "#chars" + }, + { + "include": "#double_tick" + }, + { + "include": "#definition" + }, + { + "include": "#method_calls" + }, + { + "include": "#modules" + }, + { + "include": "#anonymous_functions" + }, + { + "include": "#keywords" + }, + { + "include": "#records" + }, + { + "include": "#cexprs" + }, + { + "include": "#text" + } + ], + "repository": { + "anonymous_functions": { + "patterns": [ + { + "name": "function.anonymous", + "begin": "\\b(fun)\\b", + "end": "(->)", + "beginCaptures": { + "1": { + "name": "keyword.other.function-definition.fsharp" + } + }, + "endCaptures": { + "1": { + "name": "keyword.other.fsharp" + } + }, + "patterns": [ + { + "include": "#variables" + } + ] + } + ] + }, + "attributes": { + "patterns": [ + { + "name": "support.function.attribute.fsharp", + "begin": "\\[\\<", + "end": "\\>\\]", + "patterns": [ + { + "include": "$self" + } + ] + } + ] + }, + "comments": { + "patterns": [ + { + "name": "comment.block.fsharp", + "begin": "(\\(\\*(?!\\)))", + "end": "(\\*\\))", + "beginCaptures": { + "1": { + "name": "comment.block.fsharp" + } + }, + "endCaptures": { + "1": { + "name": "comment.block.fsharp" + } + } + }, + { + "name": "comment.line.double-slash.fsharp", + "match": "//.*$" + } + ] + }, + "constants": { + "patterns": [ + { + "name": "constant.language.unit.fsharp", + "match": "\\(\\)" + }, + { + "name": "constant.numeric.floating-point.fsharp", + "match": "\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))" + }, + { + "name": "constant.numeric.integer.nativeint.fsharp", + "match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))" + }, + { + "name": "constant.others.fsharp", + "match": "\\b(true|false|null|unit)\\b" + } + ] + }, + "definition": { + "patterns": [ + { + "name": "binding.fsharp", + "begin": "\\b(val mutable|val|let mutable|let inline|let|member|static member|override|let!)(\\s+rec|mutable)?(\\s+private|internal|public)?\\s+(\\([^\\s-]*\\)|[_a-zA-Z]([_a-zA-Z0-9,\\.]|(?<=,)\\s)*)", + "end": "((``.*``)|(with)|=|$)", + "beginCaptures": { + "1": { + "name": "keyword.other.binding.fsharp" + }, + "2": { + "name": "keyword.other.function-recursive.fsharp" + }, + "3": { + "name": "keyword.other.access.fsharp" + }, + "4": { + "name": "variable.other.binding.fsharp" + } + }, + "endCaptures": { + "1": { + "name": "keyword.other.fsharp" + }, + "2": { + "name": "variable.other.binding.fsharp" + }, + "3": { + "name": "keyword.other.fsharp" + } + }, + "patterns": [ + { + "include": "#variables" + } + ] + } + ] + }, + "keywords": { + "patterns": [ + { + "name": "keyword.other.fsharp", + "match": "\\b(function|yield!|yield|class|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|member|try|finally|and|when|use|use\\!|struct|while)\\b" + }, + { + "name": "meta.preprocessor.fsharp", + "begin": "^\\s*#\\s*(light)\\b", + "end": "(\\s|$)" + }, + { + "name": "keyword.other.fsharp", + "match": "(&&&|\\|\\|\\||\\^\\^\\^|~~~|<<<|>>>|\\|>|\\->|\\<\\-|:>|:\\?>|:|\\[|\\]|\\;|<>|=|@|\\|\\||&&|{|}|\\||_|\\.\\.|\\+|\\-|\\*|\\/|\\^|\\!|\\>|\\>\\=|\\>\\>|\\<|\\<\\=|\\<\\<)" + } + ] + }, + "modules": { + "patterns": [ + { + "name": "entity.name.section.fsharp", + "begin": "\\b(namespace|module)(\\s+public|internal|private)?\\s+([a-zA-Z][a-zA-Z0-9'_. ]*)", + "end": "(\\s|$)", + "beginCaptures": { + "1": { + "name": "keyword.other.fsharp" + }, + "2": { + "name": "keyword.other.fsharp" + }, + "3": { + "name": "entity.name.section.fsharp" + } + }, + "patterns": [ + { + "name": "entity.name.section.fsharp", + "match": "(\\.)([A-Z][a-zA-Z0-9'_]*)", + "captures": { + "1": { + "name": "punctuation.separator.namespace-reference.fsharp" + }, + "2": { + "name": "entity.name.section.fsharp" + } + } + } + ] + }, + { + "name": "namespace.open.fsharp", + "begin": "\\b(open)\\s+([A-Z][a-zA-Z0-9'_]*)(?=(\\.[A-Z][a-zA-Z0-9_]*)*)", + "end": "(\\s|$)", + "beginCaptures": { + "1": { + "name": "keyword.other.fsharp" + }, + "2": { + "name": "entity.name.section.fsharp" + } + }, + "patterns": [ + { + "name": "entity.name.section.fsharp", + "match": "(\\.)([a-zA-Z][a-zA-Z0-9'_]*)", + "captures": { + "1": { + "name": "punctuation.separator.namespace-reference.fsharp" + }, + "2": { + "name": "entity.name.section.fsharp" + } + } + } + ] + }, + { + "name": "namespace.alias.fsharp", + "begin": "^\\s*(module)\\s+([A-Z][a-zA-Z0-9'_]*)\\s*(=)\\s*([A-Z][a-zA-Z0-9'_]*)", + "end": "(\\s|$)", + "beginCaptures": { + "1": { + "name": "keyword.other.namespace-definition.fsharp" + }, + "2": { + "name": "entity.name.type.namespace.fsharp" + }, + "3": { + "name": "punctuation.separator.namespace-definition.fsharp" + }, + "4": { + "name": "entity.name.section.fsharp" + } + }, + "patterns": [ + { + "name": "entity.name.section.fsharp", + "match": "(\\.)([A-Z][a-zA-Z0-9'_]*)", + "captures": { + "1": { + "name": "punctuation.separator.namespace-reference.fsharp" + }, + "2": { + "name": "entity.name.section.fsharp" + } + } + } + ] + } + ] + }, + "strings": { + "patterns": [ + { + "contentName": "string.quoted.literalprintf.fsharp", + "begin": "(sprintf|printf[n]|failwithf)\\s+((?=[^\\\\])(@\"))", + "end": "(\")", + "beginCaptures": { + "2": { + "name": "punctuation.definition.string.begin.fsharp" + } + }, + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.fsharp" + } + }, + "patterns": [ + { + "name": "constant.character.string.escape.fsharp", + "match": "\"(\")" + }, + { + "name": "constant.character.string.escape.format.fsharp", + "match": "%[0\\-\\+# ]{0,3}(\\*|[0-9]{0,2})(\\.[0-9]{1,2})?([bcsdiuxXoeEfFgGMOAt]|\\+A)" + } + ] + }, + { + "name": "string.quoted.literal.fsharp", + "begin": "(?=[^\\\\])(@\")", + "end": "(\")(?!\")", + "beginCaptures": { + "1": { + "name": "punctuation.definition.string.begin.fsharp" + } + }, + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.fsharp" + } + }, + "patterns": [ + { + "name": "constant.character.string.escape.fsharp", + "match": "\"(\")" + } + ] + }, + { + "contentName": "string.quoted.tripleprintf.fsharp", + "begin": "(sprintf|printf[n]|failwithf)\\s+((?=[^\\\\])(\"\"\"))", + "end": "(\"\"\")", + "beginCaptures": { + "2": { + "name": "punctuation.definition.string.begin.fsharp" + } + }, + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.fsharp" + } + }, + "patterns": [ + { + "name": "constant.character.string.escape.format.fsharp", + "match": "%[0\\-\\+# ]{0,3}(\\*|[0-9]{0,2})(\\.[0-9]{1,2})?([bcsdiuxXoeEfFgGMOAt]|\\+A)" + } + ] + }, + { + "name": "string.quoted.triple.fsharp", + "begin": "(?=[^\\\\])(\"\"\")", + "end": "(\"\"\")", + "beginCaptures": { + "1": { + "name": "punctuation.definition.string.begin.fsharp" + } + }, + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.fsharp" + } + } + }, + { + "contentName": "string.quoted.doubleprintf.fsharp", + "begin": "(sprintf|printf[n]|failwithf)\\s+((?=[^\\\\])(\"))", + "end": "(\")", + "beginCaptures": { + "2": { + "name": "punctuation.definition.string.begin.fsharp" + } + }, + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.fsharp" + } + }, + "patterns": [ + { + "name": "punctuation.separator.string.ignore-eol.fsharp", + "match": "\\\\$[ \\t]*" + }, + { + "name": "constant.character.string.escape.format.fsharp", + "match": "%[0\\-\\+# ]{0,3}(\\*|[0-9]{0,2})(\\.[0-9]{1,2})?([bcsdiuxXoeEfFgGMOAt]|\\+A)" + }, + { + "name": "constant.character.string.escape.fsharp", + "match": "\\\\([\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})" + }, + { + "name": "invalid.illeagal.character.string.fsharp", + "match": "\\\\(?![\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})." + } + ] + }, + { + "name": "string.quoted.double.fsharp", + "begin": "(?=[^\\\\])(\")", + "end": "(\")", + "beginCaptures": { + "1": { + "name": "punctuation.definition.string.begin.fsharp" + } + }, + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.fsharp" + } + }, + "patterns": [ + { + "name": "punctuation.separator.string.ignore-eol.fsharp", + "match": "\\\\$[ \\t]*" + }, + { + "name": "constant.character.string.escape.fsharp", + "match": "\\\\([\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})" + }, + { + "name": "invalid.illeagal.character.string.fsharp", + "match": "\\\\(?![\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})." + } + ] + } + ] + }, + "variables": { + "patterns": [ + { + "name": "constant.language.unit.fsharp", + "match": "\\(\\)" + }, + { + "name": "variable.parameter.fsharp", + "match": "[a-zA-Z']\\w*" + } + ] + }, + "double_tick": { + "patterns": [ + { + "name": "variable.other.binding.fsharp", + "match": "(``)(.*)(``)", + "captures": { + "1": { + "name": "string.quoted.single.fsharp" + }, + "2": { + "name": "variable.other.binding.fsharp" + }, + "3": { + "name": "string.quoted.single.fsharp" + } + } + } + ] + }, + "records": { + "patterns": [ + { + "name": "record.fsharp", + "match": "(type)[\\s]+(private|internal|public)?[\\s]*([a-zA-Z0-9'<>^:,. ]+)[\\s]*(\\([a-zA-Z0-9'<>^:,. ]+\\))?[\\s]*((with)|(as [a-zA-Z0-9']+)|(=)|(\\(\\)))", + "captures": { + "1": { + "name": "keyword.other.fsharp" + }, + "2": { + "name": "keyword.other.fsharp" + }, + "3": { + "name": "entity.name.type.fsharp" + }, + "4": { + "name": "entity.name.type.fsharp" + }, + "6": { + "name": "keyword.other.fsharp" + }, + "7": { + "name": "keyword.other.fsharp" + }, + "8": { + "name": "keyword.other.fsharp" + }, + "9": { + "name": "constant.language.unit.fsharp" + } + } + } + ] + }, + "cexprs": { + "patterns": [ + { + "name": "cexpr.fsharp", + "match": "\\b([a-zA-Z]*\\s+\\{)", + "captures": { + "1": { + "name": "keyword.other.fsharp" + } + } + } + ] + }, + "chars": { + "patterns": [ + { + "name": "char.fsharp", + "match": "('\\\\?.')", + "captures": { + "1": { + "name": "string.quoted.single.fsharp" + } + } + } + ] + }, + "text": { + "patterns": [ + { + "name": "text.fsharp", + "match": "\\\\" + } + ] + } + }, + "version": "https://github.com/ionide/ionide-fsgrammar/commit/864bfd9a6e7f4bfa648eaddba19e16d5a81103a1" } \ No newline at end of file diff --git a/extensions/fsharp/test/colorize-results/test_fs.json b/extensions/fsharp/test/colorize-results/test_fs.json index 68ec1f0fa1e..fd1aad3a6ef 100644 --- a/extensions/fsharp/test/colorize-results/test_fs.json +++ b/extensions/fsharp/test/colorize-results/test_fs.json @@ -22,19 +22,8 @@ } }, { - "c": "type Person(name", - "t": "", - "r": { - "dark_plus": ".vs-dark .token rgb(212, 212, 212)", - "light_plus": ".vs .token rgb(0, 0, 0)", - "dark_vs": ".vs-dark .token rgb(212, 212, 212)", - "light_vs": ".vs .token rgb(0, 0, 0)", - "hc_black": ".hc-black .token rgb(255, 255, 255)" - } - }, - { - "c": ":", - "t": "fsharp.keyword.other", + "c": "type", + "t": "fsharp.keyword.other.record", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -44,8 +33,8 @@ } }, { - "c": "string, age", - "t": "", + "c": " ", + "t": "fsharp.record", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -55,19 +44,19 @@ } }, { - "c": ":", - "t": "fsharp.keyword.other", + "c": "Person(name:string, age:int)", + "t": "entity.fsharp.name.record.type", "r": { - "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", - "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", - "dark_vs": ".vs-dark.vscode-theme-defaults-themes-dark_vs-json .token.keyword rgb(86, 156, 214)", - "light_vs": ".vs.vscode-theme-defaults-themes-light_vs-json .token.keyword rgb(0, 0, 255)", - "hc_black": ".hc-black.vscode-theme-defaults-themes-hc_black-json .token.keyword rgb(86, 156, 214)" + "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.entity.name.type rgb(78, 201, 176)", + "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.entity.name.type rgb(38, 127, 153)", + "dark_vs": ".vs-dark .token rgb(212, 212, 212)", + "light_vs": ".vs .token rgb(0, 0, 0)", + "hc_black": ".hc-black .token rgb(255, 255, 255)" } }, { - "c": "int) ", - "t": "", + "c": " ", + "t": "fsharp.record", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -78,7 +67,7 @@ }, { "c": "=", - "t": "fsharp.keyword.other", + "t": "fsharp.keyword.other.record", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -100,7 +89,7 @@ }, { "c": "let mutable", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -111,7 +100,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -122,7 +111,7 @@ }, { "c": "internalAge", - "t": "binding.fsharp.meta.other.variable", + "t": "binding.fsharp.other.variable", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.variable rgb(156, 220, 254)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.variable rgb(0, 16, 128)", @@ -133,7 +122,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -144,7 +133,7 @@ }, { "c": "=", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -276,7 +265,7 @@ }, { "c": "member", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -287,7 +276,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -298,7 +287,7 @@ }, { "c": "this.Name", - "t": "binding.fsharp.meta.other.variable", + "t": "binding.fsharp.other.variable", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.variable rgb(156, 220, 254)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.variable rgb(0, 16, 128)", @@ -309,7 +298,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -320,7 +309,7 @@ }, { "c": "=", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -375,7 +364,7 @@ }, { "c": "member", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -386,7 +375,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -397,7 +386,7 @@ }, { "c": "this.Age", - "t": "binding.fsharp.meta.other.variable", + "t": "binding.fsharp.other.variable", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.variable rgb(156, 220, 254)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.variable rgb(0, 16, 128)", @@ -573,7 +562,7 @@ }, { "c": "member", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -584,7 +573,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -595,7 +584,7 @@ }, { "c": "this.HasABirthday", - "t": "binding.fsharp.meta.other.variable", + "t": "binding.fsharp.other.variable", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.variable rgb(156, 220, 254)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.variable rgb(0, 16, 128)", @@ -606,7 +595,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -617,7 +606,7 @@ }, { "c": "()", - "t": "binding.constant.fsharp.language.meta.unit", + "t": "binding.constant.fsharp.language.unit", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.constant.language rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.constant.language rgb(0, 0, 255)", @@ -628,7 +617,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -639,7 +628,7 @@ }, { "c": "=", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -727,7 +716,7 @@ }, { "c": "member", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -738,7 +727,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -749,7 +738,7 @@ }, { "c": "this.IsOfAge", - "t": "binding.fsharp.meta.other.variable", + "t": "binding.fsharp.other.variable", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.variable rgb(156, 220, 254)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.variable rgb(0, 16, 128)", @@ -760,7 +749,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -771,7 +760,7 @@ }, { "c": "targetAge", - "t": "binding.fsharp.meta.parameter.variable", + "t": "binding.fsharp.parameter.variable", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.variable.parameter rgb(156, 220, 254)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.variable.parameter rgb(0, 16, 128)", @@ -782,7 +771,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -793,7 +782,7 @@ }, { "c": "=", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -848,7 +837,7 @@ }, { "c": "override", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", @@ -859,7 +848,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -870,7 +859,7 @@ }, { "c": "this.ToString", - "t": "binding.fsharp.meta.other.variable", + "t": "binding.fsharp.other.variable", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.variable rgb(156, 220, 254)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.variable rgb(0, 16, 128)", @@ -881,7 +870,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -892,7 +881,7 @@ }, { "c": "()", - "t": "binding.constant.fsharp.language.meta.unit", + "t": "binding.constant.fsharp.language.unit", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.constant.language rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.constant.language rgb(0, 0, 255)", @@ -903,7 +892,7 @@ }, { "c": " ", - "t": "binding.fsharp.meta", + "t": "binding.fsharp", "r": { "dark_plus": ".vs-dark .token rgb(212, 212, 212)", "light_plus": ".vs .token rgb(0, 0, 0)", @@ -914,7 +903,7 @@ }, { "c": "=", - "t": "binding.fsharp.keyword.meta.other", + "t": "binding.fsharp.keyword.other", "r": { "dark_plus": ".vs-dark.vscode-theme-defaults-themes-dark_plus-json .token.keyword rgb(86, 156, 214)", "light_plus": ".vs.vscode-theme-defaults-themes-light_plus-json .token.keyword rgb(0, 0, 255)", diff --git a/extensions/jade/language-configuration.json b/extensions/jade/language-configuration.json index 7f24c2f5265..e22b6120252 100644 --- a/extensions/jade/language-configuration.json +++ b/extensions/jade/language-configuration.json @@ -6,5 +6,19 @@ ["{", "}"], ["[", "]"], ["(", ")"] + ], + "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["'", "'"], + ["\"", "\""] + ], + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["'", "'"], + ["\"", "\""] ] } \ No newline at end of file diff --git a/extensions/javascript/syntaxes/JavaScript.tmLanguage.json b/extensions/javascript/syntaxes/JavaScript.tmLanguage.json index 4a44a68f098..d743eab0545 100644 --- a/extensions/javascript/syntaxes/JavaScript.tmLanguage.json +++ b/extensions/javascript/syntaxes/JavaScript.tmLanguage.json @@ -98,7 +98,7 @@ "patterns": [ { "name": "meta.var-single-variable.expr.js", - "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", + "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", "beginCaptures": { "1": { "name": "entity.name.function.js" @@ -614,7 +614,7 @@ }, "namespace-declaration": { "name": "meta.namespace.declaration.js", - "begin": "(?) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)" + "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\?\\s*)?\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)" }, { "name": "variable.object.property.js", @@ -1166,7 +1172,7 @@ "name": "keyword.generator.asterisk.js" } }, - "end": "(?=\\}|;|,)|(?<=\\})", + "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [ { "include": "#method-declaration-name" @@ -1183,46 +1189,11 @@ { "include": "#return-type" }, - { - "include": "#method-overload-declaration" - }, { "include": "#decl-block" } ] }, - "method-overload-declaration": { - "begin": "(?) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", + "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", "captures": { "1": { "name": "storage.modifier.js" @@ -2041,16 +1988,34 @@ ] }, "variable-initializer": { - "begin": "(?)|\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)))", + "match": "(?x)(?:(\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)))", "captures": { "1": { "name": "punctuation.accessor.js" @@ -2465,7 +2430,7 @@ "name": "keyword.operator.new.js" } }, - "end": "(?<=\\))|(?=[;),]|$|((?)|\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))))", + "begin": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))))", "beginCaptures": { "0": { "name": "meta.object-literal.key.js" @@ -2693,15 +2658,6 @@ }, "arrow-function": { "patterns": [ - { - "name": "meta.arrow.js", - "match": "(?)", @@ -2716,7 +2672,12 @@ }, { "name": "meta.arrow.js", - "begin": "(?x)\\s*(?=(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)", + "begin": "(?x) (?:\n (? is on new line\n (\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ([_$[:alpha:]][_$[:alnum:]]*\\s*:) | # [(]param:\n (\\.\\.\\.) # [(]...\n )\n ) |\n (\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\n (\n (\\s+extends\\s*[^=>]) | # < typeparam extends \n (\\s*[,]) # < typeparam,\n )\n ) |\n # arrow function possible to detect only with => on same line\n (\n (<([^<>]|\\<[^<>]+\\>)+>\\s*)? # typeparameters\n \\(([^()]|\\([^()]*\\))*\\) # parameteres\n (\\s*:\\s*(.)*)? # return type\n \\s*=> # arrow operator\n )\n )\n)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.js" + } + }, "end": "(?==>)", "patterns": [ { @@ -3687,5 +3648,5 @@ ] } }, - "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/3ee427b1527b890e3a56c1545b8ba1c39953fa36" + "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/f97fcdbb2f80123605982ca63b9ba68bb837df87" } \ No newline at end of file diff --git a/extensions/make/package.json b/extensions/make/package.json index 4983d3a28f1..856d097e81d 100644 --- a/extensions/make/package.json +++ b/extensions/make/package.json @@ -7,9 +7,11 @@ "update-grammar": "node ../../build/npm/update-grammar.js textmate/make.tmbundle Syntaxes/Makefile.plist ./syntaxes/Makefile.json" }, "contributes": { + "languages": [{ "id": "makefile", "aliases": ["Makefile", "makefile"], + "extensions": [ ".mk" ], "filenames": [ "Makefile", "makefile", "GNUmakefile", "OCamlMakefile" ], "configuration": "./language-configuration.json" }], diff --git a/extensions/typescript/npm-shrinkwrap.json b/extensions/typescript/npm-shrinkwrap.json index 6861979ba1a..f68512bf919 100644 --- a/extensions/typescript/npm-shrinkwrap.json +++ b/extensions/typescript/npm-shrinkwrap.json @@ -13,9 +13,9 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" }, "typescript": { - "version": "2.1.5-insiders.20161220", - "from": "typescript@2.1.5-insiders.20161220", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.1.5-insiders.20161220.tgz" + "version": "2.1.5-insiders.20161229", + "from": "typescript@2.1.5-insiders.20161229", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.1.5-insiders.20161229.tgz" }, "vscode-extension-telemetry": { "version": "0.0.5", diff --git a/extensions/typescript/package.json b/extensions/typescript/package.json index 634b2558847..201ddf039de 100644 --- a/extensions/typescript/package.json +++ b/extensions/typescript/package.json @@ -14,7 +14,7 @@ "semver": "4.3.6", "vscode-extension-telemetry": "^0.0.5", "vscode-nls": "^2.0.1", - "typescript": "2.1.5-insiders.20161220" + "typescript": "2.1.5-insiders.20161229" }, "devDependencies": { "@types/semver": "^5.3.30" diff --git a/extensions/typescript/src/features/completionItemProvider.ts b/extensions/typescript/src/features/completionItemProvider.ts index 4b48085f3a6..65a725816fa 100644 --- a/extensions/typescript/src/features/completionItemProvider.ts +++ b/extensions/typescript/src/features/completionItemProvider.ts @@ -34,10 +34,12 @@ class MyCompletionItem extends CompletionItem { // We convert to 0-based indexing. this.textEdit = TextEdit.replace(new Range(span.start.line - 1, span.start.offset - 1, span.end.line - 1, span.end.offset - 1), entry.name); } else { + // Try getting longer, prefix based range for completions that span words + const wordRange = document.getWordRangeAtPosition(position); const text = document.getText(new Range(position.line, Math.max(0, position.character - entry.name.length), position.line, position.character)).toLowerCase(); const entryName = entry.name.toLowerCase(); for (let i = entryName.length; i >= 0; --i) { - if (text.endsWith(entryName.substr(0, i))) { + if (text.endsWith(entryName.substr(0, i)) && (!wordRange || wordRange.start.character > position.character - i)) { this.range = new Range(position.line, Math.max(0, position.character - i), position.line, position.character); break; } diff --git a/extensions/typescript/syntaxes/TypeScript.tmLanguage.json b/extensions/typescript/syntaxes/TypeScript.tmLanguage.json index b50d40e8604..1e903ef4886 100644 --- a/extensions/typescript/syntaxes/TypeScript.tmLanguage.json +++ b/extensions/typescript/syntaxes/TypeScript.tmLanguage.json @@ -97,7 +97,7 @@ "patterns": [ { "name": "meta.var-single-variable.expr.ts", - "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", + "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", "beginCaptures": { "1": { "name": "entity.name.function.ts" @@ -610,7 +610,7 @@ }, "namespace-declaration": { "name": "meta.namespace.declaration.ts", - "begin": "(?) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)" + "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\?\\s*)?\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)" }, { "name": "variable.object.property.ts", @@ -1162,7 +1168,7 @@ "name": "keyword.generator.asterisk.ts" } }, - "end": "(?=\\}|;|,)|(?<=\\})", + "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [ { "include": "#method-declaration-name" @@ -1179,46 +1185,11 @@ { "include": "#return-type" }, - { - "include": "#method-overload-declaration" - }, { "include": "#decl-block" } ] }, - "method-overload-declaration": { - "begin": "(?) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", + "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", "captures": { "1": { "name": "storage.modifier.ts" @@ -2037,16 +1984,34 @@ ] }, "variable-initializer": { - "begin": "(?)|\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)))", + "match": "(?x)(?:(\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)))", "captures": { "1": { "name": "punctuation.accessor.ts" @@ -2474,7 +2439,7 @@ "name": "keyword.operator.new.ts" } }, - "end": "(?<=\\))|(?=[;),]|$|((?)|\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))))", + "begin": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))))", "beginCaptures": { "0": { "name": "meta.object-literal.key.ts" @@ -2702,15 +2667,6 @@ }, "arrow-function": { "patterns": [ - { - "name": "meta.arrow.ts", - "match": "(?)", @@ -2725,7 +2681,12 @@ }, { "name": "meta.arrow.ts", - "begin": "(?x)\\s*(?=(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)", + "begin": "(?x) (?:\n (? is on new line\n (\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ([_$[:alpha:]][_$[:alnum:]]*\\s*:) | # [(]param:\n (\\.\\.\\.) # [(]...\n )\n ) |\n (\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\n (\n (\\s+extends\\s*[^=>]) | # < typeparam extends \n (\\s*[,]) # < typeparam,\n )\n ) |\n # arrow function possible to detect only with => on same line\n (\n (<([^<>]|\\<[^<>]+\\>)+>\\s*)? # typeparameters\n \\(([^()]|\\([^()]*\\))*\\) # parameteres\n (\\s*:\\s*(.)*)? # return type\n \\s*=> # arrow operator\n )\n )\n)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + } + }, "end": "(?==>)", "patterns": [ { @@ -3415,5 +3376,5 @@ ] } }, - "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/3ee427b1527b890e3a56c1545b8ba1c39953fa36" + "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/f97fcdbb2f80123605982ca63b9ba68bb837df87" } \ No newline at end of file diff --git a/extensions/typescript/syntaxes/TypeScriptReact.tmLanguage.json b/extensions/typescript/syntaxes/TypeScriptReact.tmLanguage.json index 4e2f6774b45..44bafa4e386 100644 --- a/extensions/typescript/syntaxes/TypeScriptReact.tmLanguage.json +++ b/extensions/typescript/syntaxes/TypeScriptReact.tmLanguage.json @@ -97,7 +97,7 @@ "patterns": [ { "name": "meta.var-single-variable.expr.tsx", - "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", + "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", "beginCaptures": { "1": { "name": "entity.name.function.tsx" @@ -613,7 +613,7 @@ }, "namespace-declaration": { "name": "meta.namespace.declaration.tsx", - "begin": "(?) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)" + "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\?\\s*)?\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)" }, { "name": "variable.object.property.tsx", @@ -1165,7 +1171,7 @@ "name": "keyword.generator.asterisk.tsx" } }, - "end": "(?=\\}|;|,)|(?<=\\})", + "end": "(?=\\}|;|,|$)|(?<=\\})", "patterns": [ { "include": "#method-declaration-name" @@ -1182,46 +1188,11 @@ { "include": "#return-type" }, - { - "include": "#method-overload-declaration" - }, { "include": "#decl-block" } ] }, - "method-overload-declaration": { - "begin": "(?) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", + "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)", "captures": { "1": { "name": "storage.modifier.tsx" @@ -2040,16 +1987,34 @@ ] }, "variable-initializer": { - "begin": "(?)|\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)))", + "match": "(?x)(?:(\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)))", "captures": { "1": { "name": "punctuation.accessor.tsx" @@ -2464,7 +2429,7 @@ "name": "keyword.operator.new.tsx" } }, - "end": "(?<=\\))|(?=[;),]|$|((?)|\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))))", + "begin": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))))", "beginCaptures": { "0": { "name": "meta.object-literal.key.tsx" @@ -2692,15 +2657,6 @@ }, "arrow-function": { "patterns": [ - { - "name": "meta.arrow.tsx", - "match": "(?)", @@ -2715,7 +2671,12 @@ }, { "name": "meta.arrow.tsx", - "begin": "(?x)\\s*(?=(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)", + "begin": "(?x) (?:\n (? is on new line\n (\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ([_$[:alpha:]][_$[:alnum:]]*\\s*:) | # [(]param:\n (\\.\\.\\.) # [(]...\n )\n ) |\n (\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\n (\n (\\s+extends\\s*[^=>]) | # < typeparam extends \n (\\s*[,]) # < typeparam,\n )\n ) |\n # arrow function possible to detect only with => on same line\n (\n (<([^<>]|\\<[^<>]+\\>)+>\\s*)? # typeparameters\n \\(([^()]|\\([^()]*\\))*\\) # parameteres\n (\\s*:\\s*(.)*)? # return type\n \\s*=> # arrow operator\n )\n )\n)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.tsx" + } + }, "end": "(?==>)", "patterns": [ { @@ -3686,5 +3647,5 @@ ] } }, - "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/3ee427b1527b890e3a56c1545b8ba1c39953fa36" + "version": "https://github.com/Microsoft/TypeScript-TmLanguage/commit/f97fcdbb2f80123605982ca63b9ba68bb837df87" } \ No newline at end of file diff --git a/i18n/chs/extensions/css/package.i18n.json b/i18n/chs/extensions/css/package.i18n.json index 1b16f41a08a..307714c97a5 100644 --- a/i18n/chs/extensions/css/package.i18n.json +++ b/i18n/chs/extensions/css/package.i18n.json @@ -4,31 +4,61 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "css.lint.argumentsInColorFunction.desc": "参数数量无效", "css.lint.boxModel.desc": "使用边距或边框时,不要使用宽度或高度", "css.lint.compatibleVendorPrefixes.desc": "使用供应商特定前缀时,确保同时包括所有其他供应商特定属性", + "css.lint.duplicateProperties.desc": "不要使用重复的样式定义", + "css.lint.emptyRules.desc": "不要使用空规则集", "css.lint.float.desc": "避免使用“float”。浮动会带来脆弱的 CSS,如果布局的某一方面更改,将很容易破坏 CSS。", + "css.lint.fontFaceProperties.desc": "@font-face 规则必须定义 \"src\" 和 \"font-family\" 属性", "css.lint.hexColorLength.desc": "十六进制颜色必须由三个或六个十六进制数字组成", "css.lint.idSelector.desc": "选择器不应包含 ID,因为这些规则与 HTML 的耦合过于紧密。", "css.lint.ieHack.desc": "仅当支持 IE7 及更低版本时,才需要 IE hack", + "css.lint.importStatement.desc": "Import 语句不会并行加载", "css.lint.important.desc": "避免使用 !important。它表明整个 CSS 的特异性已经失去控制且需要重构。", "css.lint.propertyIgnoredDueToDisplay.desc": "因显示而忽略属性。例如,使用 \"display: inline\"时,宽度、高度、上边距、下边距和 float 属性将不起作用", + "css.lint.universalSelector.desc": "已知通配选择符 (*) 慢", + "css.lint.unknownProperties.desc": "未知的属性。", + "css.lint.unknownVendorSpecificProperties.desc": "未知的供应商特定属性。", "css.lint.vendorPrefix.desc": "使用供应商特定前缀时,还应包括标准属性", + "css.lint.zeroUnits.desc": "零不需要单位", + "css.validate.desc": "启用或禁用所有验证", + "less.lint.argumentsInColorFunction.desc": "参数数量无效", "less.lint.boxModel.desc": "使用边距或边框时,不要使用宽度或高度", "less.lint.compatibleVendorPrefixes.desc": "使用供应商特定前缀时,确保同时包括所有其他供应商特定属性", + "less.lint.duplicateProperties.desc": "不要使用重复的样式定义", + "less.lint.emptyRules.desc": "不要使用空规则集", "less.lint.float.desc": "避免使用“float”。浮动会带来脆弱的 CSS,如果布局的某一方面更改,将很容易破坏 CSS。", + "less.lint.fontFaceProperties.desc": "@font-face 规则必须定义 \"src\" 和 \"font-family\" 属性", "less.lint.hexColorLength.desc": "十六进制颜色必须由三个或六个十六进制数字组成", "less.lint.idSelector.desc": "选择器不应包含 ID,因为这些规则与 HTML 的耦合过于紧密。", "less.lint.ieHack.desc": "仅当支持 IE7 及更低版本时,才需要 IE hack", + "less.lint.importStatement.desc": "Import 语句不会并行加载", "less.lint.important.desc": "避免使用 !important。它表明整个 CSS 的特异性已经失去控制且需要重构。", "less.lint.propertyIgnoredDueToDisplay.desc": "因显示而忽略属性。例如,使用 \"display: inline\"时,宽度、高度、上边距、下边距和 float 属性将不起作用", + "less.lint.universalSelector.desc": "已知通配选择符 (*) 慢", + "less.lint.unknownProperties.desc": "未知的属性。", + "less.lint.unknownVendorSpecificProperties.desc": "未知的供应商特定属性。", "less.lint.vendorPrefix.desc": "使用供应商特定前缀时,还应包括标准属性", + "less.lint.zeroUnits.desc": "零不需要单位", + "less.validate.desc": "启用或禁用所有验证", + "scss.lint.argumentsInColorFunction.desc": "参数数量无效", "scss.lint.boxModel.desc": "使用边距或边框时,不要使用宽度或高度", "scss.lint.compatibleVendorPrefixes.desc": "使用供应商特定前缀时,确保同时包括所有其他供应商特定属性", + "scss.lint.duplicateProperties.desc": "不要使用重复的样式定义", + "scss.lint.emptyRules.desc": "不要使用空规则集", "scss.lint.float.desc": "避免使用“float”。浮动会带来脆弱的 CSS,如果布局的某一方面更改,将很容易破坏 CSS。", + "scss.lint.fontFaceProperties.desc": "@font-face 规则必须定义 \"src\" 和 \"font-family\" 属性", "scss.lint.hexColorLength.desc": "十六进制颜色必须由三个或六个十六进制数字组成", "scss.lint.idSelector.desc": "选择器不应包含 ID,因为这些规则与 HTML 的耦合过于紧密。", "scss.lint.ieHack.desc": "仅当支持 IE7 及更低版本时,才需要 IE hack", + "scss.lint.importStatement.desc": "Import 语句不会并行加载", "scss.lint.important.desc": "避免使用 !important。它表明整个 CSS 的特异性已经失去控制且需要重构。", "scss.lint.propertyIgnoredDueToDisplay.desc": "因显示而忽略属性。例如,使用 \"display: inline\"时,宽度、高度、上边距、下边距和 float 属性将不起作用", - "scss.lint.vendorPrefix.desc": "使用供应商特定前缀时,还应包括标准属性" + "scss.lint.universalSelector.desc": "已知通配选择符 (*) 慢", + "scss.lint.unknownProperties.desc": "未知的属性。", + "scss.lint.unknownVendorSpecificProperties.desc": "未知的供应商特定属性。", + "scss.lint.vendorPrefix.desc": "使用供应商特定前缀时,还应包括标准属性", + "scss.lint.zeroUnits.desc": "零不需要单位", + "scss.validate.desc": "启用或禁用所有验证" } \ No newline at end of file diff --git a/i18n/chs/extensions/html/package.i18n.json b/i18n/chs/extensions/html/package.i18n.json index f1e06e647a2..3f90f2c4b35 100644 --- a/i18n/chs/extensions/html/package.i18n.json +++ b/i18n/chs/extensions/html/package.i18n.json @@ -4,10 +4,15 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "html.format.enable.desc": "启用/禁用默认 HTML 格式化程序(需要重启)", + "html.format.endWithNewline.desc": "以新行结束。", "html.format.extraLiners.desc": "标记列表,以逗号分隔,其前应有额外新行。\"null\" 默认为“标头、正文、/html”。", + "html.format.indentHandlebars.desc": "格式和缩进 {{#foo}} 和 {{/foo}}。", + "html.format.indentInnerHtml.desc": "缩进 和 部分。", "html.format.maxPreserveNewLines.desc": "要保留在一个区块中的换行符的最大数量。对于无限制使用 \"null\"。", "html.format.preserveNewLines.desc": "是否要保留元素前面的现有换行符。仅适用于元素前,不适用于标记内或文本。", "html.format.unformatted.desc": "以逗号分隔的标记列表不应重设格式。\"null\" 默认为所有列于 https://www.w3.org/TR/html5/dom.html#phrasing-content 的标记。", + "html.format.wrapLineLength.desc": "每行最大字符数(0 = 禁用)。", "html.suggest.angular1.desc": "配置内置 HTML 语言支持是否建议 Angular V1 标记和属性。", "html.suggest.html5.desc": "配置内置 HTML 语言支持是否建议 HTML5 标记、属性和值。", "html.suggest.ionic.desc": "配置内置 HTML 语言支持是否建议 Ionic 标记、属性和值。" diff --git a/i18n/chs/extensions/javascript/out/features/bowerJSONContribution.i18n.json b/i18n/chs/extensions/javascript/out/features/bowerJSONContribution.i18n.json index de0e85045a1..18967e4b07b 100644 --- a/i18n/chs/extensions/javascript/out/features/bowerJSONContribution.i18n.json +++ b/i18n/chs/extensions/javascript/out/features/bowerJSONContribution.i18n.json @@ -6,6 +6,5 @@ { "json.bower.default": "默认 bower.json", "json.bower.error.repoaccess": "对 Bower 存储库发出的请求失败: {0}", - "json.bower.latest.version": "最新", - "json.bower.package.hover": "{0}" + "json.bower.latest.version": "最新" } \ No newline at end of file diff --git a/i18n/chs/extensions/javascript/out/features/packageJSONContribution.i18n.json b/i18n/chs/extensions/javascript/out/features/packageJSONContribution.i18n.json index 6a2fdaaa997..a4e237dae0e 100644 --- a/i18n/chs/extensions/javascript/out/features/packageJSONContribution.i18n.json +++ b/i18n/chs/extensions/javascript/out/features/packageJSONContribution.i18n.json @@ -8,7 +8,6 @@ "json.npm.latestversion": "当前最新版本的包", "json.npm.majorversion": "与最新主要版本(1.x.x)匹配", "json.npm.minorversion": "与最新次要版本(1.2.x)匹配", - "json.npm.package.hover": "{0}", "json.npm.version.hover": "最新版本: {0}", "json.package.default": "默认 package.json" } \ No newline at end of file diff --git a/i18n/chs/extensions/json/package.i18n.json b/i18n/chs/extensions/json/package.i18n.json index 8b6ad71cd4e..9b7afad346c 100644 --- a/i18n/chs/extensions/json/package.i18n.json +++ b/i18n/chs/extensions/json/package.i18n.json @@ -3,4 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. -{} \ No newline at end of file +{ + "json.format.enable.desc": "启用/禁用默认 JSON 格式化程序(需要重启)", + "json.schemas.desc": "将当前项目中的 JSON 文件与架构关联起来", + "json.schemas.fileMatch.desc": "将 JSON 文件解析到架构时,用于匹配的文件模式的数组。", + "json.schemas.fileMatch.item.desc": "将 JSON 文件解析到架构时,用于匹配的可以包含 \"*\" 的文件模式。", + "json.schemas.schema.desc": "给定 URL 的架构定义。只需提供该架构以避免对架构 URL 的访问。", + "json.schemas.url.desc": "当前目录中指向架构的 URL 或相对路径" +} \ No newline at end of file diff --git a/i18n/chs/extensions/typescript/out/typescriptServiceClient.i18n.json b/i18n/chs/extensions/typescript/out/typescriptServiceClient.i18n.json index ed0542dbc0d..731e69bc62e 100644 --- a/i18n/chs/extensions/typescript/out/typescriptServiceClient.i18n.json +++ b/i18n/chs/extensions/typescript/out/typescriptServiceClient.i18n.json @@ -6,9 +6,7 @@ { "channelName": "TypeScript", "close": "关闭", - "doNotCheckAgain": "不要再次检查", "localTSFound": "工作区文件夹包含 TypeScript 版本 {0}。是否要使用此版本而不是捆绑的版本 {1}?", - "moreInformation": "详细信息", "neverCheckLocalVesion": "从不检查工作区版本", "noServerFound": "路径 {0} 未指向有效的 tsserver 安装。将禁用 TypeScript 语言功能。", "serverCouldNotBeStarted": "无法启动 TypeScript 语言服务器。错误消息为: {0}", @@ -16,10 +14,8 @@ "serverDiedAfterStart": "TypeScript 语言服务在其启动后已中止 5 次。将不会重启该服务。请启用 bug 报告。", "updateGlobalWorkspaceCheck": "已将用户设置 \"typescript.check.workspaceVersion\" 更新为 false", "updateLocalWorkspaceCheck": "已将工作区设置 \"typescript.check.workspaceVersion\" 更新为 false", - "updateTscCheck": "已将用户设置 \"typescript.check.tscVersion\" 更新为 false", "updatedtsdk": "已将工作区设置 \"typescript.tsdk\" 更新为 {0}", "use": "使用工作区({0})", "useBundled": "捆绑使用({0})", - "versionMismatch": "版本不匹配! 全局 tsc ({0}) != VS Code 的语言服务({1})。可能出现不一致的编译错误", "versionNumber.custom": "自定义" } \ No newline at end of file diff --git a/i18n/chs/src/vs/code/electron-main/menus.i18n.json b/i18n/chs/src/vs/code/electron-main/menus.i18n.json index c7a571d635f..84e8192e463 100644 --- a/i18n/chs/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/chs/src/vs/code/electron-main/menus.i18n.json @@ -34,8 +34,8 @@ "miCloseWindow": "关闭窗口(&&W)", "miCommandPalette": "命令面板(&&C)...", "miCopy": "复制(&&O)", - "miCopyLinesDown": "向下复制行(&&P)", - "miCopyLinesUp": "向上复制行(&&C)", + "miCopyLinesDown": "向下复制一行(&&P)", + "miCopyLinesUp": "向上复制一行(&&C)", "miCut": "剪切(&&C)", "miDocumentation": "文档(&&D)", "miDownloadUpdate": "下载可用更新", @@ -63,8 +63,8 @@ "miKeyboardShortcuts": "键盘快捷方式引用(&&K)", "miLicense": "查看许可证(&&V)", "miMarker": "问题(&&P)", - "miMoveLinesDown": "向下移动行(&&L)", - "miMoveLinesUp": "向上移动行(&&V)", + "miMoveLinesDown": "向下移动一行(&&L)", + "miMoveLinesUp": "向上移动一行(&&V)", "miMoveSidebarLeft": "向左移动侧边栏(&&M)", "miMoveSidebarRight": "向右移动侧边栏(&&M)", "miNewFile": "新建文件(&&N)", diff --git a/i18n/chs/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json b/i18n/chs/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json index 893962305f1..1a0403000a3 100644 --- a/i18n/chs/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json +++ b/i18n/chs/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json @@ -6,8 +6,5 @@ { "markerAction.next.label": "转到下一个错误或警告", "markerAction.previous.label": "转到上一个错误或警告", - "quickfix.multiple.label": "建议的修正:", - "quickfix.single.label": "建议的修正:", - "title.w_source": "({0}/{1}) [{2}]", "title.wo_source": "({0}/{1})" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/node/extensionHostMain.i18n.json b/i18n/chs/src/vs/workbench/node/extensionHostMain.i18n.json index 052e5be79a7..2a434caf8a8 100644 --- a/i18n/chs/src/vs/workbench/node/extensionHostMain.i18n.json +++ b/i18n/chs/src/vs/workbench/node/extensionHostMain.i18n.json @@ -4,7 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "extensionTestError": "路径 {0} 未指向有效的扩展测试运行程序。", - "extensionUnderDevelopment": "正在 {0} 中加载开发扩展", - "overwritingExtension": "使用 {1} 覆盖扩展 {0}。" + "extensionTestError": "路径 {0} 未指向有效的扩展测试运行程序。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index 1e2f2325757..ee8d6d3cca5 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -33,7 +33,6 @@ "restartDebug": "重启", "restartFrame": "重新启动框架", "reverseContinue": "反向", - "selectConfig": "选择配置", "setValue": "设置值", "startDebug": "开始调试", "startWithoutDebugging": "开始执行(不调试)", diff --git a/i18n/chs/src/vs/workbench/parts/debug/common/debugModel.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/common/debugModel.i18n.json index 478308920fd..1078aef3929 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/common/debugModel.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/common/debugModel.i18n.json @@ -5,7 +5,6 @@ // Do not edit this file. It is machine generated. { "notAvailable": "不可用", - "snapshotObj": "仅显示了此对象的基元值。", "startDebugFirst": "请启动调试会话以评估", "unknownSource": "未知源", "unknownStack": "未知的堆栈位置" diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index ca8b4f1b71a..19bd8fe940f 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -8,7 +8,7 @@ "NewLaunchConfig": "请设置应用程序的启动配置文件。", "breakpointAdded": "已添加断点,行 {0}, 文件 {1}", "breakpointRemoved": "已删除断点,行 {0},文件 {1}", - "compoundMustHaveConfigurationNames": "复合必须设置 \"configurationNames\" 特性以开始多个配置。", + "compoundMustHaveConfigurationNames": "复合的名称。在启动配置下拉菜单中显示。", "debugAdapterCrash": "调试适配器进程已意外终止", "debugAnyway": "仍进行调试", "debugSourceNotAvailable": "源 {0} 不可用。", diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json index 1cccf4e9333..eff867f9404 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json @@ -12,7 +12,7 @@ "functionBreakpointsNotSupported": "此调试类型不支持函数断点", "loadMoreStackFrames": "加载多个堆栈帧", "paused": "已暂停", - "pausedOn": "已于 {0} 暂停", + "pausedOn": "因 {0} 已暂停", "process": "进程", "running": "正在运行", "stackFrameAriaLabel": "堆栈帧 {0} 行 {1} {2},调用堆栈,调试", diff --git a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index d15f4263c7f..c71dd37b9f1 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -6,7 +6,6 @@ { "debugAdapterBinNotFound": "找不到调试适配器可执行的“{0}”。", "debugAdapterCrash": "调试适配器进程已意外终止", - "debuggee": "调试对象", "moreInfo": "详细信息", "noDebugAdapterExtensionInstalled": "没有为“{0}”调试安装扩展。", "stoppingDebugAdapter": "{0}。正在停止调试适配器。", diff --git a/i18n/chs/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index f8a9e42b1f7..f1c1cff34f3 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -12,6 +12,5 @@ "debugServer": "仅用于调试扩展开发: 如果已指定端口,VS 代码会尝试连接到在服务器模式中运行的调试适配器", "debugType": "配置类型。", "debugWindowsConfiguration": "特定于 Windows 的启动配置属性。", - "internalConsoleOptions": "内部调试控制台的控制行为。", - "relativePathsNotConverted": "相对路径不再自动转换为绝对路径。请考虑使用 ${workspaceRoot} 作为前缀。" + "internalConsoleOptions": "内部调试控制台的控制行为。" } \ No newline at end of file diff --git a/i18n/chs/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json b/i18n/chs/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json index 548c402a3e6..d788e9710ee 100644 --- a/i18n/chs/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json @@ -6,8 +6,8 @@ { "DebugConfig.failed": "无法在 \".vscode\" 文件夹({0})内创建 \"launch.json\" 文件。", "app.launch.json.compound.name": "复合的名称。在启动配置下拉菜单中显示。", - "app.launch.json.compounds": "复合列表。每个复合引用将一起启动的多个配置。", - "app.launch.json.compounds.configurations": "将作为此复合的一部分启动的配置的名称。", + "app.launch.json.compounds": "复合列表。每个复合可引用多个配置,这些配置将一起启动。", + "app.launch.json.compounds.configurations": "将作为此复合的一部分启动的配置名称。", "app.launch.json.configurations": "配置列表。使用 IntelliSense 添加新配置或编辑现有配置。", "app.launch.json.debugServer": "已弃用: 请在配置中移动 debugServer。", "app.launch.json.title": "启动", diff --git a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 0174c84a7e7..c8ab852f61b 100644 --- a/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "disableGlobalExtensions": "配置已禁用的扩展", - "disableWorkspaceExtensions": "配置已禁用的扩展(工作区)", "extension": "扩展", "extensions": "扩展", "extensionsAutoUpdate": "自动更新扩展", diff --git a/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesWidgets.i18n.json b/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesWidgets.i18n.json index 1906beebcd3..62458c9ce19 100644 --- a/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesWidgets.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/preferences/browser/preferencesWidgets.i18n.json @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "SearchSettingsWidget.AriaLabel": "搜素默认设置", - "SearchSettingsWidget.Placeholder": "搜素默认设置", + "SearchSettingsWidget.AriaLabel": "搜索默认设置", + "SearchSettingsWidget.Placeholder": "搜索默认设置", "defaultSettingsInfo": " - 通过将其放入右侧的设置文件中进行覆盖", "defaultSettingsTitle": "默认设置", "noSettings": "未找到任何设置", diff --git a/i18n/chs/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/chs/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 2219834cd18..f38b61cefb5 100644 --- a/i18n/chs/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/chs/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -69,7 +69,7 @@ "RunTaskAction.label": "运行任务", "ShowLogAction.label": "显示任务日志", "TaskSystem.active": "当前有正在运行的任务处于活动状态。请先终止它,然后执行另外一项任务。", - "TaskSystem.activeSame": "任务已处于活动状态并处于监视模式。若要终止任务,请使用“F1”>“终止任务”", + "TaskSystem.activeSame": "任务已处于活动状态并处于监视模式。若要终止任务,请使用 \"F1\" >“终止任务”", "TaskSystem.exitAnyways": "仍然退出(&&E)", "TaskSystem.invalidTaskJson": "错误: tasks.json 文件的内容具有语法错误。请先更正错误然后再执行任务。\n", "TaskSystem.noBuildType": "未配置任何有效的任务运行程序。支持的任务运行程序是“服务”和“程序”。", diff --git a/i18n/cht/extensions/javascript/out/features/bowerJSONContribution.i18n.json b/i18n/cht/extensions/javascript/out/features/bowerJSONContribution.i18n.json index 81cee219814..bf43b86b89d 100644 --- a/i18n/cht/extensions/javascript/out/features/bowerJSONContribution.i18n.json +++ b/i18n/cht/extensions/javascript/out/features/bowerJSONContribution.i18n.json @@ -6,6 +6,5 @@ { "json.bower.default": "預設 bower.json", "json.bower.error.repoaccess": "對 Bower 儲存機制的要求失敗: {0}", - "json.bower.latest.version": "最新", - "json.bower.package.hover": "{0}" + "json.bower.latest.version": "最新" } \ No newline at end of file diff --git a/i18n/cht/extensions/javascript/out/features/packageJSONContribution.i18n.json b/i18n/cht/extensions/javascript/out/features/packageJSONContribution.i18n.json index 06fb437d1e3..4b4aad34814 100644 --- a/i18n/cht/extensions/javascript/out/features/packageJSONContribution.i18n.json +++ b/i18n/cht/extensions/javascript/out/features/packageJSONContribution.i18n.json @@ -8,7 +8,6 @@ "json.npm.latestversion": "封裝目前的最新版本", "json.npm.majorversion": "比對最新的主要版本 (1.x.x)", "json.npm.minorversion": "比對最新的次要版本 (1.2.x)", - "json.npm.package.hover": "{0}", "json.npm.version.hover": "最新版本: {0}", "json.package.default": "預設 package.json" } \ No newline at end of file diff --git a/i18n/cht/extensions/typescript/out/typescriptServiceClient.i18n.json b/i18n/cht/extensions/typescript/out/typescriptServiceClient.i18n.json index 598b3034a2c..9f6dcb27133 100644 --- a/i18n/cht/extensions/typescript/out/typescriptServiceClient.i18n.json +++ b/i18n/cht/extensions/typescript/out/typescriptServiceClient.i18n.json @@ -6,9 +6,7 @@ { "channelName": "TypeScript", "close": "關閉", - "doNotCheckAgain": "不要再檢查", "localTSFound": "工作區資料夾包含 TypeScript 版本 {0}。要使用此版本,而非配套版本 {1} 嗎?", - "moreInformation": "詳細資訊", "neverCheckLocalVesion": "永不檢查工作區版本", "noServerFound": "路徑 {0} 未指向有效的 tsserver 安裝。將停用 TypeScript 語言功能。", "serverCouldNotBeStarted": "無法啟動 TypeScript 語言伺服器。錯誤訊息為: {0}", @@ -16,10 +14,8 @@ "serverDiedAfterStart": "TypeScript 語言服務在啟動後立即中止 5 次。服務將不會重新啟動。請開啟問題報告。", "updateGlobalWorkspaceCheck": "已將使用者設定 'typescript.check.workspaceVersion' 更新為 false", "updateLocalWorkspaceCheck": "已將工作區設定 'typescript.check.workspaceVersion' 更新為 false", - "updateTscCheck": "已將使用者設定 'typescript.check.tscVersion' 更新為 false", "updatedtsdk": "已將工作區設定 'typescript.tsdk' 更新為 {0}", "use": "使用工作區 ({0})", "useBundled": "使用套件組合 ({0})", - "versionMismatch": "版本不符! 全域 TSC ({0}) != VS Code 的語言服務 ({1})。可能會發生編譯不一致的錯誤", "versionNumber.custom": "自訂" } \ No newline at end of file diff --git a/i18n/cht/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json b/i18n/cht/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json index cf4980e59f4..5b5844a5b4d 100644 --- a/i18n/cht/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json +++ b/i18n/cht/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json @@ -6,8 +6,5 @@ { "markerAction.next.label": "移至下一個錯誤或警告", "markerAction.previous.label": "移至上一個錯誤或警告", - "quickfix.multiple.label": "建議的修正程式: ", - "quickfix.single.label": "建議的修正程式: ", - "title.w_source": "({0}/{1}) [{2}]", "title.wo_source": "({0}/{1})" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/node/extensionHostMain.i18n.json b/i18n/cht/src/vs/workbench/node/extensionHostMain.i18n.json index 65f0f1852bf..e5f1bca63de 100644 --- a/i18n/cht/src/vs/workbench/node/extensionHostMain.i18n.json +++ b/i18n/cht/src/vs/workbench/node/extensionHostMain.i18n.json @@ -4,7 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "extensionTestError": "路徑 {0} 並未指向有效的擴充功能測試執行器。", - "extensionUnderDevelopment": "正在載入位於 {0} 的開發延伸模組", - "overwritingExtension": "正在以 {1} 覆寫擴充功能 {0}。" + "extensionTestError": "路徑 {0} 並未指向有效的擴充功能測試執行器。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index 19fe9caffe6..edcfaeb6723 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -33,7 +33,6 @@ "restartDebug": "重新啟動", "restartFrame": "重新啟動框架", "reverseContinue": "反向", - "selectConfig": "選取組態", "setValue": "設定值", "startDebug": "開始偵錯", "startWithoutDebugging": "開始但不偵錯", diff --git a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index e9c8246999d..dadcbb4332a 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -6,7 +6,6 @@ { "debugAdapterBinNotFound": "找不到偵錯配接器可執行檔 '{0}'。", "debugAdapterCrash": "偵錯配接器處理序已意外終止", - "debuggee": "偵錯項目", "moreInfo": "詳細資訊", "noDebugAdapterExtensionInstalled": "未針對 '{0}' 偵錯安裝擴充功能。", "stoppingDebugAdapter": "{0}。正在停止偵錯配接器。", diff --git a/i18n/cht/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/cht/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index 9d5c08f2409..11655b1545a 100644 --- a/i18n/cht/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -12,6 +12,5 @@ "debugServer": "僅限偵錯延伸模組開發: 如果指定了連接埠,VS Code 會嘗試連線至以伺服器模式執行的偵錯配接器", "debugType": "組態的類型。", "debugWindowsConfiguration": "Windows 特定的啟動設定屬性。", - "internalConsoleOptions": "內部偵錯主控台的控制項行為。", - "relativePathsNotConverted": "相對路徑將不再自動轉換成絕對路徑。請考慮使用 ${workspaceRoot} 作為前置詞。" + "internalConsoleOptions": "內部偵錯主控台的控制項行為。" } \ No newline at end of file diff --git a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 2186c16d3b7..6edf893cce7 100644 --- a/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/cht/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "disableGlobalExtensions": "設定停用的延伸模組", - "disableWorkspaceExtensions": "設定停用的延伸模組 (工作區)", "extension": "擴充功能", "extensions": "擴充功能", "extensionsAutoUpdate": "自動更新擴充功能", diff --git a/i18n/deu/extensions/css/package.i18n.json b/i18n/deu/extensions/css/package.i18n.json index e54185f1619..30e9e6a8520 100644 --- a/i18n/deu/extensions/css/package.i18n.json +++ b/i18n/deu/extensions/css/package.i18n.json @@ -4,31 +4,61 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "css.lint.argumentsInColorFunction.desc": "Ungültige Parameteranzahl.", "css.lint.boxModel.desc": "Verwenden Sie width oder height nicht beim Festlegen von padding oder border", "css.lint.compatibleVendorPrefixes.desc": "Stellen Sie beim Verwenden vom anbieterspezifischen Präfix sicher, dass alle anderen anbieterspezifischen Eigenschaften miteinbezogen werden", + "css.lint.duplicateProperties.desc": "Keine doppelten Formatvorlagendefinitionen verwenden", + "css.lint.emptyRules.desc": "Keine leeren Regelsätze verwenden", "css.lint.float.desc": "Die Verwendung von \"float\" vermeiden. float-Eigenschaften führen zu anfälligem CSS, das schnell nicht mehr funktioniert, wenn sich ein Aspekt des Layouts ändert.", + "css.lint.fontFaceProperties.desc": "@font-face-Regel muss die Eigenschaften \"src\" und \"font-family\" definieren.", "css.lint.hexColorLength.desc": "Hexfarben müssen aus drei oder sechs Hexzahlen bestehen", "css.lint.idSelector.desc": "Selektoren sollten keine IDs enthalten, da diese Regeln zu eng mit HTML verknüpft sind.", "css.lint.ieHack.desc": "IE-Hacks sind nur für die Unterstützung von IE7 und älter erforderlich", + "css.lint.importStatement.desc": "Importanweisungen können nicht parallel geladen werden.", "css.lint.important.desc": "Verwendung von „!important“ vermeiden. Damit wird angegeben, dass die Spezifität vom gesamten CSS außer Kontrolle geraten ist und umgestaltet werden muss.", "css.lint.propertyIgnoredDueToDisplay.desc": "Die Eigenschaft wird aufgrund der Anzeige ignoriert. Mit \"display: inline\" besitzen die width-, height-, margin-top-, margin-bottom- und float-Eigenschaften z. B. keine Auswirkung.", + "css.lint.universalSelector.desc": "Es ist bekannt, dass der Universalselektor (*) langsam ist.", + "css.lint.unknownProperties.desc": "Unbekannte Eigenschaft.", + "css.lint.unknownVendorSpecificProperties.desc": "Unbekannte anbieterspezifische Eigenschaft.", "css.lint.vendorPrefix.desc": "Beim Verwenden von anbieterspezifischen Präfix auch die Standardeigenschaft miteinbeziehen", + "css.lint.zeroUnits.desc": "Keine Einheit für Null erforderlich", + "css.validate.desc": "Aktiviert oder deaktiviert alle Überprüfungen.", + "less.lint.argumentsInColorFunction.desc": "Ungültige Parameteranzahl.", "less.lint.boxModel.desc": "Verwenden Sie width oder height nicht beim Festlegen von padding oder border", "less.lint.compatibleVendorPrefixes.desc": "Stellen Sie beim Verwenden vom anbieterspezifischen Präfix sicher, dass alle anderen anbieterspezifischen Eigenschaften miteinbezogen werden", + "less.lint.duplicateProperties.desc": "Keine doppelten Formatvorlagendefinitionen verwenden", + "less.lint.emptyRules.desc": "Keine leeren Regelsätze verwenden", "less.lint.float.desc": "Die Verwendung von \"float\" vermeiden. float-Eigenschaften führen zu anfälligem CSS, das schnell nicht mehr funktioniert, wenn sich ein Aspekt des Layouts ändert.", + "less.lint.fontFaceProperties.desc": "@font-face-Regel muss die Eigenschaften \"src\" und \"font-family\" definieren.", "less.lint.hexColorLength.desc": "Hexfarben müssen aus drei oder sechs Hexzahlen bestehen", "less.lint.idSelector.desc": "Selektoren sollten keine IDs enthalten, da diese Regeln zu eng mit HTML verknüpft sind.", "less.lint.ieHack.desc": "IE-Hacks sind nur für die Unterstützung von IE7 und älter erforderlich", + "less.lint.importStatement.desc": "Importanweisungen können nicht parallel geladen werden.", "less.lint.important.desc": "Verwendung von „!important“ vermeiden. Damit wird angegeben, dass die Spezifität vom gesamten CSS außer Kontrolle geraten ist und umgestaltet werden muss.", "less.lint.propertyIgnoredDueToDisplay.desc": "Die Eigenschaft wird aufgrund der Anzeige ignoriert. Mit \"display: inline\" besitzen die width-, height-, margin-top-, margin-bottom- und float-Eigenschaften z. B. keine Auswirkung.", + "less.lint.universalSelector.desc": "Es ist bekannt, dass der Universalselektor (*) langsam ist.", + "less.lint.unknownProperties.desc": "Unbekannte Eigenschaft.", + "less.lint.unknownVendorSpecificProperties.desc": "Unbekannte anbieterspezifische Eigenschaft.", "less.lint.vendorPrefix.desc": "Beim Verwenden von anbieterspezifischen Präfix auch die Standardeigenschaft miteinbeziehen", + "less.lint.zeroUnits.desc": "Keine Einheit für Null erforderlich", + "less.validate.desc": "Aktiviert oder deaktiviert alle Überprüfungen.", + "scss.lint.argumentsInColorFunction.desc": "Ungültige Parameteranzahl.", "scss.lint.boxModel.desc": "Verwenden Sie width oder height nicht beim Festlegen von padding oder border", "scss.lint.compatibleVendorPrefixes.desc": "Stellen Sie beim Verwenden vom anbieterspezifischen Präfix sicher, dass alle anderen anbieterspezifischen Eigenschaften miteinbezogen werden", + "scss.lint.duplicateProperties.desc": "Keine doppelten Formatvorlagendefinitionen verwenden", + "scss.lint.emptyRules.desc": "Keine leeren Regelsätze verwenden", "scss.lint.float.desc": "Die Verwendung von \"float\" vermeiden. float-Eigenschaften führen zu anfälligem CSS, das schnell nicht mehr funktioniert, wenn sich ein Aspekt des Layouts ändert.", + "scss.lint.fontFaceProperties.desc": "@font-face-Regel muss die Eigenschaften \"src\" und \"font-family\" definieren.", "scss.lint.hexColorLength.desc": "Hexfarben müssen aus drei oder sechs Hexzahlen bestehen", "scss.lint.idSelector.desc": "Selektoren sollten keine IDs enthalten, da diese Regeln zu eng mit HTML verknüpft sind.", "scss.lint.ieHack.desc": "IE-Hacks sind nur für die Unterstützung von IE7 und älter erforderlich", + "scss.lint.importStatement.desc": "Importanweisungen können nicht parallel geladen werden.", "scss.lint.important.desc": "Verwendung von „!important“ vermeiden. Damit wird angegeben, dass die Spezifität vom gesamten CSS außer Kontrolle geraten ist und umgestaltet werden muss.", "scss.lint.propertyIgnoredDueToDisplay.desc": "Die Eigenschaft wird aufgrund der Anzeige ignoriert. Mit \"display: inline\" besitzen die width-, height-, margin-top-, margin-bottom- und float-Eigenschaften z. B. keine Auswirkung.", - "scss.lint.vendorPrefix.desc": "Beim Verwenden von anbieterspezifischen Präfix auch die Standardeigenschaft miteinbeziehen" + "scss.lint.universalSelector.desc": "Es ist bekannt, dass der Universalselektor (*) langsam ist.", + "scss.lint.unknownProperties.desc": "Unbekannte Eigenschaft.", + "scss.lint.unknownVendorSpecificProperties.desc": "Unbekannte anbieterspezifische Eigenschaft.", + "scss.lint.vendorPrefix.desc": "Beim Verwenden von anbieterspezifischen Präfix auch die Standardeigenschaft miteinbeziehen", + "scss.lint.zeroUnits.desc": "Keine Einheit für Null erforderlich", + "scss.validate.desc": "Aktiviert oder deaktiviert alle Überprüfungen." } \ No newline at end of file diff --git a/i18n/deu/extensions/html/package.i18n.json b/i18n/deu/extensions/html/package.i18n.json index aeb8ff44a59..ecc9858ff31 100644 --- a/i18n/deu/extensions/html/package.i18n.json +++ b/i18n/deu/extensions/html/package.i18n.json @@ -4,10 +4,15 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "html.format.enable.desc": "Standard-HTML-Formatierer aktivieren/deaktivieren (Neustart erforderlich)", + "html.format.endWithNewline.desc": "Endet mit einer neuen Zeile.", "html.format.extraLiners.desc": "Die Liste der Tags (durch Kommas getrennt), vor denen eine zusätzliche neue Zeile eingefügt werden soll. \"null\" verwendet standardmäßig \"head, body, /HTML\".", + "html.format.indentHandlebars.desc": "Formatiert {{#foo}} und {{/foo}} und nimmt einen Einzug vor.", + "html.format.indentInnerHtml.desc": "Nimmt einen Einzug für - und -Abschnitte vor.", "html.format.maxPreserveNewLines.desc": "Die maximale Anzahl von Zeilenumbrüchen, die in einem Block beibehalten werden soll. Verwenden Sie \"null\" für eine unbegrenzte Anzahl.", "html.format.preserveNewLines.desc": "Gibt an, ob vorhandene Zeilenumbrüche vor Elemente beibehalten werden sollen. Funktioniert nur vor Elementen, nicht in Tags oder für Text.", "html.format.unformatted.desc": "Die Liste der Tags (durch Kommas getrennt), die nicht erneut formatiert werden sollen. \"null\" bezieht sich standardmäßig auf alle Tags, die unter https://www.w3.org/TR/html5/dom.html#phrasing-content aufgeführt werden.", + "html.format.wrapLineLength.desc": "Die maximale Anzahl von Zeichen pro Zeile (0 = deaktiviert).", "html.suggest.angular1.desc": "Konfiguriert, ob die integrierte HTML-Sprachuntersützung Angular V1-Tags und -Eigenschaften vorschlägt.", "html.suggest.html5.desc": "Konfiguriert, ob die integrierte HTML-Sprachuntersützung HTML5-Tags, -Eigenschaften und -Werte vorschlägt.", "html.suggest.ionic.desc": "Konfiguriert, ob die integrierte HTML-Sprachuntersützung Ionic-Tags, -Eigenschaften und -Werte vorschlägt." diff --git a/i18n/deu/extensions/javascript/out/features/bowerJSONContribution.i18n.json b/i18n/deu/extensions/javascript/out/features/bowerJSONContribution.i18n.json index 124fa5a4bab..75ed309e749 100644 --- a/i18n/deu/extensions/javascript/out/features/bowerJSONContribution.i18n.json +++ b/i18n/deu/extensions/javascript/out/features/bowerJSONContribution.i18n.json @@ -6,6 +6,5 @@ { "json.bower.default": "Standarddatei \"bower.json\"", "json.bower.error.repoaccess": "Fehler bei der Anforderung des Bower-Repositorys: {0}", - "json.bower.latest.version": "Neueste", - "json.bower.package.hover": "{0}" + "json.bower.latest.version": "Neueste" } \ No newline at end of file diff --git a/i18n/deu/extensions/javascript/out/features/packageJSONContribution.i18n.json b/i18n/deu/extensions/javascript/out/features/packageJSONContribution.i18n.json index f610fb4122f..f582ec4de37 100644 --- a/i18n/deu/extensions/javascript/out/features/packageJSONContribution.i18n.json +++ b/i18n/deu/extensions/javascript/out/features/packageJSONContribution.i18n.json @@ -8,7 +8,6 @@ "json.npm.latestversion": "Die zurzeit neueste Version des Pakets.", "json.npm.majorversion": "Ordnet die aktuelle Hauptversion (1.x.x) zu.", "json.npm.minorversion": "Ordnet die aktuelle Nebenversion (1.2.x) zu.", - "json.npm.package.hover": "{0}", "json.npm.version.hover": "Aktuelle Version: {0}", "json.package.default": "Standarddatei \"package.json\"" } \ No newline at end of file diff --git a/i18n/deu/extensions/json/package.i18n.json b/i18n/deu/extensions/json/package.i18n.json index 8b6ad71cd4e..8d410dcbf54 100644 --- a/i18n/deu/extensions/json/package.i18n.json +++ b/i18n/deu/extensions/json/package.i18n.json @@ -3,4 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. -{} \ No newline at end of file +{ + "json.format.enable.desc": "Standard-JSON-Formatierer aktivieren/deaktivieren (Neustart erforderlich)", + "json.schemas.desc": "Schemas zu JSON-Dateien im aktuellen Projekt zuordnen", + "json.schemas.fileMatch.desc": "Ein Array von Dateimustern, mit dem beim Auflösen von JSON-Dateien zu Schemas ein Abgleich erfolgt.", + "json.schemas.fileMatch.item.desc": "Ein Dateimuster, das \"*\" enthalten kann, mit dem beim Auflösen von JSON-Dateien zu Schemas ein Abgleich erfolgt.", + "json.schemas.schema.desc": "Die Schemadefinition für die angegebene URL. Das Schema muss nur angegeben werden, um Zugriffe auf die Schema-URL zu vermeiden.", + "json.schemas.url.desc": "Eine URL zu einem Schema oder ein relativer Pfad zu einem Schema im aktuellen Verzeichnis" +} \ No newline at end of file diff --git a/i18n/deu/extensions/typescript/out/typescriptServiceClient.i18n.json b/i18n/deu/extensions/typescript/out/typescriptServiceClient.i18n.json index f32462f3af3..a8fc116d7ea 100644 --- a/i18n/deu/extensions/typescript/out/typescriptServiceClient.i18n.json +++ b/i18n/deu/extensions/typescript/out/typescriptServiceClient.i18n.json @@ -6,9 +6,7 @@ { "channelName": "TypeScript", "close": "Schließen", - "doNotCheckAgain": "Nicht erneut überprüfen", "localTSFound": "Der Arbeitsbereichsordner enthält die TypeScript-Version {0}. Möchten Sie diese Version anstelle der Paketversion {1} verwenden?", - "moreInformation": "Weitere Informationen", "neverCheckLocalVesion": "Arbeitsbereichsversion nie überprüfen", "noServerFound": "Der Pfad \"{0}\" verweist nicht auf eine gültige Tsserver-Installation. TypeScript-Sprachfeatures werden deaktiviert.", "serverCouldNotBeStarted": "Der TypeScript-Sprachserver konnte nicht gestartet werden. Fehlermeldung: {0}", @@ -16,10 +14,8 @@ "serverDiedAfterStart": "Der TypeScript-Sprachdienst wurde 5 Mal direkt nach seinem Start beendet. Der Dienst wird nicht neu gestartet. Bitte öffnen Sie einen Fehlerbericht.", "updateGlobalWorkspaceCheck": "Die Benutzereinstellung \"typescript.check.workspaceVersion\" wurde in FALSE aktualisiert.", "updateLocalWorkspaceCheck": "Die Arbeitsbereicheinstellung \"typescript.check.workspaceVersion\" wurde in FALSE aktualisiert.", - "updateTscCheck": "Die Benutzereinstellung \"typescript.check.tscVersion\" wurde in FALSE aktualisiert.", "updatedtsdk": "Die Arbeitsbereicheinstellung \"typescript.tsdk\" wurde in {0} aktualisiert.", "use": "Arbeitsbereich verwenden ({0})", "useBundled": "Paket verwenden ({0})", - "versionMismatch": "Versionskonflikt zwischen dem globalen TSC ({0}) und dem Sprachdienst von VS Code ({1}). Dies kann zu Kompilierungsfehlern aufgrund von Inkonsistenzen führen.", "versionNumber.custom": "benutzerdefiniert" } \ No newline at end of file diff --git a/i18n/deu/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json b/i18n/deu/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json index dd35e067461..33f03c1b8e3 100644 --- a/i18n/deu/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json +++ b/i18n/deu/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json @@ -6,8 +6,5 @@ { "markerAction.next.label": "Gehe zum nächsten Fehler oder zur nächsten Warnung", "markerAction.previous.label": "Gehe zum vorherigen Fehler oder zur vorherigen Warnung", - "quickfix.multiple.label": "Empfohlene Fehlerbehebungen: ", - "quickfix.single.label": "Empfohlene Fehlerbehebung: ", - "title.w_source": "({0}/{1}) [{2}]", "title.wo_source": "({0}/{1})" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/node/extensionHostMain.i18n.json b/i18n/deu/src/vs/workbench/node/extensionHostMain.i18n.json index 86879ef9e27..e72f0170a4a 100644 --- a/i18n/deu/src/vs/workbench/node/extensionHostMain.i18n.json +++ b/i18n/deu/src/vs/workbench/node/extensionHostMain.i18n.json @@ -4,7 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "extensionTestError": "Der Pfad \"{0}\" verweist nicht auf einen gültigen Test Runner für eine Extension.", - "extensionUnderDevelopment": "Die Entwicklungsextension unter {0} wird geladen.", - "overwritingExtension": "Die Extension {0} wird mit {1} überschrieben." + "extensionTestError": "Der Pfad \"{0}\" verweist nicht auf einen gültigen Test Runner für eine Extension." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index 883e120e486..b9b10ea9761 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -33,7 +33,6 @@ "restartDebug": "Neu starten", "restartFrame": "Frame neu starten", "reverseContinue": "Umkehren", - "selectConfig": "Konfiguration auswählen", "setValue": "Wert festlegen", "startDebug": "Debuggen starten", "startWithoutDebugging": "Ohne Debuggen starten", diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json index 3855ac600d3..e8a47e6e02b 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json @@ -12,7 +12,7 @@ "functionBreakpointsNotSupported": "Funktionshaltepunkte werden von diesem Debugtyp nicht unterstützt.", "loadMoreStackFrames": "Weitere Stapelrahmen laden", "paused": "Angehalten", - "pausedOn": "Angehalten auf {0}", + "pausedOn": "Angehalten bei {0}", "process": "Prozess", "running": "Wird ausgeführt", "stackFrameAriaLabel": "Stapelrahmen {0} Zeile {1} {2}, Aufrufliste, Debuggen", diff --git a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index 7cd8a3e1857..a910962ec08 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -6,7 +6,6 @@ { "debugAdapterBinNotFound": "Die ausführbare Datei \"{0}\" des Debugadapters wurde nicht gefunden.", "debugAdapterCrash": "Der Debugadapterprozess wurde unerwartet beendet.", - "debuggee": "Zu debuggende Komponente", "moreInfo": "Weitere Informationen", "noDebugAdapterExtensionInstalled": "Es ist keine Extension für {0}-Debuggen installiert.", "stoppingDebugAdapter": "{0}. Der Debugadapter wird beendet.", diff --git a/i18n/deu/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/deu/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index c9b6e7e70cb..9969c127ee6 100644 --- a/i18n/deu/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -12,6 +12,5 @@ "debugServer": "Nur für die Entwicklung von Debugerweiterungen: Wenn ein Port angegeben ist, versucht der VS-Code, eine Verbindung mit einem Debugadapter herzustellen, der im Servermodus ausgeführt wird.", "debugType": "Der Typ der Konfiguration.", "debugWindowsConfiguration": "Windows-spezifische Startkonfigurationsattribute.", - "internalConsoleOptions": "Steuert das Verhalten der internen Debugging-Konsole.", - "relativePathsNotConverted": "Relative Pfade werden nicht mehr automatisch in absolute Pfade konvertiert. Verwenden Sie ggf. ${workspaceRoot} als Präfix." + "internalConsoleOptions": "Steuert das Verhalten der internen Debugging-Konsole." } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json index 6c754120988..c57bd86ac3a 100644 --- a/i18n/deu/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json @@ -6,8 +6,8 @@ { "showViewlet": "{0} anzeigen", "view": "Anzeigen", - "vscode.extension.contributes.explorer": "Stellt ein benutzerdefiniertes Viewlet für den Struktur-Explorer in der Seitenleiste zur Verfügung.", + "vscode.extension.contributes.explorer": "Stellt ein benutzerdefiniertes Viewlet für den Tree Explorer in der Seitenleiste zur Verfügung.", "vscode.extension.contributes.explorer.icon": "Pfad zum Symbol des Viewlets auf der Aktivitätsleiste", "vscode.extension.contributes.explorer.treeExplorerNodeProviderId": "Eindeutige ID zum Identifizieren des über vscode.workspace.registerTreeExplorerNodeProvider registrierten Anbieters", - "vscode.extension.contributes.explorer.treeLabel": "Visuell lesbare Zeichenfolge zur Darstellung des benutzerdefinierten Struktur-Explorers" + "vscode.extension.contributes.explorer.treeLabel": "Visuell lesbare Zeichenfolge zur Darstellung des benutzerdefinierten Tree Explorers" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json b/i18n/deu/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json index 3f40c0a0570..ffa6db16e56 100644 --- a/i18n/deu/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json @@ -4,5 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "treeExplorerViewlet.tree": "Abschnitt \"Struktur-Explorer\"" + "treeExplorerViewlet.tree": "Tree Explorer-Abschnitt" } \ No newline at end of file diff --git a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 62311f39408..19f165bde9b 100644 --- a/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/deu/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "disableGlobalExtensions": "Deaktivierte Erweiterungen konfigurieren", - "disableWorkspaceExtensions": "Deaktivierte Erweiterungen konfigurieren (Arbeitsbereich)", "extension": "Extension", "extensions": "Extensions", "extensionsAutoUpdate": "Extensions automatisch aktualisieren", diff --git a/i18n/esn/extensions/css/package.i18n.json b/i18n/esn/extensions/css/package.i18n.json index 5c70dc8d3d0..b7ad252e0db 100644 --- a/i18n/esn/extensions/css/package.i18n.json +++ b/i18n/esn/extensions/css/package.i18n.json @@ -4,31 +4,61 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "css.lint.argumentsInColorFunction.desc": "Número de parámetros no válido", "css.lint.boxModel.desc": "No use ancho o alto con el relleno o los bordes.", "css.lint.compatibleVendorPrefixes.desc": "Cuando use un prefijo específico del proveedor, compruebe que también haya incluido el resto de propiedades específicas del proveedor.", + "css.lint.duplicateProperties.desc": "No use definiciones de estilo duplicadas", + "css.lint.emptyRules.desc": "No use conjuntos de reglas vacíos", "css.lint.float.desc": "Le recomendamos no usar 'float'. Los floats producen CSS frágiles, fáciles de corromper si cambia cualquier aspecto del diseño.", + "css.lint.fontFaceProperties.desc": "La regla @font-face debe definir las propiedades \"src\" y \"font-family\"", "css.lint.hexColorLength.desc": "Los colores hexadecimales deben estar formados por tres o seis números hexadecimales.", "css.lint.idSelector.desc": "Los selectores no deben contener identificadores porque estas reglas están estrechamente ligadas a HTML.", "css.lint.ieHack.desc": "Las modificaciones de IE solo son necesarias cuando admiten IE7 y anteriores", + "css.lint.importStatement.desc": "Las instrucciones Import no se cargan en paralelo", "css.lint.important.desc": "Le recomendamos no usar !important. Esto indica que la especificidad de todo el CSS está fuera de control y que debe refactorizarse.", "css.lint.propertyIgnoredDueToDisplay.desc": "La propiedad se ignora a causa de la pantalla. Por ejemplo, con 'display: inline', el ancho, el alto, el margen superior e inferior y las propiedades de float no tienen efecto.", + "css.lint.universalSelector.desc": "Se sabe que el selector universal (*) es lento", + "css.lint.unknownProperties.desc": "Propiedad desconocida.", + "css.lint.unknownVendorSpecificProperties.desc": "Propiedad específica del proveedor desconocida.", "css.lint.vendorPrefix.desc": "Cuando use un prefijo específico del proveedor, incluya también la propiedad estándar.", + "css.lint.zeroUnits.desc": "No se necesita una unidad para cero", + "css.validate.desc": "Habilita o deshabilita todas las validaciones", + "less.lint.argumentsInColorFunction.desc": "Número de parámetros no válido", "less.lint.boxModel.desc": "No use ancho o alto con el relleno o los bordes.", "less.lint.compatibleVendorPrefixes.desc": "Cuando use un prefijo específico del proveedor, compruebe que también haya incluido el resto de propiedades específicas del proveedor.", + "less.lint.duplicateProperties.desc": "No use definiciones de estilo duplicadas", + "less.lint.emptyRules.desc": "No use conjuntos de reglas vacíos", "less.lint.float.desc": "Le recomendamos no usar 'float'. Los floats producen CSS frágiles, fáciles de corromper si cambia cualquier aspecto del diseño.", + "less.lint.fontFaceProperties.desc": "La regla @font-face debe definir las propiedades \"src\" y \"font-family\"", "less.lint.hexColorLength.desc": "Los colores hexadecimales deben estar formados por tres o seis números hexadecimales.", "less.lint.idSelector.desc": "Los selectores no deben contener identificadores porque estas reglas están estrechamente ligadas a HTML.", "less.lint.ieHack.desc": "Las modificaciones de IE solo son necesarias cuando admiten IE7 y anteriores", + "less.lint.importStatement.desc": "Las instrucciones Import no se cargan en paralelo", "less.lint.important.desc": "Le recomendamos no usar !important. Esto indica que la especificidad de todo el CSS está fuera de control y que debe refactorizarse.", "less.lint.propertyIgnoredDueToDisplay.desc": "La propiedad se ignora a causa de la pantalla. Por ejemplo, con 'display: inline', el ancho, el alto, el margen superior e inferior y las propiedades de float no tienen efecto.", + "less.lint.universalSelector.desc": "Se sabe que el selector universal (*) es lento", + "less.lint.unknownProperties.desc": "Propiedad desconocida.", + "less.lint.unknownVendorSpecificProperties.desc": "Propiedad específica del proveedor desconocida.", "less.lint.vendorPrefix.desc": "Cuando use un prefijo específico del proveedor, incluya también la propiedad estándar.", + "less.lint.zeroUnits.desc": "No se necesita una unidad para cero", + "less.validate.desc": "Habilita o deshabilita todas las validaciones", + "scss.lint.argumentsInColorFunction.desc": "Número de parámetros no válido", "scss.lint.boxModel.desc": "No use ancho o alto con el relleno o los bordes.", "scss.lint.compatibleVendorPrefixes.desc": "Cuando use un prefijo específico del proveedor, compruebe que también haya incluido el resto de propiedades específicas del proveedor.", + "scss.lint.duplicateProperties.desc": "No use definiciones de estilo duplicadas", + "scss.lint.emptyRules.desc": "No use conjuntos de reglas vacíos", "scss.lint.float.desc": "Le recomendamos no usar 'float'. Los floats producen CSS frágiles, fáciles de corromper si cambia cualquier aspecto del diseño.", + "scss.lint.fontFaceProperties.desc": "La regla @font-face debe definir las propiedades \"src\" y \"font-family\"", "scss.lint.hexColorLength.desc": "Los colores hexadecimales deben estar formados por tres o seis números hexadecimales.", "scss.lint.idSelector.desc": "Los selectores no deben contener identificadores porque estas reglas están estrechamente ligadas a HTML.", "scss.lint.ieHack.desc": "Las modificaciones de IE solo son necesarias cuando admiten IE7 y anteriores", + "scss.lint.importStatement.desc": "Las instrucciones Import no se cargan en paralelo", "scss.lint.important.desc": "Le recomendamos no usar !important. Esto indica que la especificidad de todo el CSS está fuera de control y que debe refactorizarse.", "scss.lint.propertyIgnoredDueToDisplay.desc": "La propiedad se ignora a causa de la pantalla. Por ejemplo, con 'display: inline', el ancho, el alto, el margen superior e inferior y las propiedades de float no tienen efecto.", - "scss.lint.vendorPrefix.desc": "Cuando use un prefijo específico del proveedor, incluya también la propiedad estándar." + "scss.lint.universalSelector.desc": "Se sabe que el selector universal (*) es lento", + "scss.lint.unknownProperties.desc": "Propiedad desconocida.", + "scss.lint.unknownVendorSpecificProperties.desc": "Propiedad específica del proveedor desconocida.", + "scss.lint.vendorPrefix.desc": "Cuando use un prefijo específico del proveedor, incluya también la propiedad estándar.", + "scss.lint.zeroUnits.desc": "No se necesita una unidad para cero", + "scss.validate.desc": "Habilita o deshabilita todas las validaciones" } \ No newline at end of file diff --git a/i18n/esn/extensions/html/package.i18n.json b/i18n/esn/extensions/html/package.i18n.json index fbc0d5c3e3a..22fc439a2f9 100644 --- a/i18n/esn/extensions/html/package.i18n.json +++ b/i18n/esn/extensions/html/package.i18n.json @@ -4,10 +4,15 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "html.format.enable.desc": "Habilitar/deshabilitar formateador HTML predeterminado (requiere reiniciar)", + "html.format.endWithNewline.desc": "Finalizar con una nueva línea.", "html.format.extraLiners.desc": "Lista de etiquetas, separadas por comas, que deben tener una nueva línea adicional delante. \"null\" tiene como valores predeterminados \"head, body, /html\".", + "html.format.indentHandlebars.desc": "Formato y sangría {{#foo}} y {{/foo}}.", + "html.format.indentInnerHtml.desc": "Aplicar sangría a las secciones y .", "html.format.maxPreserveNewLines.desc": "Número máximo de saltos de línea que deben conservarse en un fragmento. Use \"null\" para que el número sea ilimitado.", "html.format.preserveNewLines.desc": "Indica si los saltos de línea existentes delante de los elementos deben conservarse. Solo funciona delante de los elementos, no dentro de las etiquetas o con texto.", "html.format.unformatted.desc": "Lista de etiquetas, separadas por comas, a las que no se debe volver a aplicar formato. El valor predeterminado de \"null\" son todas las etiquetas mostradas en https://www.w3.org/TR/html5/dom.html#phrasing-content.", + "html.format.wrapLineLength.desc": "Cantidad máxima de caracteres por línea (0 = deshabilitar).", "html.suggest.angular1.desc": "Configura si la compatibilidad con el lenguaje HTML integrada sugiere etiquetas y propiedades de Angular V1.", "html.suggest.html5.desc": "Configura si la compatibilidad con el lenguaje HTML integrada sugiere etiquetas, propiedades y valores de HTML5.", "html.suggest.ionic.desc": "Configura si la compatibilidad con el lenguaje HTML integrada sugiere etiquetas, propiedades y valores de Ionic." diff --git a/i18n/esn/extensions/javascript/out/features/bowerJSONContribution.i18n.json b/i18n/esn/extensions/javascript/out/features/bowerJSONContribution.i18n.json index b0a1e6379fa..4fded71230e 100644 --- a/i18n/esn/extensions/javascript/out/features/bowerJSONContribution.i18n.json +++ b/i18n/esn/extensions/javascript/out/features/bowerJSONContribution.i18n.json @@ -6,6 +6,5 @@ { "json.bower.default": "bower.json predeterminado", "json.bower.error.repoaccess": "No se pudo ejecutar la solicitud del repositorio de Bower: {0}", - "json.bower.latest.version": "más reciente", - "json.bower.package.hover": "{0}" + "json.bower.latest.version": "más reciente" } \ No newline at end of file diff --git a/i18n/esn/extensions/javascript/out/features/packageJSONContribution.i18n.json b/i18n/esn/extensions/javascript/out/features/packageJSONContribution.i18n.json index dd529eba212..aabeb4239e2 100644 --- a/i18n/esn/extensions/javascript/out/features/packageJSONContribution.i18n.json +++ b/i18n/esn/extensions/javascript/out/features/packageJSONContribution.i18n.json @@ -8,7 +8,6 @@ "json.npm.latestversion": "Última versión del paquete en este momento", "json.npm.majorversion": "Coincide con la versión principal más reciente (1.x.x)", "json.npm.minorversion": "Coincide con la versión secundaria más reciente (1.2.x)", - "json.npm.package.hover": "{0}", "json.npm.version.hover": "Última versión: {0}", "json.package.default": "package.json predeterminado" } \ No newline at end of file diff --git a/i18n/esn/extensions/json/package.i18n.json b/i18n/esn/extensions/json/package.i18n.json index 8b6ad71cd4e..97d6720d93e 100644 --- a/i18n/esn/extensions/json/package.i18n.json +++ b/i18n/esn/extensions/json/package.i18n.json @@ -3,4 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. -{} \ No newline at end of file +{ + "json.format.enable.desc": "Habilitar/deshabilitar formateador JSON predeterminado (requiere reiniciar)", + "json.schemas.desc": "Asociar esquemas a archivos JSON en el proyecto actual", + "json.schemas.fileMatch.desc": "Una matriz de patrones de archivo con los cuales coincidir cuando los archivos JSON se resuelvan en esquemas.", + "json.schemas.fileMatch.item.desc": "Un patrón de archivo que puede contener \"*\" con el cual coincidir cuando los archivos JSON se resuelvan en esquemas.", + "json.schemas.schema.desc": "La definición de esquema de la dirección URL determinada. Solo se necesita proporcionar el esquema para evitar los accesos a la dirección URL del esquema.", + "json.schemas.url.desc": "Una dirección URL a un esquema o una ruta de acceso relativa a un esquema en el directorio actual" +} \ No newline at end of file diff --git a/i18n/esn/extensions/typescript/out/typescriptServiceClient.i18n.json b/i18n/esn/extensions/typescript/out/typescriptServiceClient.i18n.json index f9e5aa0ea25..502befe576d 100644 --- a/i18n/esn/extensions/typescript/out/typescriptServiceClient.i18n.json +++ b/i18n/esn/extensions/typescript/out/typescriptServiceClient.i18n.json @@ -6,9 +6,7 @@ { "channelName": "TypeScript", "close": "Cerrar", - "doNotCheckAgain": "No volver a comprobar", "localTSFound": "La carpeta del área de trabajo contiene la versión {0} de TypeScript. ¿Quiere usar esta versión en lugar de la versión {1} del lote?", - "moreInformation": "Más información", "neverCheckLocalVesion": "No comprobar nunca la versión del área de trabajo", "noServerFound": "La ruta de acceso {0} no apunta a una instalación válida de tsserver. Las características del lenguaje TypeScript se deshabilitan.", "serverCouldNotBeStarted": "El servidor de lenguaje TypeScript no se pudo iniciar. El mensaje de error es: {0}", @@ -16,10 +14,8 @@ "serverDiedAfterStart": "El servicio de lenguaje TypeScript finalizó de forma inesperada cinco veces después de haberse iniciado y no se reiniciará. Abra un informe de errores.", "updateGlobalWorkspaceCheck": "La configuración del usuario de \"typescript.check.workspaceVersion\" se actualizó a false.", "updateLocalWorkspaceCheck": "La configuración del área de trabajo de \"typescript.check.workspaceVersion\" se actualizó a false.", - "updateTscCheck": "La configuración del usuario de \"typescript.check.tscVersion\" se actualizó a false.", "updatedtsdk": "La configuración del área de trabajo de \"typescript.tsdk\" se actualizó a {0}.", "use": "Usar área de trabajo ({0})", "useBundled": "Usar empaquetado ({0})", - "versionMismatch": "Las versiones no coinciden; global tsc ({0}) != servicio de lenguaje de VS Code ({1}). Pueden producirse errores de compilación incoherente.", "versionNumber.custom": "personalizada" } \ No newline at end of file diff --git a/i18n/esn/src/vs/code/electron-main/menus.i18n.json b/i18n/esn/src/vs/code/electron-main/menus.i18n.json index 66bd6cee491..d5456f865f0 100644 --- a/i18n/esn/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/esn/src/vs/code/electron-main/menus.i18n.json @@ -111,7 +111,7 @@ "miSplitEditor": "Dividir &&editor", "miSwitchEditor": "Cambiar &&editor", "miSwitchGroup": "Cambiar &&grupo", - "miToggleBlockComment": "Toggle &&Bloquear comentario", + "miToggleBlockComment": "Alternar &&Bloquear comentario", "miToggleDebugConsole": "Consola de de&&puración", "miToggleDevTools": "&&Alternar herramientas de desarrollo", "miToggleEditorLayout": "Alternar diseño del grupo de &&editores", diff --git a/i18n/esn/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json b/i18n/esn/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json index 8eb4efff443..4a559400e2a 100644 --- a/i18n/esn/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json +++ b/i18n/esn/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json @@ -6,8 +6,5 @@ { "markerAction.next.label": "Ir al error o la advertencia siguiente", "markerAction.previous.label": "Ir al error o la advertencia anterior", - "quickfix.multiple.label": "Correcciones recomendadas: ", - "quickfix.single.label": "Corrección recomendada: ", - "title.w_source": "({0}/{1}) [{2}]", "title.wo_source": "({0}/{1})" } \ No newline at end of file diff --git a/i18n/esn/src/vs/platform/environment/node/argv.i18n.json b/i18n/esn/src/vs/platform/environment/node/argv.i18n.json index 47ff3b66a98..311fd68e9ca 100644 --- a/i18n/esn/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/esn/src/vs/platform/environment/node/argv.i18n.json @@ -20,7 +20,7 @@ "paths": "rutas de acceso", "performance": "Comience con el comando 'Developer: Startup Performance' habilitado.", "reuseWindow": "Fuerce la apertura de un archivo o carpeta en la última ventana activa.", - "showVersions": "Muestra las versiones de las extensiones instaladas, cuando se usa --list-extension.", + "showVersions": "Muestra las versiones de las extensiones instaladas cuando se usa --list-extension.", "uninstallExtension": "Desinstala una extensión.", "usage": "Uso", "userDataDir": "Especifica el directorio en que se conservan los datos de usuario; es útil cuando se ejecuta como raíz.", diff --git a/i18n/esn/src/vs/workbench/node/extensionHostMain.i18n.json b/i18n/esn/src/vs/workbench/node/extensionHostMain.i18n.json index eb382eca8c7..aaf288558db 100644 --- a/i18n/esn/src/vs/workbench/node/extensionHostMain.i18n.json +++ b/i18n/esn/src/vs/workbench/node/extensionHostMain.i18n.json @@ -4,7 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "extensionTestError": "La ruta de acceso {0} no apunta a un ejecutor de pruebas de extensión.", - "extensionUnderDevelopment": "Cargando la extensión de desarrollo en {0}", - "overwritingExtension": "Se va a sobrescribir la extensión {0} con {1}." + "extensionTestError": "La ruta de acceso {0} no apunta a un ejecutor de pruebas de extensión." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index b6237f4e909..55b5a1b4ca9 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -33,7 +33,6 @@ "restartDebug": "Reiniciar", "restartFrame": "Reiniciar marco", "reverseContinue": "Invertir", - "selectConfig": "Seleccionar configuración", "setValue": "Establecer valor", "startDebug": "Iniciar depuración", "startWithoutDebugging": "Iniciar sin depurar", diff --git a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index 7ba9570b538..351633b8c24 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -6,7 +6,6 @@ { "debugAdapterBinNotFound": "No se encuentra el archivo ejecutable del adaptador de depuración '{0}'.", "debugAdapterCrash": "El proceso de adaptación del depurador finalizó inesperadamente", - "debuggee": "depurado", "moreInfo": "Más información", "noDebugAdapterExtensionInstalled": "No hay ninguna extensión instalada para la depuración de '{0}'.", "stoppingDebugAdapter": "{0}. Deteniendo el adaptador de depuración.", diff --git a/i18n/esn/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index 6e08d6a9ff9..9060e296940 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -12,6 +12,5 @@ "debugServer": "Solo para el desarrollo de extensiones de depuración: si se especifica un puerto, VS Code intenta conectarse a un adaptador de depuración que se ejecuta en modo servidor", "debugType": "Tipo de configuración.", "debugWindowsConfiguration": "Atributos de configuración de inicio específicos de Windows.", - "internalConsoleOptions": "Controla el comportamiento de la consola de depuración interna.", - "relativePathsNotConverted": "Las rutas de acceso relativas ya no se convertirán en absolutas automáticamente. Considere la posibilidad de usar ${workspaceRoot} como prefijo." + "internalConsoleOptions": "Controla el comportamiento de la consola de depuración interna." } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json b/i18n/esn/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json index a88ce948225..e0ca8f5b2ad 100644 --- a/i18n/esn/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json @@ -5,9 +5,9 @@ // Do not edit this file. It is machine generated. { "DebugConfig.failed": "No se puede crear el archivo \"launch.json\" dentro de la carpeta \".vscode\" ({0}).", - "app.launch.json.compound.name": "Nombre de la composición. Aparece en el menú desplegable de la configuración de inicio.", - "app.launch.json.compounds": "Lista de composiciones. Cada composición hace referencia a varias configuraciones, que se iniciarán conjuntamente.", - "app.launch.json.compounds.configurations": "Nombres de las configuraciones que se iniciarán como parte de esta composición.", + "app.launch.json.compound.name": "Nombre del elemento compuesto. Aparece en el menú desplegable de la configuración de inicio.", + "app.launch.json.compounds": "Lista de elementos compuestos. Cada elemento compuesto hace referencia a varias configuraciones, que se iniciarán conjuntamente.", + "app.launch.json.compounds.configurations": "Nombres de las configuraciones que se iniciarán como parte de este elemento compuesto.", "app.launch.json.configurations": "Lista de configuraciones. Agregue configuraciones nuevas o edite las ya existentes con IntelliSense.", "app.launch.json.debugServer": "EN DESUSO: mueva debugServer dentro de una configuración.", "app.launch.json.title": "Iniciar", diff --git a/i18n/esn/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json index 585328d2933..da1ab60f6ab 100644 --- a/i18n/esn/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json @@ -6,8 +6,8 @@ { "showViewlet": "Mostrar {0}", "view": "Ver", - "vscode.extension.contributes.explorer": "Aporta viewlet del explorador de árbol personalizado a la barra lateral", + "vscode.extension.contributes.explorer": "Aporta viewlet de Tree Explorer personalizado a la barra lateral", "vscode.extension.contributes.explorer.icon": "Ruta de acceso al icono de viewlet en la barra de actividades", "vscode.extension.contributes.explorer.treeExplorerNodeProviderId": "Identificador único usado para identificar el proveedor registrado a través de vscode.workspace.registerTreeExplorerNodeProvider", - "vscode.extension.contributes.explorer.treeLabel": "Cadena en lenguaje natural usada para representar el explorador de árbol personalizado" + "vscode.extension.contributes.explorer.treeLabel": "Cadena en lenguaje natural usada para representar el Tree Explorer personalizado" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json b/i18n/esn/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json index 24ff8b1da9c..92653a24518 100644 --- a/i18n/esn/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json @@ -4,5 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "treeExplorerViewlet.tree": "Sección de explorador de árbol" + "treeExplorerViewlet.tree": "Sección de Tree Explorer" } \ No newline at end of file diff --git a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 082ce84f933..3319a0aeef1 100644 --- a/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/esn/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "disableGlobalExtensions": "Configurar extensiones deshabilitadas", - "disableWorkspaceExtensions": "Configurar extensiones deshabilitadas (área de trabajo)", "extension": "Extensión", "extensions": "Extensiones", "extensionsAutoUpdate": "Actualizar extensiones automáticamente", diff --git a/i18n/fra/extensions/css/package.i18n.json b/i18n/fra/extensions/css/package.i18n.json index e7776a12e87..165d5112615 100644 --- a/i18n/fra/extensions/css/package.i18n.json +++ b/i18n/fra/extensions/css/package.i18n.json @@ -4,31 +4,61 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "css.lint.argumentsInColorFunction.desc": "Nombre de paramètres non valide", "css.lint.boxModel.desc": "Ne pas utiliser la largeur ou la hauteur avec une marge intérieure ou une bordure", "css.lint.compatibleVendorPrefixes.desc": "Lors de l'utilisation d'un préfixe spécifique à un fabricant, toujours inclure également toutes les propriétés spécifiques au fabricant", + "css.lint.duplicateProperties.desc": "Ne pas utiliser de définitions de style en double", + "css.lint.emptyRules.desc": "Ne pas utiliser d'ensembles de règles vides", "css.lint.float.desc": "N'utilisez pas 'float'. Les éléments Float peuvent fragiliser le code CSS qui est ainsi plus vulnérable si un aspect de la disposition change.", + "css.lint.fontFaceProperties.desc": "la règle @font-face doit définir les propriétés 'src' et 'font-family'", "css.lint.hexColorLength.desc": "Les couleurs Hex doivent contenir trois ou six chiffres hex", "css.lint.idSelector.desc": "Les sélecteurs ne doivent pas contenir d'ID, car ces règles sont trop fortement couplées au code HTML.", "css.lint.ieHack.desc": "Les hacks IE ne sont nécessaires que si IE7 et versions antérieures sont pris en charge", + "css.lint.importStatement.desc": "Les instructions d'importation ne sont pas chargées en parallèle", "css.lint.important.desc": "N'utilisez pas !important. Cela indique que la spécificité de l'intégralité du code CSS est incorrecte et qu'il doit être refactorisé.", "css.lint.propertyIgnoredDueToDisplay.desc": "Propriété ignorée en raison de l'affichage. Par exemple, avec 'display: inline', les propriétés width, height, margin-top, margin-bottom et float sont sans effet", + "css.lint.universalSelector.desc": "Le sélecteur universel (*) est connu pour sa lenteur", + "css.lint.unknownProperties.desc": "Propriété inconnue.", + "css.lint.unknownVendorSpecificProperties.desc": "Propriété spécifique à un fournisseur inconnue.", "css.lint.vendorPrefix.desc": "Lors de l'utilisation d'un préfixe spécifique à un fournisseur, ajouter également la propriété standard", + "css.lint.zeroUnits.desc": "Aucune unité nécessaire pour zéro", + "css.validate.desc": "Active ou désactive toutes les validations", + "less.lint.argumentsInColorFunction.desc": "Nombre de paramètres non valide", "less.lint.boxModel.desc": "Ne pas utiliser la largeur ou la hauteur avec une marge intérieure ou une bordure", "less.lint.compatibleVendorPrefixes.desc": "Lors de l'utilisation d'un préfixe spécifique à un fabricant, toujours inclure également toutes les propriétés spécifiques au fabricant", + "less.lint.duplicateProperties.desc": "Ne pas utiliser de définitions de style en double", + "less.lint.emptyRules.desc": "Ne pas utiliser d'ensembles de règles vides", "less.lint.float.desc": "N'utilisez pas 'float'. Les éléments Float peuvent fragiliser le code CSS qui est ainsi plus vulnérable si un aspect de la disposition change.", + "less.lint.fontFaceProperties.desc": "la règle @font-face doit définir les propriétés 'src' et 'font-family'", "less.lint.hexColorLength.desc": "Les couleurs Hex doivent contenir trois ou six chiffres hex", "less.lint.idSelector.desc": "Les sélecteurs ne doivent pas contenir d'ID, car ces règles sont trop fortement couplées au code HTML.", "less.lint.ieHack.desc": "Les hacks IE ne sont nécessaires que si IE7 et versions antérieures sont pris en charge", + "less.lint.importStatement.desc": "Les instructions d'importation ne sont pas chargées en parallèle", "less.lint.important.desc": "N'utilisez pas !important. Cela indique que la spécificité de l'intégralité du code CSS est incorrecte et qu'il doit être refactorisé.", "less.lint.propertyIgnoredDueToDisplay.desc": "Propriété ignorée en raison de l'affichage. Par exemple, avec 'display: inline', les propriétés width, height, margin-top, margin-bottom et float sont sans effet", + "less.lint.universalSelector.desc": "Le sélecteur universel (*) est connu pour sa lenteur", + "less.lint.unknownProperties.desc": "Propriété inconnue.", + "less.lint.unknownVendorSpecificProperties.desc": "Propriété spécifique à un fournisseur inconnue.", "less.lint.vendorPrefix.desc": "Lors de l'utilisation d'un préfixe spécifique à un fournisseur, ajouter également la propriété standard", + "less.lint.zeroUnits.desc": "Aucune unité nécessaire pour zéro", + "less.validate.desc": "Active ou désactive toutes les validations", + "scss.lint.argumentsInColorFunction.desc": "Nombre de paramètres non valide", "scss.lint.boxModel.desc": "Ne pas utiliser la largeur ou la hauteur avec une marge intérieure ou une bordure", "scss.lint.compatibleVendorPrefixes.desc": "Lors de l'utilisation d'un préfixe spécifique à un fabricant, toujours inclure également toutes les propriétés spécifiques au fabricant", + "scss.lint.duplicateProperties.desc": "Ne pas utiliser de définitions de style en double", + "scss.lint.emptyRules.desc": "Ne pas utiliser d'ensembles de règles vides", "scss.lint.float.desc": "N'utilisez pas 'float'. Les éléments Float peuvent fragiliser le code CSS qui est ainsi plus vulnérable si un aspect de la disposition change.", + "scss.lint.fontFaceProperties.desc": "la règle @font-face doit définir les propriétés 'src' et 'font-family'", "scss.lint.hexColorLength.desc": "Les couleurs Hex doivent contenir trois ou six chiffres hex", "scss.lint.idSelector.desc": "Les sélecteurs ne doivent pas contenir d'ID, car ces règles sont trop fortement couplées au code HTML.", "scss.lint.ieHack.desc": "Les hacks IE ne sont nécessaires que si IE7 et versions antérieures sont pris en charge", + "scss.lint.importStatement.desc": "Les instructions d'importation ne sont pas chargées en parallèle", "scss.lint.important.desc": "N'utilisez pas !important. Cela indique que la spécificité de l'intégralité du code CSS est incorrecte et qu'il doit être refactorisé.", "scss.lint.propertyIgnoredDueToDisplay.desc": "Propriété ignorée en raison de l'affichage. Par exemple, avec 'display: inline', les propriétés width, height, margin-top, margin-bottom et float sont sans effet", - "scss.lint.vendorPrefix.desc": "Lors de l'utilisation d'un préfixe spécifique à un fournisseur, ajouter également la propriété standard" + "scss.lint.universalSelector.desc": "Le sélecteur universel (*) est connu pour sa lenteur", + "scss.lint.unknownProperties.desc": "Propriété inconnue.", + "scss.lint.unknownVendorSpecificProperties.desc": "Propriété spécifique à un fournisseur inconnue.", + "scss.lint.vendorPrefix.desc": "Lors de l'utilisation d'un préfixe spécifique à un fournisseur, ajouter également la propriété standard", + "scss.lint.zeroUnits.desc": "Aucune unité nécessaire pour zéro", + "scss.validate.desc": "Active ou désactive toutes les validations" } \ No newline at end of file diff --git a/i18n/fra/extensions/html/package.i18n.json b/i18n/fra/extensions/html/package.i18n.json index 46574986c48..75329fb6dad 100644 --- a/i18n/fra/extensions/html/package.i18n.json +++ b/i18n/fra/extensions/html/package.i18n.json @@ -4,10 +4,15 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "html.format.enable.desc": "Activer/désactiver le formateur HTML par défaut (nécessite un redémarrage)", + "html.format.endWithNewline.desc": "Finissez par un caractère de nouvelle ligne.", "html.format.extraLiners.desc": "Liste de balises, séparées par une virgule, qui doivent être précédées d'une nouvelle ligne. 'null' prend par défaut la valeur \"head, body, /html\".", + "html.format.indentHandlebars.desc": "Mettez en forme et en retrait {{#foo}}, ainsi que {{/foo}}.", + "html.format.indentInnerHtml.desc": "Mettez en retrait les sections et .", "html.format.maxPreserveNewLines.desc": "Nombre maximal de sauts de ligne à conserver dans un bloc. Utilisez 'null' pour indiquer une valeur illimitée.", "html.format.preserveNewLines.desc": "Spécifie si les sauts de ligne existants qui précèdent les éléments doivent être conservés. Fonctionne uniquement devant les éléments, pas dans les balises, ni pour du texte.", "html.format.unformatted.desc": "Liste des balises, séparées par des virgules, qui ne doivent pas être remises en forme. 'null' correspond par défaut à toutes les balises répertoriées à l'adresse https://www.w3.org/TR/html5/dom.html#phrasing-content.", + "html.format.wrapLineLength.desc": "Nombre maximal de caractères par ligne (0 = désactiver).", "html.suggest.angular1.desc": "Permet de configurer la prise en charge intégrée du langage HTML pour suggérer des balises et propriétés Angular V1.", "html.suggest.html5.desc": "Permet de configurer la prise en charge intégrée du langage HTML pour suggérer des balises, des propriétés et des valeurs HTML5.", "html.suggest.ionic.desc": "Permet de configurer la prise en charge intégrée du langage HTML pour suggérer des balises, des propriétés et des valeurs Ionic." diff --git a/i18n/fra/extensions/javascript/out/features/bowerJSONContribution.i18n.json b/i18n/fra/extensions/javascript/out/features/bowerJSONContribution.i18n.json index 08cf5363d7a..733dd189a0c 100644 --- a/i18n/fra/extensions/javascript/out/features/bowerJSONContribution.i18n.json +++ b/i18n/fra/extensions/javascript/out/features/bowerJSONContribution.i18n.json @@ -6,6 +6,5 @@ { "json.bower.default": "Fichier bower.json par défaut", "json.bower.error.repoaccess": "Échec de la requête destinée au dépôt bower : {0}", - "json.bower.latest.version": "dernière", - "json.bower.package.hover": "{0}" + "json.bower.latest.version": "dernière" } \ No newline at end of file diff --git a/i18n/fra/extensions/javascript/out/features/packageJSONContribution.i18n.json b/i18n/fra/extensions/javascript/out/features/packageJSONContribution.i18n.json index 0485b93e3ee..3b4881ef032 100644 --- a/i18n/fra/extensions/javascript/out/features/packageJSONContribution.i18n.json +++ b/i18n/fra/extensions/javascript/out/features/packageJSONContribution.i18n.json @@ -8,7 +8,6 @@ "json.npm.latestversion": "Dernière version du package", "json.npm.majorversion": "Correspond à la version principale la plus récente (1.x.x)", "json.npm.minorversion": "Correspond à la version mineure la plus récente (1.2.x)", - "json.npm.package.hover": "{0}", "json.npm.version.hover": "Dernière version : {0}", "json.package.default": "Fichier package.json par défaut" } \ No newline at end of file diff --git a/i18n/fra/extensions/json/package.i18n.json b/i18n/fra/extensions/json/package.i18n.json index 8b6ad71cd4e..3e66d45dd00 100644 --- a/i18n/fra/extensions/json/package.i18n.json +++ b/i18n/fra/extensions/json/package.i18n.json @@ -3,4 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. -{} \ No newline at end of file +{ + "json.format.enable.desc": "Activer/désactiver le formateur JSON par défaut (nécessite un redémarrage)", + "json.schemas.desc": "Associer les schémas aux fichiers JSON dans le projet actif", + "json.schemas.fileMatch.desc": "Tableau de modèles de fichiers pour la recherche de correspondances durant la résolution de fichiers JSON en schémas.", + "json.schemas.fileMatch.item.desc": "Modèle de fichier pouvant contenir '*' pour la recherche de correspondances durant la résolution de fichiers JSON en schémas.", + "json.schemas.schema.desc": "Définition de schéma pour l'URL indiquée. Le schéma doit être fourni uniquement pour éviter les accès à l'URL du schéma.", + "json.schemas.url.desc": "URL de schéma ou chemin relatif d'un schéma dans le répertoire actif" +} \ No newline at end of file diff --git a/i18n/fra/src/vs/code/electron-main/menus.i18n.json b/i18n/fra/src/vs/code/electron-main/menus.i18n.json index 4c556d25f67..5736941c7bc 100644 --- a/i18n/fra/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/fra/src/vs/code/electron-main/menus.i18n.json @@ -21,9 +21,9 @@ "mWindow": "Fenêtre", "miAbout": "À pr&&opos de", "miAccessibilityOptions": "&&Options d'accessibilité", - "miAddSelectionToNextFindMatch": "Ajouter l'occurrence suiva&nte", + "miAddSelectionToNextFindMatch": "Ajouter l'occurrence suiva&&nte", "miAddSelectionToPreviousFindMatch": "Ajouter l'occurrence p&&récédente", - "miAdditionalViews": "&&Vues supplémentaires", + "miAdditionalViews": "Affic&&hages supplémentaires", "miAutoSave": "Enregistrement automatique", "miBack": "&&Précédent", "miCheckForUpdates": "Rechercher les mises à jour...", @@ -106,7 +106,7 @@ "miShowActivityBar": "Afficher la &&Barre d'activités", "miShowEmmetCommands": "E&&mmet...", "miShowStatusbar": "Affic&&her la barre d'état", - "miSmartSelectGrow": "&&Étendre la sélection", + "miSmartSelectGrow": "Dév&&elopper la sélection", "miSmartSelectShrink": "&&Réduire la sélection", "miSplitEditor": "Fractionner l'édit&&eur", "miSwitchEditor": "Changer d'é&&diteur", diff --git a/i18n/fra/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json b/i18n/fra/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json index e0f7e3415bc..5b09b6553c0 100644 --- a/i18n/fra/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json +++ b/i18n/fra/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json @@ -6,8 +6,5 @@ { "markerAction.next.label": "Accéder à l'erreur ou l'avertissement suivant", "markerAction.previous.label": "Accéder à l'erreur ou l'avertissement précédent", - "quickfix.multiple.label": "Corrections suggérées : ", - "quickfix.single.label": "Correction suggérée : ", - "title.w_source": "({0}/{1}) [{2}]", "title.wo_source": "({0}/{1})" } \ No newline at end of file diff --git a/i18n/fra/src/vs/platform/environment/node/argv.i18n.json b/i18n/fra/src/vs/platform/environment/node/argv.i18n.json index 0f0dfbbc425..07850cb5ed7 100644 --- a/i18n/fra/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/fra/src/vs/platform/environment/node/argv.i18n.json @@ -20,7 +20,7 @@ "paths": "chemins", "performance": "Démarrez avec la commande 'Développeur : performance de démarrage' activée.", "reuseWindow": "Forcez l'ouverture d'un fichier ou dossier dans la dernière fenêtre active.", - "showVersions": "Affichez les versions des extensions installées en utilisant --list-extension.", + "showVersions": "Affichez les versions des extensions installées, quand --list-extension est utilisé.", "uninstallExtension": "Désinstalle une extension.", "usage": "Utilisation", "userDataDir": "Spécifie le répertoire où sont conservées les données des utilisateurs. S'avère utile pour une exécution en tant que root.", diff --git a/i18n/fra/src/vs/workbench/node/extensionHostMain.i18n.json b/i18n/fra/src/vs/workbench/node/extensionHostMain.i18n.json index 7858fb93e39..f30faa3442f 100644 --- a/i18n/fra/src/vs/workbench/node/extensionHostMain.i18n.json +++ b/i18n/fra/src/vs/workbench/node/extensionHostMain.i18n.json @@ -4,7 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "extensionTestError": "Le chemin {0} ne pointe pas vers un Test Runner d'extension valide.", - "extensionUnderDevelopment": "Chargement de l'extension de développement sur {0}", - "overwritingExtension": "Remplacement de l'extension {0} par {1}." + "extensionTestError": "Le chemin {0} ne pointe pas vers un Test Runner d'extension valide." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index fc4997492e2..6058ddf48f6 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -33,7 +33,6 @@ "restartDebug": "Redémarrer", "restartFrame": "Redémarrer le frame", "reverseContinue": "Inverser", - "selectConfig": "Sélectionner une configuration", "setValue": "Définir la valeur", "startDebug": "Démarrer le débogage", "startWithoutDebugging": "Exécuter sans débogage", diff --git a/i18n/fra/src/vs/workbench/parts/debug/common/debugModel.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/common/debugModel.i18n.json index 3240efcf8d8..29088837634 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/common/debugModel.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/common/debugModel.i18n.json @@ -5,7 +5,6 @@ // Do not edit this file. It is machine generated. { "notAvailable": "non disponible", - "snapshotObj": "Seules les valeurs primitives sont affichées pour cet objet.", "startDebugFirst": "Démarrez une session de débogage pour évaluation", "unknownSource": "Source inconnue", "unknownStack": "Emplacement de pile inconnu" diff --git a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index ce9198773c8..811937a6c8b 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -6,7 +6,6 @@ { "debugAdapterBinNotFound": "L'exécutable d'adaptateur de débogage '{0}' est introuvable.", "debugAdapterCrash": "Le processus de l'adaptateur de débogage s'est terminé de manière inattendue", - "debuggee": "élément débogué", "moreInfo": "Informations", "noDebugAdapterExtensionInstalled": "Aucune extension installée pour le débogage de '{0}'.", "stoppingDebugAdapter": "{0}. Arrêt de l'adaptateur de débogage.", diff --git a/i18n/fra/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/fra/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index b8b7ce7841c..05c725e0f74 100644 --- a/i18n/fra/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -12,6 +12,5 @@ "debugServer": "Pour le développement d'une extension de débogage uniquement : si un port est spécifié, VS Code tente de se connecter à un adaptateur de débogage s'exécutant en mode serveur", "debugType": "Type de configuration.", "debugWindowsConfiguration": "Attributs de configuration de lancement spécifiques à Windows.", - "internalConsoleOptions": "Contrôle le comportement de la console de débogage interne.", - "relativePathsNotConverted": "Les chemins relatifs ne sont plus convertis automatiquement en chemins absolus. Utilisez ${workspaceRoot} comme préfixe." + "internalConsoleOptions": "Contrôle le comportement de la console de débogage interne." } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json index 1f0f8d059d9..22d25773dcc 100644 --- a/i18n/fra/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json @@ -6,8 +6,8 @@ { "showViewlet": "Afficher {0}", "view": "Affichage", - "vscode.extension.contributes.explorer": "Utilise la viewlet de l'Explorateur d'arborescences personnalisé dans la barre latérale", + "vscode.extension.contributes.explorer": "Utilise la viewlet du Tree Explorer personnalisé dans la barre latérale", "vscode.extension.contributes.explorer.icon": "Chemin de l'icône de viewlet dans la barre d'activités", "vscode.extension.contributes.explorer.treeExplorerNodeProviderId": "ID unique permettant d'identifier le fournisseur inscrit via vscode.workspace.registerTreeExplorerNodeProvider", - "vscode.extension.contributes.explorer.treeLabel": "Chaîne contrôlable de visu permettant d'afficher l'Explorateur d'arborescences personnalisé" + "vscode.extension.contributes.explorer.treeLabel": "Chaîne contrôlable de visu permettant d'afficher le Tree Explorer personnalisé" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json b/i18n/fra/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json index 0da5f380d60..78627d5d6f2 100644 --- a/i18n/fra/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json @@ -4,5 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "treeExplorerViewlet.tree": "Section de l'Explorateur d'arborescences" + "treeExplorerViewlet.tree": "Section Tree Explorer" } \ No newline at end of file diff --git a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index c06ef46cda6..bfdd9773fd5 100644 --- a/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/fra/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "disableGlobalExtensions": "Configurer les extensions désactivées", - "disableWorkspaceExtensions": "Configurer les extensions désactivées (espace de travail)", "extension": "Extension", "extensions": "Extensions", "extensionsAutoUpdate": "Mettre à jour automatiquement les extensions", diff --git a/i18n/ita/extensions/css/package.i18n.json b/i18n/ita/extensions/css/package.i18n.json index da523593934..272c95c954d 100644 --- a/i18n/ita/extensions/css/package.i18n.json +++ b/i18n/ita/extensions/css/package.i18n.json @@ -4,31 +4,61 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "css.lint.argumentsInColorFunction.desc": "Numero di parametri non valido", "css.lint.boxModel.desc": "Non usare width o height con padding o border", "css.lint.compatibleVendorPrefixes.desc": "Quando si usa un prefisso specifico del fornitore, assicurarsi di includere anche tutte le altre proprietà specifiche del fornitore", + "css.lint.duplicateProperties.desc": "Non usare definizioni di stile duplicate", + "css.lint.emptyRules.desc": "Non usare set di regole vuoti", "css.lint.float.desc": "Evitare di usare 'float'. Con gli elementi float si ottiene codice CSS che causa facilmente interruzioni in caso di modifica di un aspetto del layout.", + "css.lint.fontFaceProperties.desc": "La regola @font-face deve definire le proprietà 'src' e 'font-family'", "css.lint.hexColorLength.desc": "I colori esadecimali devono essere composti da tre o sei numeri esadecimali", "css.lint.idSelector.desc": "I selettori non devono contenere ID perché queste regole sono strettamente accoppiate al codice HTML.", "css.lint.ieHack.desc": "Gli hack IE sono necessari solo per il supporto di IE7 e versioni precedenti", + "css.lint.importStatement.desc": "Le istruzioni Import non vengono caricate in parallelo", "css.lint.important.desc": "Evitare di usare !important perché indica che la specificità dell'intero codice CSS non è più controllabile ed è necessario effettuarne il refactoring.", "css.lint.propertyIgnoredDueToDisplay.desc": "La proprietà viene ignorata a causa della visualizzazione. Ad esempio, con 'display: inline', le proprietà width, height, margin-top, margin-bottom e float non hanno effetto", + "css.lint.universalSelector.desc": "Il selettore universale (*) è notoriamente lento", + "css.lint.unknownProperties.desc": "Proprietà sconosciuta.", + "css.lint.unknownVendorSpecificProperties.desc": "Proprietà specifica del fornitore sconosciuta.", "css.lint.vendorPrefix.desc": "Quando si usa un prefisso specifico del fornitore, includere anche la proprietà standard", + "css.lint.zeroUnits.desc": "Non è necessaria alcuna unità per lo zero", + "css.validate.desc": "Abilita o disabilita tutte le convalide", + "less.lint.argumentsInColorFunction.desc": "Numero di parametri non valido", "less.lint.boxModel.desc": "Non usare width o height con padding o border", "less.lint.compatibleVendorPrefixes.desc": "Quando si usa un prefisso specifico del fornitore, assicurarsi di includere anche tutte le altre proprietà specifiche del fornitore", + "less.lint.duplicateProperties.desc": "Non usare definizioni di stile duplicate", + "less.lint.emptyRules.desc": "Non usare set di regole vuoti", "less.lint.float.desc": "Evitare di usare 'float'. Con gli elementi float si ottiene codice CSS che causa facilmente interruzioni in caso di modifica di un aspetto del layout.", + "less.lint.fontFaceProperties.desc": "La regola @font-face deve definire le proprietà 'src' e 'font-family'", "less.lint.hexColorLength.desc": "I colori esadecimali devono essere composti da tre o sei numeri esadecimali", "less.lint.idSelector.desc": "I selettori non devono contenere ID perché queste regole sono strettamente accoppiate al codice HTML.", "less.lint.ieHack.desc": "Gli hack IE sono necessari solo per il supporto di IE7 e versioni precedenti", + "less.lint.importStatement.desc": "Le istruzioni Import non vengono caricate in parallelo", "less.lint.important.desc": "Evitare di usare !important perché indica che la specificità dell'intero codice CSS non è più controllabile ed è necessario effettuarne il refactoring.", "less.lint.propertyIgnoredDueToDisplay.desc": "La proprietà viene ignorata a causa della visualizzazione. Ad esempio, con 'display: inline', le proprietà width, height, margin-top, margin-bottom e float non hanno effetto", + "less.lint.universalSelector.desc": "Il selettore universale (*) è notoriamente lento", + "less.lint.unknownProperties.desc": "Proprietà sconosciuta.", + "less.lint.unknownVendorSpecificProperties.desc": "Proprietà specifica del fornitore sconosciuta.", "less.lint.vendorPrefix.desc": "Quando si usa un prefisso specifico del fornitore, includere anche la proprietà standard", + "less.lint.zeroUnits.desc": "Non è necessaria alcuna unità per lo zero", + "less.validate.desc": "Abilita o disabilita tutte le convalide", + "scss.lint.argumentsInColorFunction.desc": "Numero di parametri non valido", "scss.lint.boxModel.desc": "Non usare width o height con padding o border", "scss.lint.compatibleVendorPrefixes.desc": "Quando si usa un prefisso specifico del fornitore, assicurarsi di includere anche tutte le altre proprietà specifiche del fornitore", + "scss.lint.duplicateProperties.desc": "Non usare definizioni di stile duplicate", + "scss.lint.emptyRules.desc": "Non usare set di regole vuoti", "scss.lint.float.desc": "Evitare di usare 'float'. Con gli elementi float si ottiene codice CSS che causa facilmente interruzioni in caso di modifica di un aspetto del layout.", + "scss.lint.fontFaceProperties.desc": "La regola @font-face deve definire le proprietà 'src' e 'font-family'", "scss.lint.hexColorLength.desc": "I colori esadecimali devono essere composti da tre o sei numeri esadecimali", "scss.lint.idSelector.desc": "I selettori non devono contenere ID perché queste regole sono strettamente accoppiate al codice HTML.", "scss.lint.ieHack.desc": "Gli hack IE sono necessari solo per il supporto di IE7 e versioni precedenti", + "scss.lint.importStatement.desc": "Le istruzioni Import non vengono caricate in parallelo", "scss.lint.important.desc": "Evitare di usare !important perché indica che la specificità dell'intero codice CSS non è più controllabile ed è necessario effettuarne il refactoring.", "scss.lint.propertyIgnoredDueToDisplay.desc": "La proprietà viene ignorata a causa della visualizzazione. Ad esempio, con 'display: inline', le proprietà width, height, margin-top, margin-bottom e float non hanno effetto", - "scss.lint.vendorPrefix.desc": "Quando si usa un prefisso specifico del fornitore, includere anche la proprietà standard" + "scss.lint.universalSelector.desc": "Il selettore universale (*) è notoriamente lento", + "scss.lint.unknownProperties.desc": "Proprietà sconosciuta.", + "scss.lint.unknownVendorSpecificProperties.desc": "Proprietà specifica del fornitore sconosciuta.", + "scss.lint.vendorPrefix.desc": "Quando si usa un prefisso specifico del fornitore, includere anche la proprietà standard", + "scss.lint.zeroUnits.desc": "Non è necessaria alcuna unità per lo zero", + "scss.validate.desc": "Abilita o disabilita tutte le convalide" } \ No newline at end of file diff --git a/i18n/ita/extensions/html/package.i18n.json b/i18n/ita/extensions/html/package.i18n.json index 52d4240218d..f03e4211786 100644 --- a/i18n/ita/extensions/html/package.i18n.json +++ b/i18n/ita/extensions/html/package.i18n.json @@ -4,10 +4,15 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "html.format.enable.desc": "Abilita/Disabilita il formattatore HTML predefinito (richiede il riavvio)", + "html.format.endWithNewline.desc": "Termina con un carattere di nuova riga.", "html.format.extraLiners.desc": "Elenco di tag, separati da virgole, che devono essere preceduti da un carattere di nuova riga. Con 'null' viene usata l'impostazione predefinita \"head, body, /html\".", + "html.format.indentHandlebars.desc": "Applica la formattazione e imposta un rientro per {{#foo}} e {{/foo}}.", + "html.format.indentInnerHtml.desc": "Imposta un rientro per le sezioni e .", "html.format.maxPreserveNewLines.desc": "Numero massimo di interruzioni di riga da mantenere in un unico blocco. Per non impostare un numero massimo, usare 'null'.", "html.format.preserveNewLines.desc": "Indica se è necessario mantenere interruzioni di riga esistenti prima degli elementi. Funziona solo prima degli elementi e non all'interno di tag o per il testo.", "html.format.unformatted.desc": "Elenco di tag, separati da virgole, che non devono essere riformattati. Con 'null' viene usata l'impostazione predefinita che prevede l'uso di tutti i tag elencati in https://www.w3.org/TR/html5/dom.html#phrasing-content.", + "html.format.wrapLineLength.desc": "Numero massimo di caratteri per riga (0 = disabilita).", "html.suggest.angular1.desc": "Consente di configurare se il supporto del linguaggio HTML predefinito suggerisce tag e proprietà di Angular V1.", "html.suggest.html5.desc": "Consente di configurare se il supporto del linguaggio HTML predefinito suggerisce tag, proprietà e valori di HTML5.", "html.suggest.ionic.desc": "Consente di configurare se il supporto del linguaggio HTML predefinito suggerisce tag, proprietà e valori di Ionic." diff --git a/i18n/ita/extensions/javascript/out/features/bowerJSONContribution.i18n.json b/i18n/ita/extensions/javascript/out/features/bowerJSONContribution.i18n.json index 851aee3a730..38f75669cd3 100644 --- a/i18n/ita/extensions/javascript/out/features/bowerJSONContribution.i18n.json +++ b/i18n/ita/extensions/javascript/out/features/bowerJSONContribution.i18n.json @@ -6,6 +6,5 @@ { "json.bower.default": "bower.json predefinito", "json.bower.error.repoaccess": "La richiesta al repository Bower non è riuscita: {0}", - "json.bower.latest.version": "più recente", - "json.bower.package.hover": "{0}" + "json.bower.latest.version": "più recente" } \ No newline at end of file diff --git a/i18n/ita/extensions/javascript/out/features/packageJSONContribution.i18n.json b/i18n/ita/extensions/javascript/out/features/packageJSONContribution.i18n.json index 917d7968ae3..8328cf5b907 100644 --- a/i18n/ita/extensions/javascript/out/features/packageJSONContribution.i18n.json +++ b/i18n/ita/extensions/javascript/out/features/packageJSONContribution.i18n.json @@ -8,7 +8,6 @@ "json.npm.latestversion": "Ultima versione attualmente disponibile del pacchetto", "json.npm.majorversion": "Trova la versione principale più recente (1.x.x)", "json.npm.minorversion": "Trova la versione secondaria più recente (1.2.x)", - "json.npm.package.hover": "{0}", "json.npm.version.hover": "Ultima versione: {0}", "json.package.default": "package.json predefinito" } \ No newline at end of file diff --git a/i18n/ita/extensions/json/package.i18n.json b/i18n/ita/extensions/json/package.i18n.json index 8b6ad71cd4e..7aaa0db6e26 100644 --- a/i18n/ita/extensions/json/package.i18n.json +++ b/i18n/ita/extensions/json/package.i18n.json @@ -3,4 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. -{} \ No newline at end of file +{ + "json.format.enable.desc": "Abilita/Disabilita il formattatore JSON predefinito (richiede il riavvio)", + "json.schemas.desc": "Associa schemi a file JSON nel progetto corrente", + "json.schemas.fileMatch.desc": "Matrice di criteri dei file da usare per la ricerca durante la risoluzione di file JSON in schemi.", + "json.schemas.fileMatch.item.desc": "Criteri dei file che possono contenere '*' da usare per la ricerca durante la risoluzione di file JSON in schemi.", + "json.schemas.schema.desc": "Definizione dello schema per l'URL specificato. È necessario specificare lo schema per evitare accessi all'URL dello schema.", + "json.schemas.url.desc": "URL di uno schema o percorso relativo di uno schema nella directory corrente" +} \ No newline at end of file diff --git a/i18n/ita/extensions/typescript/out/typescriptServiceClient.i18n.json b/i18n/ita/extensions/typescript/out/typescriptServiceClient.i18n.json index 87bafe16dc6..b938df48559 100644 --- a/i18n/ita/extensions/typescript/out/typescriptServiceClient.i18n.json +++ b/i18n/ita/extensions/typescript/out/typescriptServiceClient.i18n.json @@ -6,9 +6,7 @@ { "channelName": "TypeScript", "close": "Chiudi", - "doNotCheckAgain": "Non eseguire più la verifica", "localTSFound": "La cartella dell'area di lavoro contiene TypeScript versione {0}. Usare questa versione invece della {1} in bundle?", - "moreInformation": "Altre informazioni", "neverCheckLocalVesion": "Non controllare mai la versione dell'area di lavoro", "noServerFound": "Il percorso {0} non punta a un'installazione valida di tsserver. Le funzionalità del linguaggio TypeScript verranno disabilitate.", "serverCouldNotBeStarted": "Non è stato possibile avviare il server di linguaggio TypeScript. Messaggio di errore: {0}", @@ -16,10 +14,8 @@ "serverDiedAfterStart": "Il servizio di linguaggio TypeScript è stato arrestato in modo imprevisto per cinque volte dopo che è stato avviato e non verrà riavviato. Aprire una segnalazione bug.", "updateGlobalWorkspaceCheck": "L'impostazione utente 'typescript.check.workspaceVersion' è stata aggiornata ed è ora false", "updateLocalWorkspaceCheck": "L'impostazione dell'area di lavoro 'typescript.check.workspaceVersion' è stata aggiornata ed è ora false", - "updateTscCheck": "L'impostazione utente 'typescript.check.tscVersion' è stata aggiornata ed è ora false", "updatedtsdk": "L'impostazione dell'area di lavoro 'typescript.tsdk' è stata aggiornata ed è ora {0}", "use": "Usa l'area di lavoro ({0})", "useBundled": "Usa la versione in bundle ({0})", - "versionMismatch": "Le versioni non corrispondono. Compilatore tsc globale ({0}) != servizio di linguaggio di Visual Studio Code ({1}). Potrebbero verificarsi errori di compilazione incoerente", "versionNumber.custom": "personalizzato" } \ No newline at end of file diff --git a/i18n/ita/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json b/i18n/ita/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json index 1d52bb82f21..5e74c102ff7 100644 --- a/i18n/ita/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json +++ b/i18n/ita/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json @@ -6,8 +6,5 @@ { "markerAction.next.label": "Vai a errore o avviso successivo", "markerAction.previous.label": "Vai a errore o avviso precedente", - "quickfix.multiple.label": "Correzioni suggerite: ", - "quickfix.single.label": "Correzione suggerita: ", - "title.w_source": "({0}/{1}) [{2}]", "title.wo_source": "({0}/{1})" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/node/extensionHostMain.i18n.json b/i18n/ita/src/vs/workbench/node/extensionHostMain.i18n.json index 50bf2fabd03..fb562a4de45 100644 --- a/i18n/ita/src/vs/workbench/node/extensionHostMain.i18n.json +++ b/i18n/ita/src/vs/workbench/node/extensionHostMain.i18n.json @@ -4,7 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "extensionTestError": "Il percorso {0} non punta a un Test Runner di estensioni valido.", - "extensionUnderDevelopment": "Caricamento dell'estensione di sviluppo in {0}", - "overwritingExtension": "Sovrascrittura dell'estensione {0} con {1}." + "extensionTestError": "Il percorso {0} non punta a un Test Runner di estensioni valido." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index 2da49b1f127..8005906b548 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -33,7 +33,6 @@ "restartDebug": "Riavvia", "restartFrame": "Riavvia frame", "reverseContinue": "Inverti", - "selectConfig": "Seleziona configurazione", "setValue": "Imposta valore", "startDebug": "Avvia debug", "startWithoutDebugging": "Avvia senza eseguire debug", diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json index fc2589ad1c7..f3518e125f9 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugService.i18n.json @@ -8,7 +8,7 @@ "NewLaunchConfig": "Impostare il file di configurazione di avvio per l'applicazione.", "breakpointAdded": "Aggiunto un punto di interruzione a riga {0} del file {1}", "breakpointRemoved": "Rimosso un punto di interruzione a riga {0} del file {1}", - "compoundMustHaveConfigurationNames": "Per avviare più configurazioni, deve essere impostato l'attributo \"configurationNames\" dell'elemento composto.", + "compoundMustHaveConfigurationNames": "Per avviare più configurazioni, deve essere impostato l'attributo \"configurationNames\" dell'elemento compounds.", "debugAdapterCrash": "Il processo dell'adattatore di debug è stato terminato in modo imprevisto", "debugAnyway": "Eseguire comunque il debug", "debugSourceNotAvailable": "L'origine {0} non è disponibile.", diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json index b495b1f3927..ac93acc368f 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/debugViewer.i18n.json @@ -12,7 +12,7 @@ "functionBreakpointsNotSupported": "Punti di interruzione delle funzioni non sono supportati da questo tipo di debug", "loadMoreStackFrames": "Carica altri stack frame", "paused": "In pausa", - "pausedOn": "In pausa su {0}", + "pausedOn": "Sospeso in caso di {0}", "process": "Processo", "running": "In esecuzione", "stackFrameAriaLabel": "Riga{1} {2} dello stack frame {0}, stack di chiamate, debug", diff --git a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index 2e0279bf2f6..64905b8bd6f 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -6,7 +6,6 @@ { "debugAdapterBinNotFound": "Il file eseguibile '{0}' dell'adattatore di debug non è stato trovato.", "debugAdapterCrash": "Il processo dell'adattatore di debug è stato terminato in modo imprevisto", - "debuggee": "oggetto del debug", "moreInfo": "Altre info", "noDebugAdapterExtensionInstalled": "Non ci sono estensioni installate per il debug di '{0}'.", "stoppingDebugAdapter": "{0}. L'adattatore di debug verrà arrestato.", diff --git a/i18n/ita/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index 7d138b69e86..4574bde786f 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -12,6 +12,5 @@ "debugServer": "Solo per lo sviluppo dell'estensione di debug: se si specifica una porta, Visual Studio Code prova a connettersi a un adattatore di debug in esecuzione in modalità server", "debugType": "Tipo di configurazione.", "debugWindowsConfiguration": "Attributi della configurazione di avvio specifici di Windows.", - "internalConsoleOptions": "Controlla il comportamento della console di debug interna.", - "relativePathsNotConverted": "I percorsi relativi non verranno più convertiti in quelli assoluti. Provare a usare ${workspaceRoot} come prefisso." + "internalConsoleOptions": "Controlla il comportamento della console di debug interna." } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json b/i18n/ita/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json index aa527e3edcd..496e49136c4 100644 --- a/i18n/ita/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json @@ -5,9 +5,9 @@ // Do not edit this file. It is machine generated. { "DebugConfig.failed": "Non è possibile creare il file 'launch.json' all'interno della cartella '.vscode' ({0}).", - "app.launch.json.compound.name": "Nome dell'elemento composto. Viene visualizzato nel menu a discesa della configurazione di avvio.", - "app.launch.json.compounds": "Elenco degli elementi composti. Ogni elemento composto fa riferimento a più configurazioni che verranno avviate insieme.", - "app.launch.json.compounds.configurations": "Nomi delle configurazioni che verranno avviate per questo elemento composto.", + "app.launch.json.compound.name": "Nome dell'elemento compounds. Viene visualizzato nel menu a discesa della configurazione di avvio.", + "app.launch.json.compounds": "Elenco degli elementi compounds. Ogni elemento compounds fa riferimento a più configurazioni che verranno avviate insieme.", + "app.launch.json.compounds.configurations": "Nomi delle configurazioni che verranno avviate per questo elemento compounds.", "app.launch.json.configurations": "Elenco delle configurazioni. Aggiungere nuove configurazioni o modificare quelle esistenti con IntelliSense.", "app.launch.json.debugServer": "DEPRECATO: spostare debugServer all'interno di una configurazione.", "app.launch.json.title": "Avvia", diff --git a/i18n/ita/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json index a07c99c081d..ba07ef90d3e 100644 --- a/i18n/ita/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json @@ -6,8 +6,8 @@ { "showViewlet": "Mostra {0}", "view": "Visualizza", - "vscode.extension.contributes.explorer": "Aggiunge come contributo il viewlet Esplora albero personalizzato alla barra laterale", + "vscode.extension.contributes.explorer": "Aggiunge come contributo il viewlet Tree Explorer personalizzato alla barra laterale", "vscode.extension.contributes.explorer.icon": "Percorso dell'icona del viewlet sulla barra attività", "vscode.extension.contributes.explorer.treeExplorerNodeProviderId": "ID univoco usato per identificare il provider registrato tramite vscode.workspace.registerTreeExplorerNodeProvider", - "vscode.extension.contributes.explorer.treeLabel": "Stringa leggibile usata per il rendering dell'istanza personalizzata di Esplora albero" + "vscode.extension.contributes.explorer.treeLabel": "Stringa leggibile usata per il rendering dell'istanza personalizzata di Tree Explorer" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json b/i18n/ita/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json index d44c3e91ddf..50e9e258b16 100644 --- a/i18n/ita/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json @@ -4,5 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "treeExplorerViewlet.tree": "Sezione Esplora albero" + "treeExplorerViewlet.tree": "Sezione Tree Explorer" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 85d68597fa6..84af0ff5e9f 100644 --- a/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "disableGlobalExtensions": "Configura estensioni disabilitate", - "disableWorkspaceExtensions": "Configura estensioni disabilitate (area di lavoro)", "extension": "Estensione", "extensions": "Estensioni", "extensionsAutoUpdate": "Aggiorna automaticamente le estensioni", diff --git a/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index 6a9896057f1..7ad35064bca 100644 --- a/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -6,6 +6,7 @@ { "copy": "Copia nelle impostazioni", "copyToSettings": "Copia nelle impostazioni", + "selectAndCopySetting": "Selezionare un valore e copiarlo nelle impostazioni", "selectValue": "Selezionare un valore", "settingsEditorName": "Impostazioni predefinite" } \ No newline at end of file diff --git a/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesWidgets.i18n.json b/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesWidgets.i18n.json index 6ed298ff9bf..d3834c558fb 100644 --- a/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesWidgets.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/preferences/browser/preferencesWidgets.i18n.json @@ -4,6 +4,8 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "SearchSettingsWidget.AriaLabel": "Cerca impostazioni predefinite", + "SearchSettingsWidget.Placeholder": "Cerca impostazioni predefinite", "defaultSettingsInfo": " - Per sovrascriverle, inserirle nel file delle impostazioni a destra", "defaultSettingsTitle": "Impostazioni predefinite", "noSettings": "Non sono state trovate impostazioni", diff --git a/i18n/ita/src/vs/workbench/parts/preferences/common/preferencesModels.i18n.json b/i18n/ita/src/vs/workbench/parts/preferences/common/preferencesModels.i18n.json index afdca504c87..7149b64d24f 100644 --- a/i18n/ita/src/vs/workbench/parts/preferences/common/preferencesModels.i18n.json +++ b/i18n/ita/src/vs/workbench/parts/preferences/common/preferencesModels.i18n.json @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "defaultKeybindingsHeader": "Per sovrascrivere i tasti di scelta rapida, inserirli nel file dei tasti di scelta rapida.", - "defaultSettingsHeader": "Per sovrascrivere le impostazioni, inserirli nel file delle impostazioni.", - "defaultSettingsHeader2": "Per le impostazioni più usate, vedere http://go.microsoft.com/fwlink/?LinkId=808995." + "commonlyUsed": "Più usate", + "defaultKeybindingsHeader": "Per sovrascrivere i tasti di scelta rapida, inserirli nel file dei tasti di scelta rapida." } \ No newline at end of file diff --git a/i18n/jpn/extensions/javascript/out/features/bowerJSONContribution.i18n.json b/i18n/jpn/extensions/javascript/out/features/bowerJSONContribution.i18n.json index 1ee8fbd9957..02705fcc54f 100644 --- a/i18n/jpn/extensions/javascript/out/features/bowerJSONContribution.i18n.json +++ b/i18n/jpn/extensions/javascript/out/features/bowerJSONContribution.i18n.json @@ -6,6 +6,5 @@ { "json.bower.default": "既定の bower.json", "json.bower.error.repoaccess": "bower リポジトリに対する要求が失敗しました: {0}", - "json.bower.latest.version": "最新", - "json.bower.package.hover": "{0}" + "json.bower.latest.version": "最新" } \ No newline at end of file diff --git a/i18n/jpn/extensions/javascript/out/features/packageJSONContribution.i18n.json b/i18n/jpn/extensions/javascript/out/features/packageJSONContribution.i18n.json index cb5b19be821..8674c9393dc 100644 --- a/i18n/jpn/extensions/javascript/out/features/packageJSONContribution.i18n.json +++ b/i18n/jpn/extensions/javascript/out/features/packageJSONContribution.i18n.json @@ -8,7 +8,6 @@ "json.npm.latestversion": "パッケージの現在の最新バージョン", "json.npm.majorversion": "最新のメジャー バージョンと一致します (1.x.x)", "json.npm.minorversion": "最新のマイナー バージョンと一致します (1.2.x)", - "json.npm.package.hover": "{0}", "json.npm.version.hover": "最新バージョン: {0}", "json.package.default": "既定の package.json" } \ No newline at end of file diff --git a/i18n/jpn/extensions/typescript/out/typescriptServiceClient.i18n.json b/i18n/jpn/extensions/typescript/out/typescriptServiceClient.i18n.json index e0814e2e68a..9354f01d6fe 100644 --- a/i18n/jpn/extensions/typescript/out/typescriptServiceClient.i18n.json +++ b/i18n/jpn/extensions/typescript/out/typescriptServiceClient.i18n.json @@ -6,9 +6,7 @@ { "channelName": "TypeScript", "close": "閉じる", - "doNotCheckAgain": "今後確認しない", "localTSFound": "ワークスペース フォルダーには TypeScript バージョン {0} があります。バンドルされたバージョン {1} ではなく、このバージョンを使用しますか?", - "moreInformation": "詳細情報", "neverCheckLocalVesion": "ワークスペース バージョンを確認しない", "noServerFound": "パス {0} は、有効な tsserver インストールを指していません。TypeScript 言語機能は使用できなくなります。", "serverCouldNotBeStarted": "TypeScript 言語サーバーを起動できません。エラー メッセージ: {0}", @@ -16,10 +14,8 @@ "serverDiedAfterStart": "TypeScript 言語サービスは、開始直後に 5 回停止しました。サービスは再開されません。バグ報告を開いてください。", "updateGlobalWorkspaceCheck": "ユーザー設定 'typescript.check.workspaceVersion' を false に更新しました", "updateLocalWorkspaceCheck": "ワークスペース設定 'typescript.check.workspaceVersion' を false に更新しました", - "updateTscCheck": "ユーザー設定 'typescript.check.tscVersion' を false に更新しました", "updatedtsdk": "ワークスペース設定 'typescript.tsdk' を {0} に更新しました", "use": "ワークスペース ({0}) を使用する", "useBundled": "バンドル ({0}) を使用する", - "versionMismatch": "グローバルな tsc ({0}) と VS Code の言語サービス ({1}) の間にバージョンの不一致があります。非整合のコンパイル エラーを引き起こす可能性があります", "versionNumber.custom": "カスタム" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json b/i18n/jpn/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json index b6883832003..0324d5a9637 100644 --- a/i18n/jpn/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json +++ b/i18n/jpn/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json @@ -6,8 +6,5 @@ { "markerAction.next.label": "次のエラーまたは警告へ移動", "markerAction.previous.label": "前のエラーまたは警告へ移動", - "quickfix.multiple.label": "修正候補: ", - "quickfix.single.label": "修正候補: ", - "title.w_source": "({0}/{1}) [{2}]", "title.wo_source": "({0}/{1})" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/node/extensionHostMain.i18n.json b/i18n/jpn/src/vs/workbench/node/extensionHostMain.i18n.json index c2e37ce0c3b..2190a5033cb 100644 --- a/i18n/jpn/src/vs/workbench/node/extensionHostMain.i18n.json +++ b/i18n/jpn/src/vs/workbench/node/extensionHostMain.i18n.json @@ -4,7 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "extensionTestError": "パス {0} は有効な拡張機能テスト ランナーを指していません。", - "extensionUnderDevelopment": "開発の拡張機能を {0} に読み込んでいます", - "overwritingExtension": "拡張機能 {0} を {1} で上書きしています。" + "extensionTestError": "パス {0} は有効な拡張機能テスト ランナーを指していません。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index f3eed498cbd..4c56a24443a 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -33,7 +33,6 @@ "restartDebug": "再起動", "restartFrame": "フレームの再起動", "reverseContinue": "反転", - "selectConfig": "構成の選択", "setValue": "値の設定", "startDebug": "デバッグの開始", "startWithoutDebugging": "デバッグなしで開始", diff --git a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index 0b530352fe2..011181059b7 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -6,7 +6,6 @@ { "debugAdapterBinNotFound": "デバッグ アダプターの実行可能ファイル '{0}' が見つかりません。", "debugAdapterCrash": "デバッグ アダプター プロセスが予期せず終了しました", - "debuggee": "デバッグ対象", "moreInfo": "詳細情報", "noDebugAdapterExtensionInstalled": "'{0}' デバッグにインストールされている拡張機能はありません。", "stoppingDebugAdapter": "{0}。デバッグ アダプターを停止しています。", diff --git a/i18n/jpn/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/jpn/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index 28b049bae70..1943ad0a761 100644 --- a/i18n/jpn/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -12,6 +12,5 @@ "debugServer": "デバッグ拡張機能の開発のみ。ポートが指定の VS Code の場合、サーバー モードで実行中のデバッグ アダプターへの接続が試行されます。", "debugType": "構成の種類。", "debugWindowsConfiguration": "Windows 固有の起動構成の属性。", - "internalConsoleOptions": "内部デバッグ コンソールの動作を制御します。", - "relativePathsNotConverted": "相対パスが絶対パスに自動的に変換されなくなります。${workspaceRoot} をプレフィックスとして使用することを考慮してください。" + "internalConsoleOptions": "内部デバッグ コンソールの動作を制御します。" } \ No newline at end of file diff --git a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 418b45f7b5f..c49c36e3901 100644 --- a/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/jpn/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "disableGlobalExtensions": "無効な拡張機能の構成", - "disableWorkspaceExtensions": "無効な拡張機能の構成 (ワークスペース)", "extension": "拡張機能", "extensions": "拡張機能", "extensionsAutoUpdate": "拡張機能を自動的に更新します", diff --git a/i18n/kor/extensions/css/package.i18n.json b/i18n/kor/extensions/css/package.i18n.json index ddaaf0a9b0b..7a6e3d10873 100644 --- a/i18n/kor/extensions/css/package.i18n.json +++ b/i18n/kor/extensions/css/package.i18n.json @@ -4,31 +4,61 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "css.lint.argumentsInColorFunction.desc": "잘못된 매개 변수 수", "css.lint.boxModel.desc": "패딩 또는 테두리를 사용하는 경우 너비 또는 높이를 사용하지 마세요.", "css.lint.compatibleVendorPrefixes.desc": "공급업체 관련 접두사를 사용할 경우 다른 모든 공급업체 관련 속성도 포함합니다.", + "css.lint.duplicateProperties.desc": "중복된 스타일 정의를 사용하지 마세요.", + "css.lint.emptyRules.desc": "빈 규칙 집합을 사용하지 마세요.", "css.lint.float.desc": "'float'를 사용하지 않도록 합니다. Float를 사용하면 레이아웃의 한쪽이 바뀔 경우 CSS가 쉽게 깨질 수 있습니다.", + "css.lint.fontFaceProperties.desc": "@font-face 규칙에서 'src' 및 'font-family' 속성을 정의해야 합니다.", "css.lint.hexColorLength.desc": "16진수 색은 3개 또는 6개의 16진수로 구성되어야 합니다.", "css.lint.idSelector.desc": "이러한 규칙은 HTML과 긴밀하게 결합되므로 선택기에 ID를 포함하면 안 됩니다.", "css.lint.ieHack.desc": "IE 핵(Hack)은 IE7 이상을 지원할 때만 필요합니다.", + "css.lint.importStatement.desc": "Import 문은 병렬로 로드되지 않습니다.", "css.lint.important.desc": "!important는 사용하지 않도록 합니다. 이것은 전체 CSS의 특정성에 문제가 있어서 리팩터링해야 함을 나타냅니다.", "css.lint.propertyIgnoredDueToDisplay.desc": "display 때문에 속성이 무시됩니다. 예를 들어 'display: inline'을 사용할 경우 width, height, margin-top, margin-bottom 및 float 속성은 적용되지 않습니다.", + "css.lint.universalSelector.desc": "범용 선택기 (*)는 느린 것으로 알려져 있습니다.", + "css.lint.unknownProperties.desc": "알 수 없는 속성입니다.", + "css.lint.unknownVendorSpecificProperties.desc": "알 수 없는 공급업체 관련 속성입니다.", "css.lint.vendorPrefix.desc": "공급업체 관련 접두사를 사용할 때 표준 속성도 포함합니다.", + "css.lint.zeroUnits.desc": "0에는 단위가 필요하지 않습니다.", + "css.validate.desc": "모든 유효성 검사 사용 또는 사용 안 함", + "less.lint.argumentsInColorFunction.desc": "잘못된 매개 변수 수", "less.lint.boxModel.desc": "패딩 또는 테두리를 사용하는 경우 너비 또는 높이를 사용하지 마세요.", "less.lint.compatibleVendorPrefixes.desc": "공급업체 관련 접두사를 사용할 경우 다른 모든 공급업체 관련 속성도 포함합니다.", + "less.lint.duplicateProperties.desc": "중복된 스타일 정의를 사용하지 마세요.", + "less.lint.emptyRules.desc": "빈 규칙 집합을 사용하지 마세요.", "less.lint.float.desc": "'float'를 사용하지 않도록 합니다. Float를 사용하면 레이아웃의 한쪽이 바뀔 경우 CSS가 쉽게 깨질 수 있습니다.", + "less.lint.fontFaceProperties.desc": "@font-face 규칙에서 'src' 및 'font-family' 속성을 정의해야 합니다.", "less.lint.hexColorLength.desc": "16진수 색은 3개 또는 6개의 16진수로 구성되어야 합니다.", "less.lint.idSelector.desc": "이러한 규칙은 HTML과 긴밀하게 결합되므로 선택기에 ID를 포함하면 안 됩니다.", "less.lint.ieHack.desc": "IE 핵(Hack)은 IE7 이상을 지원할 때만 필요합니다.", + "less.lint.importStatement.desc": "Import 문은 병렬로 로드되지 않습니다.", "less.lint.important.desc": "!important는 사용하지 않도록 합니다. 이것은 전체 CSS의 특정성에 문제가 있어서 리팩터링해야 함을 나타냅니다.", "less.lint.propertyIgnoredDueToDisplay.desc": "display 때문에 속성이 무시됩니다. 예를 들어 'display: inline'을 사용할 경우 width, height, margin-top, margin-bottom 및 float 속성은 적용되지 않습니다.", + "less.lint.universalSelector.desc": "범용 선택기 (*)는 느린 것으로 알려져 있습니다.", + "less.lint.unknownProperties.desc": "알 수 없는 속성입니다.", + "less.lint.unknownVendorSpecificProperties.desc": "알 수 없는 공급업체 관련 속성입니다.", "less.lint.vendorPrefix.desc": "공급업체 관련 접두사를 사용할 때 표준 속성도 포함합니다.", + "less.lint.zeroUnits.desc": "0에는 단위가 필요하지 않습니다.", + "less.validate.desc": "모든 유효성 검사 사용 또는 사용 안 함", + "scss.lint.argumentsInColorFunction.desc": "잘못된 매개 변수 수", "scss.lint.boxModel.desc": "패딩 또는 테두리를 사용하는 경우 너비 또는 높이를 사용하지 마세요.", "scss.lint.compatibleVendorPrefixes.desc": "공급업체 관련 접두사를 사용할 경우 다른 모든 공급업체 관련 속성도 포함합니다.", + "scss.lint.duplicateProperties.desc": "중복된 스타일 정의를 사용하지 마세요.", + "scss.lint.emptyRules.desc": "빈 규칙 집합을 사용하지 마세요.", "scss.lint.float.desc": "'float'를 사용하지 않도록 합니다. Float를 사용하면 레이아웃의 한쪽이 바뀔 경우 CSS가 쉽게 깨질 수 있습니다.", + "scss.lint.fontFaceProperties.desc": "@font-face 규칙에서 'src' 및 'font-family' 속성을 정의해야 합니다.", "scss.lint.hexColorLength.desc": "16진수 색은 3개 또는 6개의 16진수로 구성되어야 합니다.", "scss.lint.idSelector.desc": "이러한 규칙은 HTML과 긴밀하게 결합되므로 선택기에 ID를 포함하면 안 됩니다.", "scss.lint.ieHack.desc": "IE 핵(Hack)은 IE7 이상을 지원할 때만 필요합니다.", + "scss.lint.importStatement.desc": "Import 문은 병렬로 로드되지 않습니다.", "scss.lint.important.desc": "!important는 사용하지 않도록 합니다. 이것은 전체 CSS의 특정성에 문제가 있어서 리팩터링해야 함을 나타냅니다.", "scss.lint.propertyIgnoredDueToDisplay.desc": "display 때문에 속성이 무시됩니다. 예를 들어 'display: inline'을 사용할 경우 width, height, margin-top, margin-bottom 및 float 속성은 적용되지 않습니다.", - "scss.lint.vendorPrefix.desc": "공급업체 관련 접두사를 사용할 때 표준 속성도 포함합니다." + "scss.lint.universalSelector.desc": "범용 선택기 (*)는 느린 것으로 알려져 있습니다.", + "scss.lint.unknownProperties.desc": "알 수 없는 속성입니다.", + "scss.lint.unknownVendorSpecificProperties.desc": "알 수 없는 공급업체 관련 속성입니다.", + "scss.lint.vendorPrefix.desc": "공급업체 관련 접두사를 사용할 때 표준 속성도 포함합니다.", + "scss.lint.zeroUnits.desc": "0에는 단위가 필요하지 않습니다.", + "scss.validate.desc": "모든 유효성 검사 사용 또는 사용 안 함" } \ No newline at end of file diff --git a/i18n/kor/extensions/html/package.i18n.json b/i18n/kor/extensions/html/package.i18n.json index 70e642f61c4..4132647d988 100644 --- a/i18n/kor/extensions/html/package.i18n.json +++ b/i18n/kor/extensions/html/package.i18n.json @@ -4,10 +4,15 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "html.format.enable.desc": "기본 HTML 포맷터 사용/사용 안 함(다시 시작해야 함)", + "html.format.endWithNewline.desc": "줄 바꿈으로 끝납니다.", "html.format.extraLiners.desc": "쉼표로 분리된 태그 목록으로 앞에 줄 바꿈을 추가로 넣어야 합니다. \"head, body, /html\"의 기본값은 'null'로 설정됩니다.", + "html.format.indentHandlebars.desc": "{{#foo}} 및 {{/foo}}를 서식 지정하고 들여쓰기합니다.", + "html.format.indentInnerHtml.desc": " 및 섹션을 들여쓰기합니다.", "html.format.maxPreserveNewLines.desc": "청크 한 개에 유지할 수 있는 최대 줄 바꿈 수입니다. 무제한일 때는 'null'을 사용합니다.", "html.format.preserveNewLines.desc": "요소 앞에 있는 기존 줄 바꿈의 유지 여부입니다. 요소 앞에만 적용되며 태그 안이나 텍스트에는 적용되지 않습니다.", "html.format.unformatted.desc": "쉼표로 분리된 태그 목록으로, 서식을 다시 지정해서는 안 됩니다. https://www.w3.org/TR/html5/dom.html#phrasing-content에 나열된 모든 태그의 기본값은 'null'로 설정됩니다.", + "html.format.wrapLineLength.desc": "한 줄당 최대 문자 수입니다(0 = 사용 안 함).", "html.suggest.angular1.desc": "기본 제공 HTML 언어 지원에서 Angular V1 태그 및 속성을 제안하는지 여부를 구성합니다.", "html.suggest.html5.desc": "기본 제공 HTML 언어 지원에서 HTML5 태그, 속성 및 값을 제안하는지 여부를 구성합니다.", "html.suggest.ionic.desc": "기본 제공 HTML 언어 지원에서 Ionic 태그, 속성 및 값을 제안하는지 여부를 구성합니다." diff --git a/i18n/kor/extensions/javascript/out/features/bowerJSONContribution.i18n.json b/i18n/kor/extensions/javascript/out/features/bowerJSONContribution.i18n.json index f9afa5fd848..7b97df16712 100644 --- a/i18n/kor/extensions/javascript/out/features/bowerJSONContribution.i18n.json +++ b/i18n/kor/extensions/javascript/out/features/bowerJSONContribution.i18n.json @@ -6,6 +6,5 @@ { "json.bower.default": "기본 bower.json", "json.bower.error.repoaccess": "Bower 리포지토리 요청 실패: {0}", - "json.bower.latest.version": "최신", - "json.bower.package.hover": "{0}" + "json.bower.latest.version": "최신" } \ No newline at end of file diff --git a/i18n/kor/extensions/javascript/out/features/packageJSONContribution.i18n.json b/i18n/kor/extensions/javascript/out/features/packageJSONContribution.i18n.json index 46b292dd467..0aff0534145 100644 --- a/i18n/kor/extensions/javascript/out/features/packageJSONContribution.i18n.json +++ b/i18n/kor/extensions/javascript/out/features/packageJSONContribution.i18n.json @@ -8,7 +8,6 @@ "json.npm.latestversion": "패키지의 현재 최신 버전", "json.npm.majorversion": "최신 주 버전(1.x.x)을 일치시킵니다.", "json.npm.minorversion": "최신 부 버전(1.2.x)을 일치시킵니다.", - "json.npm.package.hover": "{0}", "json.npm.version.hover": "최신 버전: {0}", "json.package.default": "기본 package.json" } \ No newline at end of file diff --git a/i18n/kor/extensions/json/package.i18n.json b/i18n/kor/extensions/json/package.i18n.json index 8b6ad71cd4e..952a850ed11 100644 --- a/i18n/kor/extensions/json/package.i18n.json +++ b/i18n/kor/extensions/json/package.i18n.json @@ -3,4 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. -{} \ No newline at end of file +{ + "json.format.enable.desc": "기본 JSON 포맷터 사용/사용 안 함(다시 시작해야 함)", + "json.schemas.desc": "현재 프로젝트에서 스키마를 JSON 파일에 연결", + "json.schemas.fileMatch.desc": "스키마에 대한 JSON 파일을 확인할 때 일치할 파일 패턴의 배열입니다.", + "json.schemas.fileMatch.item.desc": "스키마에 대한 JSON 파일을 확인할 때 일치할 '*'를 포함할 수 있는 파일 패턴입니다.", + "json.schemas.schema.desc": "지정된 URL에 대한 스키마 정의입니다. 스키마 URL에 대한 액세스 방지를 위해서만 스키마를 제공해야 합니다.", + "json.schemas.url.desc": "현재 디렉터리에 있는 스키마의 URL 또는 상대 경로" +} \ No newline at end of file diff --git a/i18n/kor/extensions/typescript/out/typescriptServiceClient.i18n.json b/i18n/kor/extensions/typescript/out/typescriptServiceClient.i18n.json index aa1c3718e0f..d1e9e32ae70 100644 --- a/i18n/kor/extensions/typescript/out/typescriptServiceClient.i18n.json +++ b/i18n/kor/extensions/typescript/out/typescriptServiceClient.i18n.json @@ -6,9 +6,7 @@ { "channelName": "TypeScript", "close": "닫기", - "doNotCheckAgain": "다시 확인 안 함", "localTSFound": "작업 영역 폴더에 TypeScript 버전 {0}이(가) 포함되어 있습니다. 번들 버전 {1} 대신 이 버전을 사용할까요?", - "moreInformation": "추가 정보", "neverCheckLocalVesion": "작업 영역 버전 확인 안 함", "noServerFound": "경로 {0}이(가) 올바른 tsserver 설치를 가리키지 않습니다. TypeScript 언어 기능이 사용되지 않도록 설정됩니다.", "serverCouldNotBeStarted": "TypeScript 언어 서버를 시작할 수 없습니다. 오류 메시지: {0}", @@ -16,10 +14,8 @@ "serverDiedAfterStart": "TypeScript 언어 서비스가 시작된 직후 5번 종료되었습니다. 서비스가 다시 시작되지 않습니다. 버그 보고서를 열어 보세요.", "updateGlobalWorkspaceCheck": "사용자 설정 'typescript.check.workspaceVersion'을 false로 업데이트했습니다.", "updateLocalWorkspaceCheck": "작업 영역 설정 'typescript.check.workspaceVersion'을 false로 업데이트했습니다.", - "updateTscCheck": "사용자 설정 'typescript.check.tscVersion'을 false을 업데이트했습니다.", "updatedtsdk": "작업 영역 설정 'typescript.tsdk'를 {0}(으)로 업데이트했습니다.", "use": "작업 영역({0}) 사용", "useBundled": "번들({0}) 사용", - "versionMismatch": "버전이 일치하지 않습니다. 전역 tsc({0})가 VS 코드의 언어 서비스({1})와 다릅니다. 일관되지 않은 컴파일 오류가 발생할 수 있습니다.", "versionNumber.custom": "사용자 지정" } \ No newline at end of file diff --git a/i18n/kor/src/vs/code/electron-main/menus.i18n.json b/i18n/kor/src/vs/code/electron-main/menus.i18n.json index 6c7a22a5c96..ed968c65c34 100644 --- a/i18n/kor/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/kor/src/vs/code/electron-main/menus.i18n.json @@ -15,26 +15,32 @@ "mHide": "{0} 숨기기", "mHideOthers": "기타 숨기기", "mMinimize": "최소화", + "mSelection": "선택 영역(&&S)", "mShowAll": "모두 표시", "mView": "보기(&&V)", "mWindow": "창", "miAbout": "정보(&&A)", "miAccessibilityOptions": "접근성 옵션(&&O)", - "miAdditionalViewlets": "추가 &&뷰렛", + "miAddSelectionToNextFindMatch": "다음 항목 추가(&&N)", + "miAddSelectionToPreviousFindMatch": "이전 항목 추가(&&R)", + "miAdditionalViews": "추가 뷰(&&V)", "miAutoSave": "자동 저장", "miBack": "뒤로(&&B)", "miCheckForUpdates": "업데이트 확인...", "miCheckingForUpdates": "업데이트를 확인하는 중...", "miClearItems": "항목 지우기(&&C)", - "miCloseEditor": "편집기 닫기(&&E)", + "miCloseEditor": "편집기 닫기(&&C)", "miCloseFolder": "폴더 닫기(&&F)", "miCloseWindow": "창 닫기(&&W)", "miCommandPalette": "명령 팔레트(&&C)...", "miCopy": "복사(&&O)", + "miCopyLinesDown": "아래에 줄 복사(&&P)", + "miCopyLinesUp": "위에 줄 복사(&&C)", "miCut": "잘라내기(&&C)", "miDocumentation": "설명서(&&D)", "miDownloadUpdate": "사용 가능한 업데이트 다운로드", "miDownloadingUpdate": "업데이트를 다운로드하는 중...", + "miEmmetExpandAbbreviation": "Emmet: 약어 확장(&&X)", "miExit": "끝내기(&&X)", "miFind": "찾기(&&F)", "miFindInFiles": "파일에서 찾기(&&I)", @@ -49,11 +55,16 @@ "miGotoSymbolInWorkspace": "작업 영역의 기호로 이동(&&W)...", "miHideActivityBar": "작업 막대 숨기기(&&A)", "miHideStatusbar": "상태 표시줄 숨기기(&&H)", + "miInsertCursorAbove": "위에 커서 추가(&&A)", + "miInsertCursorAtEndOfEachLineSelected": "줄 끝에 커서 추가(&&U)", + "miInsertCursorBelow": "아래에 커서 추가(&&D)", "miInstallingUpdate": "업데이트를 설치하는 중...", "miIntroductoryVideos": "소개 비디오(&&V)", "miKeyboardShortcuts": "바로 가기 키 참조(&&K)", "miLicense": "라이선스 보기(&&L)", "miMarker": "문제(&&P)", + "miMoveLinesDown": "줄 아래로 이동(&&L)", + "miMoveLinesUp": "줄 위로 이동(&&V)", "miMoveSidebarLeft": "사이드바를 왼쪽으로 이동(&&M)", "miMoveSidebarRight": "사이드바를 오른쪽으로 이동(&&M)", "miNewFile": "새 파일(&&N)", @@ -65,7 +76,7 @@ "miOpenFile": "파일 열기(&&O)...", "miOpenFolder": "폴더 열기(&&F)...", "miOpenKeymap": "바로 가기 키(&&K)", - "miOpenKeymapExtensions": "&&키 맵", + "miOpenKeymapExtensions": "키맵 확장(&&K)", "miOpenRecent": "최근 항목 열기(&&R)", "miOpenSettings": "사용자 설정(&&U)", "miOpenSnippets": "사용자 코드 조각(&&S)", @@ -90,17 +101,23 @@ "miSaveAs": "다른 이름으로 저장(&&A)...", "miSelectAll": "모두 선택(&&S)", "miSelectColorTheme": "색 테마(&&C)", + "miSelectHighlights": "모든 항목 선택(&&O)", "miSelectIconTheme": "파일 아이콘 테마(&&I)", "miShowActivityBar": "작업 막대 표시(&&A)", + "miShowEmmetCommands": "Emmet(&&M)...", "miShowStatusbar": "상태 표시줄 표시(&&S)", + "miSmartSelectGrow": "선택 영역 확장(&&E)", + "miSmartSelectShrink": "선택 영역 축소(&&S)", "miSplitEditor": "편집기 분할(&&E)", "miSwitchEditor": "편집기 전환(&&E)", "miSwitchGroup": "그룹 전환(&&G)", + "miToggleBlockComment": "블록 주석 설정/해제(&&B)", "miToggleDebugConsole": "디버그 콘솔(&&B)", "miToggleDevTools": "개발자 도구 설정/해제(&&T)", "miToggleEditorLayout": "편집기 그룹 레이아웃 설정/해제(&&L)", "miToggleFullScreen": "전체 화면 설정/해제(&&F)", "miToggleIntegratedTerminal": "통합 터미널(&&I)", + "miToggleLineComment": "줄 주석 설정/해제(&&T)", "miToggleMenuBar": "메뉴 모음 설정/해제(&&B)", "miToggleOutput": "출력(&&O)", "miTogglePanel": "패널 설정/해제(&&P)", diff --git a/i18n/kor/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json b/i18n/kor/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json index d8ed3243933..0fc80e026d6 100644 --- a/i18n/kor/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json +++ b/i18n/kor/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json @@ -6,8 +6,5 @@ { "markerAction.next.label": "다음 오류 또는 경고로 이동", "markerAction.previous.label": "이전 오류 또는 경고로 이동", - "quickfix.multiple.label": "제안 수정:", - "quickfix.single.label": "제안 수정: ", - "title.w_source": "({0}/{1}) [{2}]", "title.wo_source": "({0}/{1})" } \ No newline at end of file diff --git a/i18n/kor/src/vs/platform/environment/node/argv.i18n.json b/i18n/kor/src/vs/platform/environment/node/argv.i18n.json index 39e8a481c74..4d657fcf426 100644 --- a/i18n/kor/src/vs/platform/environment/node/argv.i18n.json +++ b/i18n/kor/src/vs/platform/environment/node/argv.i18n.json @@ -14,7 +14,7 @@ "installExtension": "확장을 설치합니다.", "listExtensions": "설치된 확장을 나열합니다.", "locale": "사용할 로캘(예: en-US 또는 zh-TW)입니다.", - "newWindow": "코드의 새 인스턴스를 강제 적용합니다.", + "newWindow": "Code의 새 인스턴스를 강제 적용합니다.", "options": "옵션", "optionsUpperCase": "옵션", "paths": "경로", diff --git a/i18n/kor/src/vs/workbench/browser/parts/activitybar/activitybarActions.i18n.json b/i18n/kor/src/vs/workbench/browser/parts/activitybar/activitybarActions.i18n.json index b57db314a72..86e40b10632 100644 --- a/i18n/kor/src/vs/workbench/browser/parts/activitybar/activitybarActions.i18n.json +++ b/i18n/kor/src/vs/workbench/browser/parts/activitybar/activitybarActions.i18n.json @@ -9,5 +9,6 @@ "manageExtension": "확장 관리", "numberBadge": "{0}({1})", "removeFromActivityBar": "작업 막대에서 제거", - "titleKeybinding": "{0}({1})" + "titleKeybinding": "{0}({1})", + "toggle": "고정된 뷰 전환" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/node/extensionHostMain.i18n.json b/i18n/kor/src/vs/workbench/node/extensionHostMain.i18n.json index 0b048adfacc..d77e097b6ea 100644 --- a/i18n/kor/src/vs/workbench/node/extensionHostMain.i18n.json +++ b/i18n/kor/src/vs/workbench/node/extensionHostMain.i18n.json @@ -4,7 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "extensionTestError": "경로 {0}이(가) 유효한 확장 Test Runner를 가리키지 않습니다.", - "extensionUnderDevelopment": "{0}에서 개발 확장 로드 중", - "overwritingExtension": "확장 {0}을(를) {1}(으)로 덮어쓰는 중입니다." + "extensionTestError": "경로 {0}이(가) 유효한 확장 Test Runner를 가리키지 않습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/cli/electron-browser/cli.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/cli/electron-browser/cli.contribution.i18n.json index 5e7629158ff..e34efbf3579 100644 --- a/i18n/kor/src/vs/workbench/parts/cli/electron-browser/cli.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/cli/electron-browser/cli.contribution.i18n.json @@ -21,6 +21,6 @@ "successFrom": "셸 명령 '{0}'이(가) PATH에서 제거되었습니다.", "successIn": "셸 명령 '{0}'이(가) PATH에 설치되었습니다.", "uninstall": "PATH에서 '{0}' 명령 제거", - "update": "코드에서 '{0}' 셸 명령을 변경해야 합니다. 지금 변경할까요?", - "warnEscalation": "이제 코드에서 'osascript'를 사용하여 관리자에게 셸 명령을 설치할 권한이 있는지를 묻습니다." + "update": "Code에서 '{0}' 셸 명령을 변경해야 합니다. 지금 변경할까요?", + "warnEscalation": "이제 Code에서 'osascript'를 사용하여 관리자에게 셸 명령을 설치할 권한이 있는지를 묻습니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index 691ce046ac5..f9fd780d2ee 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -33,7 +33,6 @@ "restartDebug": "다시 시작", "restartFrame": "프레임 다시 시작", "reverseContinue": "반전", - "selectConfig": "구성 선택", "setValue": "값 설정", "startDebug": "디버깅 시작", "startWithoutDebugging": "디버깅하지 않고 시작", diff --git a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index fb7b87c8e85..882a623d67b 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -6,7 +6,6 @@ { "debugAdapterBinNotFound": "디버그 어댑터 실행 파일 '{0}'이(가) 발견되지 않았습니다.", "debugAdapterCrash": "디버그 어댑터 프로세스가 예기치 않게 종료되었습니다.", - "debuggee": "디버기", "moreInfo": "추가 정보", "noDebugAdapterExtensionInstalled": "{0}' 디버깅을 위해 설치된 확장이 없습니다.", "stoppingDebugAdapter": "{0}. 디버그 어댑터를 중지합니다.", diff --git a/i18n/kor/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/kor/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index a84a41a5e71..787388f1a7a 100644 --- a/i18n/kor/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -12,6 +12,5 @@ "debugServer": "디버그 확장 배포 전용입니다. 포트가 지정된 경우 VS Code에서는 서버 모드로 실행하는 디버그 어댑터에 연결을 시도합니다.", "debugType": "구성의 형식입니다.", "debugWindowsConfiguration": "Windows 특정 시작 구성 특성입니다.", - "internalConsoleOptions": "내부 디버그 콘솔의 동작을 제어합니다.", - "relativePathsNotConverted": "상대 경로는 더 이상 절대 경로로 자동으로 변환되지 않습니다. ${workspaceRoot}를 접두사로 사용해 보세요." + "internalConsoleOptions": "내부 디버그 콘솔의 동작을 제어합니다." } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json index 9f17a95a5a9..d159e30faa8 100644 --- a/i18n/kor/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json @@ -6,8 +6,8 @@ { "showViewlet": "{0} 표시", "view": "보기", - "vscode.extension.contributes.explorer": "사이드바에 사용자 지정 트리 탐색기 뷰렛을 적용합니다.", + "vscode.extension.contributes.explorer": "사이드바에 사용자 지정 Tree Explorer 뷰렛을 적용합니다.", "vscode.extension.contributes.explorer.icon": "작업 막대에서 뷰렛 아이콘에 대한 경로", "vscode.extension.contributes.explorer.treeExplorerNodeProviderId": "vscode.workspace.registerTreeExplorerNodeProvider를 통해 등록된 공급자를 식별하는 데 사용된 고유 ID", - "vscode.extension.contributes.explorer.treeLabel": "사용자 지정 트리 탐색기를 렌더링하는 데 사용되는 사람이 읽을 수 있는 문자열" + "vscode.extension.contributes.explorer.treeLabel": "사용자 지정 Tree Explorer를 렌더링하는 데 사용되는 사람이 읽을 수 있는 문자열" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json b/i18n/kor/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json index 830ac239054..2d8f184a533 100644 --- a/i18n/kor/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json @@ -4,5 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "treeExplorerViewlet.tree": "트리 탐색기 섹션" + "treeExplorerViewlet.tree": "창 다시 로드(&&R)" } \ No newline at end of file diff --git a/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json index 3e1473af5f2..18f1aa36d6b 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/browser/extensionsActions.i18n.json @@ -37,6 +37,7 @@ "postUninstallTooltip": "비활성화하려면 다시 로드", "postUpdateMessage": "이 창을 다시 로드하여 업데이트된 확장 '{0}'을(를) 활성화하시겠습니까?", "postUpdateTooltip": "업데이트하려면 다시 로드", + "reload": "창 다시 로드(&&R)", "reloadAction": "다시 로드", "showDisabledExtensions": "사용할 수 없는 확장 표시", "showInstalledExtensions": "설치된 확장 표시", diff --git a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 8f1e87990aa..41ce54245d5 100644 --- a/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "disableGlobalExtensions": "사용할 수 없는 확장 구성", - "disableWorkspaceExtensions": "사용할 수 없는 확장 구성(작업 영역)", "extension": "확장", "extensions": "확장", "extensionsAutoUpdate": "자동으로 확장 업데이트", diff --git a/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json b/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json index e94350e3255..e59ee0e8763 100644 --- a/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json +++ b/i18n/kor/src/vs/workbench/parts/preferences/browser/preferencesEditor.i18n.json @@ -4,6 +4,9 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "copy": "설정에 복사", + "copyToSettings": "설정에 복사", + "selectAndCopySetting": "값 선택 및 설정에 복사", "selectValue": "값 선택", "settingsEditorName": "기본 설정" } \ No newline at end of file diff --git a/i18n/rus/extensions/css/package.i18n.json b/i18n/rus/extensions/css/package.i18n.json index 6bd76384cef..019c0cb4a12 100644 --- a/i18n/rus/extensions/css/package.i18n.json +++ b/i18n/rus/extensions/css/package.i18n.json @@ -4,31 +4,61 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "css.lint.argumentsInColorFunction.desc": "Недопустимое число параметров", "css.lint.boxModel.desc": "Не использовать ширину или высоту при использовании поля или границы", "css.lint.compatibleVendorPrefixes.desc": "При использовании зависящего от поставщика префикса также указывайте все остальные свойства поставщика", + "css.lint.duplicateProperties.desc": "Не использовать дублирующиеся определения стилей", + "css.lint.emptyRules.desc": "Не использовать пустые наборы правил", "css.lint.float.desc": "Старайтесь не использовать \"float\". Из-за элементов \"float\" работа кода CSS может легко нарушиться, если изменить один из аспектов разметки.", + "css.lint.fontFaceProperties.desc": "Правило @font-face должно определять свойства src и font-family", "css.lint.hexColorLength.desc": "Цвета в шестнадцатеричном формате должны содержать три или шесть шестнадцатеричных чисел", "css.lint.idSelector.desc": "Селекторы не должны содержать идентификаторов, потому что эти правила слишком тесно связаны с HTML.", "css.lint.ieHack.desc": "Полезные советы для Internet Explorer требуются только при поддержке Internet Explorer 7 и более ранних версий", + "css.lint.importStatement.desc": "Операторы импорта не загружаются параллельно", "css.lint.important.desc": "Старайтесь не использовать !important, так как это признак того, что весь код CSS стал неуправляемым и его надо переработать.", "css.lint.propertyIgnoredDueToDisplay.desc": "Свойство проигнорировано из-за значения свойства display. Например, при \"display: inline\" свойства width, height, margin-top, margin-bottom и float не работают", + "css.lint.universalSelector.desc": "Универсальный селектор (*) работает медленно", + "css.lint.unknownProperties.desc": "Неизвестное свойство.", + "css.lint.unknownVendorSpecificProperties.desc": "Неизвестное свойство поставщика.", "css.lint.vendorPrefix.desc": "При использовании зависящего от поставщика префикса также указывайте стандартное свойство", + "css.lint.zeroUnits.desc": "Для нуля не требуется единица измерения", + "css.validate.desc": "Включает или отключает все проверки", + "less.lint.argumentsInColorFunction.desc": "Недопустимое число параметров", "less.lint.boxModel.desc": "Не использовать ширину или высоту при использовании поля или границы", "less.lint.compatibleVendorPrefixes.desc": "При использовании зависящего от поставщика префикса также указывайте все остальные свойства поставщика", + "less.lint.duplicateProperties.desc": "Не использовать дублирующиеся определения стилей", + "less.lint.emptyRules.desc": "Не использовать пустые наборы правил", "less.lint.float.desc": "Старайтесь не использовать \"float\". Из-за элементов \"float\" работа кода CSS может легко нарушиться, если изменить один из аспектов разметки.", + "less.lint.fontFaceProperties.desc": "Правило @font-face должно определять свойства src и font-family", "less.lint.hexColorLength.desc": "Цвета в шестнадцатеричном формате должны содержать три или шесть шестнадцатеричных чисел", "less.lint.idSelector.desc": "Селекторы не должны содержать идентификаторов, потому что эти правила слишком тесно связаны с HTML.", "less.lint.ieHack.desc": "Полезные советы для Internet Explorer требуются только при поддержке Internet Explorer 7 и более ранних версий", + "less.lint.importStatement.desc": "Операторы импорта не загружаются параллельно", "less.lint.important.desc": "Старайтесь не использовать !important, так как это признак того, что весь код CSS стал неуправляемым и его надо переработать.", "less.lint.propertyIgnoredDueToDisplay.desc": "Свойство проигнорировано из-за значения свойства display. Например, при \"display: inline\" свойства width, height, margin-top, margin-bottom и float не работают", + "less.lint.universalSelector.desc": "Универсальный селектор (*) работает медленно", + "less.lint.unknownProperties.desc": "Неизвестное свойство.", + "less.lint.unknownVendorSpecificProperties.desc": "Неизвестное свойство поставщика.", "less.lint.vendorPrefix.desc": "При использовании зависящего от поставщика префикса также указывайте стандартное свойство", + "less.lint.zeroUnits.desc": "Для нуля не требуется единица измерения", + "less.validate.desc": "Включает или отключает все проверки", + "scss.lint.argumentsInColorFunction.desc": "Недопустимое число параметров", "scss.lint.boxModel.desc": "Не использовать ширину или высоту при использовании поля или границы", "scss.lint.compatibleVendorPrefixes.desc": "При использовании зависящего от поставщика префикса также указывайте все остальные свойства поставщика", + "scss.lint.duplicateProperties.desc": "Не использовать дублирующиеся определения стилей", + "scss.lint.emptyRules.desc": "Не использовать пустые наборы правил", "scss.lint.float.desc": "Старайтесь не использовать \"float\". Из-за элементов \"float\" работа кода CSS может легко нарушиться, если изменить один из аспектов разметки.", + "scss.lint.fontFaceProperties.desc": "Правило @font-face должно определять свойства src и font-family", "scss.lint.hexColorLength.desc": "Цвета в шестнадцатеричном формате должны содержать три или шесть шестнадцатеричных чисел", "scss.lint.idSelector.desc": "Селекторы не должны содержать идентификаторов, потому что эти правила слишком тесно связаны с HTML.", "scss.lint.ieHack.desc": "Полезные советы для Internet Explorer требуются только при поддержке Internet Explorer 7 и более ранних версий", + "scss.lint.importStatement.desc": "Операторы импорта не загружаются параллельно", "scss.lint.important.desc": "Старайтесь не использовать !important, так как это признак того, что весь код CSS стал неуправляемым и его надо переработать.", "scss.lint.propertyIgnoredDueToDisplay.desc": "Свойство проигнорировано из-за значения свойства display. Например, при \"display: inline\" свойства width, height, margin-top, margin-bottom и float не работают", - "scss.lint.vendorPrefix.desc": "При использовании зависящего от поставщика префикса также указывайте стандартное свойство" + "scss.lint.universalSelector.desc": "Универсальный селектор (*) работает медленно", + "scss.lint.unknownProperties.desc": "Неизвестное свойство.", + "scss.lint.unknownVendorSpecificProperties.desc": "Неизвестное свойство поставщика.", + "scss.lint.vendorPrefix.desc": "При использовании зависящего от поставщика префикса также указывайте стандартное свойство", + "scss.lint.zeroUnits.desc": "Для нуля не требуется единица измерения", + "scss.validate.desc": "Включает или отключает все проверки" } \ No newline at end of file diff --git a/i18n/rus/extensions/html/package.i18n.json b/i18n/rus/extensions/html/package.i18n.json index 09b47fd7d71..a64a467335b 100644 --- a/i18n/rus/extensions/html/package.i18n.json +++ b/i18n/rus/extensions/html/package.i18n.json @@ -4,10 +4,15 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { + "html.format.enable.desc": "Включение или отключение модуля форматирования HTML по умолчанию (требуется перезагрузка)", + "html.format.endWithNewline.desc": "Завершение символом новой строки.", "html.format.extraLiners.desc": "Список тегов с разделителями-запятыми и дополнительными новыми строками между ними. Значение \"null\" по умолчанию ставится для \"head, body, /html\".", + "html.format.indentHandlebars.desc": "Формат и отступ {{#foo}} и {{/foo}}.", + "html.format.indentInnerHtml.desc": "Отступ в разделах и .", "html.format.maxPreserveNewLines.desc": "Максимальное число разрывов строк для сохранения в блоке. Чтобы указать неограниченное число строк, используйте \"null\".", "html.format.preserveNewLines.desc": "Следует ли сохранять разрывы строк перед элементами. Работает только перед элементами, а не внутри тегов или для текста.", "html.format.unformatted.desc": "Список тегов, которые не следует повторно форматировать, с разделителями-запятыми. Значение \"NULL\" по умолчанию означает все теги, перечисленные на странице https://www.w3.org/TR/html5/dom.html#phrasing-content.", + "html.format.wrapLineLength.desc": "Максимальное число символов на строку (0 — отключить).", "html.suggest.angular1.desc": "Определяет, будет ли встроенная поддержка языка HTML предлагать теги и свойства Angular 1.", "html.suggest.html5.desc": "Определяет, будет ли встроенная поддержка языка HTML предлагать теги, свойства и значения HTML5.", "html.suggest.ionic.desc": "Определяет, будет ли встроенная поддержка языка HTML предлагать теги, свойства и значения Ionic." diff --git a/i18n/rus/extensions/javascript/out/features/bowerJSONContribution.i18n.json b/i18n/rus/extensions/javascript/out/features/bowerJSONContribution.i18n.json index a0cc1b7b28d..1a8fcbc5ef7 100644 --- a/i18n/rus/extensions/javascript/out/features/bowerJSONContribution.i18n.json +++ b/i18n/rus/extensions/javascript/out/features/bowerJSONContribution.i18n.json @@ -6,6 +6,5 @@ { "json.bower.default": "Bower.json по умолчанию", "json.bower.error.repoaccess": "Сбой запроса в репозиторий Bower: {0}", - "json.bower.latest.version": "последняя", - "json.bower.package.hover": "{0}" + "json.bower.latest.version": "последняя" } \ No newline at end of file diff --git a/i18n/rus/extensions/javascript/out/features/packageJSONContribution.i18n.json b/i18n/rus/extensions/javascript/out/features/packageJSONContribution.i18n.json index 9b43dcd3aa2..43700b69395 100644 --- a/i18n/rus/extensions/javascript/out/features/packageJSONContribution.i18n.json +++ b/i18n/rus/extensions/javascript/out/features/packageJSONContribution.i18n.json @@ -8,7 +8,6 @@ "json.npm.latestversion": "Последняя версия пакета на данный момент", "json.npm.majorversion": "Соответствует последнему основному номеру версии (1.x.x).", "json.npm.minorversion": "Соответствует последнему дополнительному номеру версии (1.2.x).", - "json.npm.package.hover": "{0}", "json.npm.version.hover": "Последняя версия: {0}", "json.package.default": "Файл package.json по умолчанию" } \ No newline at end of file diff --git a/i18n/rus/extensions/json/package.i18n.json b/i18n/rus/extensions/json/package.i18n.json index 8b6ad71cd4e..99f0024aee3 100644 --- a/i18n/rus/extensions/json/package.i18n.json +++ b/i18n/rus/extensions/json/package.i18n.json @@ -3,4 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. -{} \ No newline at end of file +{ + "json.format.enable.desc": "Включение или отключение модуля форматирования JSON по умолчанию (требуется перезагрузка)", + "json.schemas.desc": "Связь схем с JSON-файлами в текущем проекте", + "json.schemas.fileMatch.desc": "Массив шаблонов файлов, с которым выполняется сравнение, при разрешении JSON-файлов в схемах.", + "json.schemas.fileMatch.item.desc": "Шаблон файла, который может содержать \"*\" и с которым выполняется сравнение, при разрешении JSON-файлов в схемах.", + "json.schemas.schema.desc": "Определение схемы для указанного URL-адреса. Схему необходимо указать только для того, чтобы не обращаться по URL-адресу схемы.", + "json.schemas.url.desc": "URL-адрес схемы или относительный путь к ней в текущем каталоге" +} \ No newline at end of file diff --git a/i18n/rus/extensions/typescript/out/typescriptServiceClient.i18n.json b/i18n/rus/extensions/typescript/out/typescriptServiceClient.i18n.json index ebe3cd49761..20bda9e4579 100644 --- a/i18n/rus/extensions/typescript/out/typescriptServiceClient.i18n.json +++ b/i18n/rus/extensions/typescript/out/typescriptServiceClient.i18n.json @@ -6,9 +6,7 @@ { "channelName": "TypeScript", "close": "Закрыть", - "doNotCheckAgain": "Не проверять еще раз", "localTSFound": "Папка рабочей области содержит версию TypeScript {0}. Использовать эту версию вместо версии в пакете {1}?", - "moreInformation": "Дополнительные сведения", "neverCheckLocalVesion": "Никогда не проверять версию рабочей области.", "noServerFound": "Путь \"{0}\" не указывает на допустимый файл программы установки tsserver. Возможности языка TypeScript будут отключены.", "serverCouldNotBeStarted": "Не удалось запустить языковой сервер TypeScript. Сообщение об ошибке: \"{0}\".", @@ -16,10 +14,8 @@ "serverDiedAfterStart": "Языковая служба TypeScript пять раз завершила работу сразу после запуска. Служба не будет перезапущена. Отправьте отчет об ошибке.", "updateGlobalWorkspaceCheck": "Значение параметра пользователя \"typescript.check.workspaceVersion\" изменено на false.", "updateLocalWorkspaceCheck": "Значение параметра рабочей области \"typescript.check.workspaceVersion\" изменено на false.", - "updateTscCheck": "Значение параметра пользователя \"typescript.check.tscVersion\" изменено на false.", "updatedtsdk": "Значение параметра рабочей области \"typescript.tsdk\" изменено на {0}.", "use": "Использовать рабочую область ({0})", "useBundled": "Использовать в рамках пакета ({0})", - "versionMismatch": "Обнаружено несоответствие глобального tsc ({0}) и службы языка VS Code ({1}). Это может привести к ошибкам согласованности компиляции.", "versionNumber.custom": "пользовательский" } \ No newline at end of file diff --git a/i18n/rus/src/vs/code/electron-main/menus.i18n.json b/i18n/rus/src/vs/code/electron-main/menus.i18n.json index c2249c37c3f..872c48fa5e1 100644 --- a/i18n/rus/src/vs/code/electron-main/menus.i18n.json +++ b/i18n/rus/src/vs/code/electron-main/menus.i18n.json @@ -23,7 +23,7 @@ "miAccessibilityOptions": "Специальные &&возможности", "miAddSelectionToNextFindMatch": "Добавить &&следующее вхождение", "miAddSelectionToPreviousFindMatch": "Добавить &&предыдущее вхождение", - "miAdditionalViews": "Дополнительные пр&&едставления", + "miAdditionalViews": "Дополнительные &&представления", "miAutoSave": "Автосохранение", "miBack": "&&Назад", "miCheckForUpdates": "Проверить наличие обновлений...", @@ -40,7 +40,7 @@ "miDocumentation": "&&Документация", "miDownloadUpdate": "Скачать доступное обновление", "miDownloadingUpdate": "Скачивается обновление...", - "miEmmetExpandAbbreviation": "Emmet: Ра&&звернуть сокращение", + "miEmmetExpandAbbreviation": "Emmet: ра&&звернуть сокращение", "miExit": "В&&ыход", "miFind": "&&Найти", "miFindInFiles": "Найти в &&файлах", @@ -101,12 +101,12 @@ "miSaveAs": "Сохранить &&как...", "miSelectAll": "&&Выделить все", "miSelectColorTheme": "Цветовая &&тема", - "miSelectHighlights": "Выбрать все в&&хождения", + "miSelectHighlights": "Выбрать все &&вхождения", "miSelectIconTheme": "Тема значка &&файла", "miShowActivityBar": "Показать &&панель действий", "miShowEmmetCommands": "E&&mmet...", "miShowStatusbar": "&&Показать строку состояния", - "miSmartSelectGrow": "Рас&&звернуть выделение", + "miSmartSelectGrow": "&&Развернуть выделение", "miSmartSelectShrink": "&&Сжать выделение", "miSplitEditor": "Разделить &&редактор", "miSwitchEditor": "Переключить р&&едактор", diff --git a/i18n/rus/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json b/i18n/rus/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json index 47bd20812f8..78f1d098716 100644 --- a/i18n/rus/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json +++ b/i18n/rus/src/vs/editor/contrib/gotoError/browser/gotoError.i18n.json @@ -6,8 +6,5 @@ { "markerAction.next.label": "Перейти к следующей ошибке или предупреждению", "markerAction.previous.label": "Перейти к предыдущей ошибке или предупреждению", - "quickfix.multiple.label": "Предложенные исправления: ", - "quickfix.single.label": "Предложенное исправление: ", - "title.w_source": "({0}/{1}) [{2}]", "title.wo_source": "({0}/{1})" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/node/extensionHostMain.i18n.json b/i18n/rus/src/vs/workbench/node/extensionHostMain.i18n.json index 8af88021209..1380b020b4e 100644 --- a/i18n/rus/src/vs/workbench/node/extensionHostMain.i18n.json +++ b/i18n/rus/src/vs/workbench/node/extensionHostMain.i18n.json @@ -4,7 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "extensionTestError": "Путь \"{0}\" не указывает на допустимый модуль выполнения тестов расширения.", - "extensionUnderDevelopment": "Идет загрузка расширения разработки в {0}", - "overwritingExtension": "Идет перезапись расширения {0} на {1}." + "extensionTestError": "Путь \"{0}\" не указывает на допустимый модуль выполнения тестов расширения." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/browser/debugActions.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/browser/debugActions.i18n.json index 66af691316c..b46c5b4d059 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/browser/debugActions.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/browser/debugActions.i18n.json @@ -33,7 +33,6 @@ "restartDebug": "Перезапустить", "restartFrame": "Перезапустить кадр", "reverseContinue": "Обратно", - "selectConfig": "Выбрать конфигурацию", "setValue": "Задать значение", "startDebug": "Начать отладку", "startWithoutDebugging": "Начать без отладки", diff --git a/i18n/rus/src/vs/workbench/parts/debug/common/debugModel.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/common/debugModel.i18n.json index 49c74054451..de2fb7bdae4 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/common/debugModel.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/common/debugModel.i18n.json @@ -5,7 +5,6 @@ // Do not edit this file. It is machine generated. { "notAvailable": "недоступно", - "snapshotObj": "Для этого объекта показаны только значения-примитивы.", "startDebugFirst": "Чтобы произвести вычисление, начните сеанс отладки", "unknownSource": "Неизвестный источник", "unknownStack": "Неизвестное расположение стека" diff --git a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json index a89c2b36815..05d3754f06e 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/electron-browser/rawDebugSession.i18n.json @@ -6,7 +6,6 @@ { "debugAdapterBinNotFound": "Не найден исполняемый файл \"{0}\" адаптера отладки.", "debugAdapterCrash": "Процесс адаптера отладки неожиданно завершился", - "debuggee": "отлаживаемый объект", "moreInfo": "Подробнее", "noDebugAdapterExtensionInstalled": "Расширение для отладки \"{0}\" не установлено.", "stoppingDebugAdapter": "{0}. Адаптер отладки останавливается.", diff --git a/i18n/rus/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json index c10abccd0cd..25bafbe37d5 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/node/debugAdapter.i18n.json @@ -12,6 +12,5 @@ "debugServer": "Только для разработки расширений отладки: если указан порт, VS Code пытается подключиться к адаптеру отладки, запущенному в режиме сервера.", "debugType": "Тип конфигурации.", "debugWindowsConfiguration": "Атрибуты конфигурации запуска для Windows.", - "internalConsoleOptions": "Управляет поведением внутренней консоли отладки.", - "relativePathsNotConverted": "Относительные пути больше не будут автоматически преобразовываться в абсолютные. Рекомендуем использовать префикс ${workspaceRoot}." + "internalConsoleOptions": "Управляет поведением внутренней консоли отладки." } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json b/i18n/rus/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json index 33d1f842e76..3176be81aca 100644 --- a/i18n/rus/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/debug/node/debugConfigurationManager.i18n.json @@ -5,9 +5,9 @@ // Do not edit this file. It is machine generated. { "DebugConfig.failed": "Не удается создать файл launch.json в папке .vscode ({0}).", - "app.launch.json.compound.name": "Название составного объекта. Отображается в раскрывающемся меню запуска конфигурации.", + "app.launch.json.compound.name": "Имя составного объекта. Отображается в раскрывающемся меню запуска конфигурации.", "app.launch.json.compounds": "Список составных объектов. Каждый из них ссылается на несколько конфигураций, которые будут запущены вместе.", - "app.launch.json.compounds.configurations": "Названия конфигураций, которые будут запущены как часть этого составного объекта.", + "app.launch.json.compounds.configurations": "Имена конфигураций, которые будут запущены как часть этого составного объекта.", "app.launch.json.configurations": "Список конфигураций. Добавьте новые конфигурации или измените существующие с помощью IntelliSense.", "app.launch.json.debugServer": "УСТАРЕЛО И НЕ РЕКОМЕНДУЕТСЯ: перенесите debugServer внутрь конфигурации.", "app.launch.json.title": "Запустить", diff --git a/i18n/rus/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json index 4d58179bc5c..74f414a7476 100644 --- a/i18n/rus/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/explorers/browser/treeExplorer.contribution.i18n.json @@ -6,8 +6,8 @@ { "showViewlet": "Показать {0}", "view": "Просмотреть", - "vscode.extension.contributes.explorer": "Добавляет в боковую панель настраиваемые деморолики по обозревателю с древовидным представлением", + "vscode.extension.contributes.explorer": "Добавляет в боковую панель настраиваемое мини-приложение обозревателя дерева", "vscode.extension.contributes.explorer.icon": "Путь к значку деморолика на панели действий", "vscode.extension.contributes.explorer.treeExplorerNodeProviderId": "Уникальный идентификатор, используемый для обозначения поставщика, зарегистрированного при помощи vscode.workspace.registerTreeExplorerNodeProvider.", - "vscode.extension.contributes.explorer.treeLabel": "Понятная для пользователей строка, используемая для отображения настраиваемого обозревателя с древовидным представлением" + "vscode.extension.contributes.explorer.treeLabel": "Понятная для пользователей строка, используемая для отображения настраиваемого обозревателя дерева" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json b/i18n/rus/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json index 5a7dd69d972..8b848ed9c59 100644 --- a/i18n/rus/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.i18n.json @@ -4,5 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "treeExplorerViewlet.tree": "Раздел обозревателя с древовидным представлением" + "treeExplorerViewlet.tree": "Раздел обозревателя дерева" } \ No newline at end of file diff --git a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json index 6a4aa00b176..dbab8fd69d6 100644 --- a/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/extensions/electron-browser/extensions.contribution.i18n.json @@ -4,8 +4,6 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "disableGlobalExtensions": "Настроить отключенные расширения", - "disableWorkspaceExtensions": "Настроить отключенные расширения (рабочая область)", "extension": "Расширение", "extensions": "Расширения", "extensionsAutoUpdate": "Автоматически обновлять расширения", diff --git a/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json b/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json index 7f500eda4f9..c1e101f3fc5 100644 --- a/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json +++ b/i18n/rus/src/vs/workbench/parts/tasks/electron-browser/task.contribution.i18n.json @@ -25,7 +25,7 @@ "JsonSchema.options.cwd": "Текущий рабочий каталог выполняемой программы или сценария. Если этот параметр опущен, используется корневой каталог текущей рабочей области Code.", "JsonSchema.options.env": "Среда выполняемой программы или оболочки. Если этот параметр опущен, используется среда родительского процесса.", "JsonSchema.pattern.code": "Индекс группы сопоставления для кода проблемы. По умолчанию не определен.", - "JsonSchema.pattern.column": "Индекс группы сопоставления для символа в строке проблемы. Значение по умолчанию — 3.", + "JsonSchema.pattern.column": "Индекс группы сопоставления для символа в строке проблемы. Значение по умолчанию — 3", "JsonSchema.pattern.endColumn": "Индекс группы сопоставления для конечного символа проблемы. По умолчанию не определен.", "JsonSchema.pattern.endLine": "Индекс группы сопоставления для конечной строки проблемы. По умолчанию не определен.", "JsonSchema.pattern.file": "Индекс группы сопоставления для имени файла. Если он не указан, используется значение 1.", @@ -69,7 +69,7 @@ "RunTaskAction.label": "Выполнить задачу", "ShowLogAction.label": "Показать журнал задач", "TaskSystem.active": "В настоящий момент есть активная выполняющаяся задача. Завершите ее, прежде чем выполнять другую задачу.", - "TaskSystem.activeSame": "Задача уже активна и находится в режиме наблюдения. Чтобы завершить задачу, выполните команду \"F1 > terminate task\".", + "TaskSystem.activeSame": "Задача уже активна и находится в режиме наблюдения. Чтобы завершить задачу, выполните команду \"F1 > terminate task\"", "TaskSystem.exitAnyways": "&&Выйти", "TaskSystem.invalidTaskJson": "Ошибка: в содержимом файла tasks.json есть синтаксические ошибки. Исправьте их, прежде чем выполнять задачу.\n", "TaskSystem.noBuildType": "Допустимое средство запуска задач не настроено. Поддерживаемые средства запуска задач: \"служба\" и \"программа\".", diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 784b7a8f2df..14bd4c852c7 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -430,9 +430,9 @@ "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.0.tgz" }, "xterm": { - "version": "2.1.0", - "from": "git+https://github.com/Tyriar/xterm.js.git#vscode-release/1.8", - "resolved": "git+https://github.com/Tyriar/xterm.js.git#81f0516e1098439116ac1344ae3074f51c5bcf52" + "version": "2.2.0", + "from": "git+https://github.com/Tyriar/xterm.js.git#vscode-release/1.9", + "resolved": "git+https://github.com/Tyriar/xterm.js.git#618e6bbd0a0ebaabc4b06ab10bea89768ded62b5" }, "yauzl": { "version": "2.3.1", diff --git a/package.json b/package.json index 7b167fac9a6..d099f65135a 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "vscode-debugprotocol": "1.15.0", "vscode-textmate": "2.3.2", "winreg": "1.2.0", - "xterm": "git+https://github.com/Tyriar/xterm.js.git#vscode-release/1.8", + "xterm": "git+https://github.com/Tyriar/xterm.js.git#vscode-release/1.9", "yauzl": "2.3.1" }, "devDependencies": { diff --git a/src/typings/lib.ie11_safe_es6.d.ts b/src/typings/lib.ie11_safe_es6.d.ts new file mode 100644 index 00000000000..528d61b7582 --- /dev/null +++ b/src/typings/lib.ie11_safe_es6.d.ts @@ -0,0 +1,821 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +// Defined a subset of ES6 built ins that run in IE11 +// CHECK WITH http://kangax.github.io/compat-table/es6/#ie11 + +interface Map { + clear(): void; + delete(key: K): boolean; + forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; + get(key: K): V; + has(key: K): boolean; + set(key: K, value?: V): Map; + readonly size: number; + + // not supported on IE11: + // entries(): IterableIterator<[K, V]>; + // keys(): IterableIterator; + // values(): IterableIterator; + // [Symbol.iterator]():IterableIterator<[K,V]>; + // [Symbol.toStringTag]: string; +} + +interface MapConstructor { + new (): Map; + prototype: Map; + + // not supported on IE11: + // new (iterable: Iterable<[K, V]>): Map; +} +declare var Map: MapConstructor; + + +interface Set { + add(value: T): Set; + clear(): void; + delete(value: T): boolean; + forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; + has(value: T): boolean; + readonly size: number; + + // not supported on IE11: + // entries(): IterableIterator<[T, T]>; + // keys(): IterableIterator; + // values(): IterableIterator; + // [Symbol.iterator]():IterableIterator; + // [Symbol.toStringTag]: string; +} + +interface SetConstructor { + new (): Set; + prototype: Set; + + // not supported on IE11: + // new (iterable: Iterable): Set; +} +declare var Set: SetConstructor; + + +interface WeakMap { + delete(key: K): boolean; + get(key: K): V | undefined; + has(key: K): boolean; + // IE11 doesn't return this + // set(key: K, value?: V): this; + set(key: K, value?: V): undefined; +} + +interface WeakMapConstructor { + new (): WeakMap; + new (): WeakMap; + // new (entries?: [K, V][]): WeakMap; + readonly prototype: WeakMap; +} +declare var WeakMap: WeakMapConstructor; + + +// /** +// * Represents a raw buffer of binary data, which is used to store data for the +// * different typed arrays. ArrayBuffers cannot be read from or written to directly, +// * but can be passed to a typed array or DataView Object to interpret the raw +// * buffer as needed. +// */ +// interface ArrayBuffer { +// /** +// * Read-only. The length of the ArrayBuffer (in bytes). +// */ +// readonly byteLength: number; + +// /** +// * Returns a section of an ArrayBuffer. +// */ +// slice(begin: number, end?: number): ArrayBuffer; +// } + +// interface ArrayBufferConstructor { +// readonly prototype: ArrayBuffer; +// new (byteLength: number): ArrayBuffer; +// isView(arg: any): arg is ArrayBufferView; +// } +// declare const ArrayBuffer: ArrayBufferConstructor; + +// interface ArrayBufferView { +// /** +// * The ArrayBuffer instance referenced by the array. +// */ +// buffer: ArrayBuffer; + +// /** +// * The length in bytes of the array. +// */ +// byteLength: number; + +// /** +// * The offset in bytes of the array. +// */ +// byteOffset: number; +// } + +// interface DataView { +// readonly buffer: ArrayBuffer; +// readonly byteLength: number; +// readonly byteOffset: number; +// /** +// * Gets the Float32 value at the specified byte offset from the start of the view. There is +// * no alignment constraint; multi-byte values may be fetched from any offset. +// * @param byteOffset The place in the buffer at which the value should be retrieved. +// */ +// getFloat32(byteOffset: number, littleEndian?: boolean): number; + +// /** +// * Gets the Float64 value at the specified byte offset from the start of the view. There is +// * no alignment constraint; multi-byte values may be fetched from any offset. +// * @param byteOffset The place in the buffer at which the value should be retrieved. +// */ +// getFloat64(byteOffset: number, littleEndian?: boolean): number; + +// /** +// * Gets the Int8 value at the specified byte offset from the start of the view. There is +// * no alignment constraint; multi-byte values may be fetched from any offset. +// * @param byteOffset The place in the buffer at which the value should be retrieved. +// */ +// getInt8(byteOffset: number): number; + +// /** +// * Gets the Int16 value at the specified byte offset from the start of the view. There is +// * no alignment constraint; multi-byte values may be fetched from any offset. +// * @param byteOffset The place in the buffer at which the value should be retrieved. +// */ +// getInt16(byteOffset: number, littleEndian?: boolean): number; +// /** +// * Gets the Int32 value at the specified byte offset from the start of the view. There is +// * no alignment constraint; multi-byte values may be fetched from any offset. +// * @param byteOffset The place in the buffer at which the value should be retrieved. +// */ +// getInt32(byteOffset: number, littleEndian?: boolean): number; + +// /** +// * Gets the Uint8 value at the specified byte offset from the start of the view. There is +// * no alignment constraint; multi-byte values may be fetched from any offset. +// * @param byteOffset The place in the buffer at which the value should be retrieved. +// */ +// getUint8(byteOffset: number): number; + +// /** +// * Gets the Uint16 value at the specified byte offset from the start of the view. There is +// * no alignment constraint; multi-byte values may be fetched from any offset. +// * @param byteOffset The place in the buffer at which the value should be retrieved. +// */ +// getUint16(byteOffset: number, littleEndian?: boolean): number; + +// /** +// * Gets the Uint32 value at the specified byte offset from the start of the view. There is +// * no alignment constraint; multi-byte values may be fetched from any offset. +// * @param byteOffset The place in the buffer at which the value should be retrieved. +// */ +// getUint32(byteOffset: number, littleEndian?: boolean): number; + +// /** +// * Stores an Float32 value at the specified byte offset from the start of the view. +// * @param byteOffset The place in the buffer at which the value should be set. +// * @param value The value to set. +// * @param littleEndian If false or undefined, a big-endian value should be written, +// * otherwise a little-endian value should be written. +// */ +// setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void; + +// /** +// * Stores an Float64 value at the specified byte offset from the start of the view. +// * @param byteOffset The place in the buffer at which the value should be set. +// * @param value The value to set. +// * @param littleEndian If false or undefined, a big-endian value should be written, +// * otherwise a little-endian value should be written. +// */ +// setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void; + +// /** +// * Stores an Int8 value at the specified byte offset from the start of the view. +// * @param byteOffset The place in the buffer at which the value should be set. +// * @param value The value to set. +// */ +// setInt8(byteOffset: number, value: number): void; + +// /** +// * Stores an Int16 value at the specified byte offset from the start of the view. +// * @param byteOffset The place in the buffer at which the value should be set. +// * @param value The value to set. +// * @param littleEndian If false or undefined, a big-endian value should be written, +// * otherwise a little-endian value should be written. +// */ +// setInt16(byteOffset: number, value: number, littleEndian?: boolean): void; + +// /** +// * Stores an Int32 value at the specified byte offset from the start of the view. +// * @param byteOffset The place in the buffer at which the value should be set. +// * @param value The value to set. +// * @param littleEndian If false or undefined, a big-endian value should be written, +// * otherwise a little-endian value should be written. +// */ +// setInt32(byteOffset: number, value: number, littleEndian?: boolean): void; + +// /** +// * Stores an Uint8 value at the specified byte offset from the start of the view. +// * @param byteOffset The place in the buffer at which the value should be set. +// * @param value The value to set. +// */ +// setUint8(byteOffset: number, value: number): void; + +// /** +// * Stores an Uint16 value at the specified byte offset from the start of the view. +// * @param byteOffset The place in the buffer at which the value should be set. +// * @param value The value to set. +// * @param littleEndian If false or undefined, a big-endian value should be written, +// * otherwise a little-endian value should be written. +// */ +// setUint16(byteOffset: number, value: number, littleEndian?: boolean): void; + +// /** +// * Stores an Uint32 value at the specified byte offset from the start of the view. +// * @param byteOffset The place in the buffer at which the value should be set. +// * @param value The value to set. +// * @param littleEndian If false or undefined, a big-endian value should be written, +// * otherwise a little-endian value should be written. +// */ +// setUint32(byteOffset: number, value: number, littleEndian?: boolean): void; +// } + +// interface DataViewConstructor { +// new (buffer: ArrayBuffer, byteOffset?: number, byteLength?: number): DataView; +// } +// declare const DataView: DataViewConstructor; + + +// /** +// * A typed array of 8-bit integer values. The contents are initialized to 0. If the requested +// * number of bytes could not be allocated an exception is raised. +// */ +// interface Int8Array { +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// /** +// * The ArrayBuffer instance referenced by the array. +// */ +// readonly buffer: ArrayBuffer; + +// /** +// * The length in bytes of the array. +// */ +// readonly byteLength: number; + +// /** +// * The offset in bytes of the array. +// */ +// readonly byteOffset: number; + +// /** +// * The length of the array. +// */ +// readonly length: number; + +// /** +// * Sets a value or an array of values. +// * @param index The index of the location to set. +// * @param value The value to set. +// */ +// set(index: number, value: number): void; + +// /** +// * Sets a value or an array of values. +// * @param array A typed or untyped array of values to set. +// * @param offset The index in the current array at which the values are to be written. +// */ +// set(array: ArrayLike, offset?: number): void; + +// /** +// * Converts a number to a string by using the current locale. +// */ +// toLocaleString(): string; + +// /** +// * Returns a string representation of an array. +// */ +// toString(): string; + +// [index: number]: number; +// } +// interface Int8ArrayConstructor { +// readonly prototype: Int8Array; +// new (length: number): Int8Array; +// new (array: ArrayLike): Int8Array; +// new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int8Array; + +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// } +// declare const Int8Array: Int8ArrayConstructor; + +// /** +// * A typed array of 8-bit unsigned integer values. The contents are initialized to 0. If the +// * requested number of bytes could not be allocated an exception is raised. +// */ +// interface Uint8Array { +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// /** +// * The ArrayBuffer instance referenced by the array. +// */ +// readonly buffer: ArrayBuffer; + +// /** +// * The length in bytes of the array. +// */ +// readonly byteLength: number; + +// /** +// * The offset in bytes of the array. +// */ +// readonly byteOffset: number; + +// /** +// * The length of the array. +// */ +// readonly length: number; + +// /** +// * Sets a value or an array of values. +// * @param index The index of the location to set. +// * @param value The value to set. +// */ +// set(index: number, value: number): void; + +// /** +// * Sets a value or an array of values. +// * @param array A typed or untyped array of values to set. +// * @param offset The index in the current array at which the values are to be written. +// */ +// set(array: ArrayLike, offset?: number): void; + +// /** +// * Converts a number to a string by using the current locale. +// */ +// toLocaleString(): string; + +// /** +// * Returns a string representation of an array. +// */ +// toString(): string; + +// [index: number]: number; +// } + +// interface Uint8ArrayConstructor { +// readonly prototype: Uint8Array; +// new (length: number): Uint8Array; +// new (array: ArrayLike): Uint8Array; +// new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint8Array; + +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// } +// declare const Uint8Array: Uint8ArrayConstructor; + + +// /** +// * A typed array of 16-bit signed integer values. The contents are initialized to 0. If the +// * requested number of bytes could not be allocated an exception is raised. +// */ +// interface Int16Array { +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// /** +// * The ArrayBuffer instance referenced by the array. +// */ +// readonly buffer: ArrayBuffer; + +// /** +// * The length in bytes of the array. +// */ +// readonly byteLength: number; + +// /** +// * The offset in bytes of the array. +// */ +// readonly byteOffset: number; + +// /** +// * The length of the array. +// */ +// readonly length: number; + +// /** +// * Sets a value or an array of values. +// * @param index The index of the location to set. +// * @param value The value to set. +// */ +// set(index: number, value: number): void; + +// /** +// * Sets a value or an array of values. +// * @param array A typed or untyped array of values to set. +// * @param offset The index in the current array at which the values are to be written. +// */ +// set(array: ArrayLike, offset?: number): void; + +// /** +// * Converts a number to a string by using the current locale. +// */ +// toLocaleString(): string; + +// /** +// * Returns a string representation of an array. +// */ +// toString(): string; + +// [index: number]: number; +// } + +// interface Int16ArrayConstructor { +// readonly prototype: Int16Array; +// new (length: number): Int16Array; +// new (array: ArrayLike): Int16Array; +// new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int16Array; + +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// } +// declare const Int16Array: Int16ArrayConstructor; + +// /** +// * A typed array of 16-bit unsigned integer values. The contents are initialized to 0. If the +// * requested number of bytes could not be allocated an exception is raised. +// */ +// interface Uint16Array { +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// /** +// * The ArrayBuffer instance referenced by the array. +// */ +// readonly buffer: ArrayBuffer; + +// /** +// * The length in bytes of the array. +// */ +// readonly byteLength: number; + +// /** +// * The offset in bytes of the array. +// */ +// readonly byteOffset: number; + +// /** +// * The length of the array. +// */ +// readonly length: number; + +// /** +// * Sets a value or an array of values. +// * @param index The index of the location to set. +// * @param value The value to set. +// */ +// set(index: number, value: number): void; + +// /** +// * Sets a value or an array of values. +// * @param array A typed or untyped array of values to set. +// * @param offset The index in the current array at which the values are to be written. +// */ +// set(array: ArrayLike, offset?: number): void; + +// /** +// * Converts a number to a string by using the current locale. +// */ +// toLocaleString(): string; + +// /** +// * Returns a string representation of an array. +// */ +// toString(): string; + +// [index: number]: number; +// } + +// interface Uint16ArrayConstructor { +// readonly prototype: Uint16Array; +// new (length: number): Uint16Array; +// new (array: ArrayLike): Uint16Array; +// new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint16Array; + +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// } +// declare const Uint16Array: Uint16ArrayConstructor; +// /** +// * A typed array of 32-bit signed integer values. The contents are initialized to 0. If the +// * requested number of bytes could not be allocated an exception is raised. +// */ +// interface Int32Array { +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// /** +// * The ArrayBuffer instance referenced by the array. +// */ +// readonly buffer: ArrayBuffer; + +// /** +// * The length in bytes of the array. +// */ +// readonly byteLength: number; + +// /** +// * The offset in bytes of the array. +// */ +// readonly byteOffset: number; + +// /** +// * The length of the array. +// */ +// readonly length: number; + +// /** +// * Sets a value or an array of values. +// * @param index The index of the location to set. +// * @param value The value to set. +// */ +// set(index: number, value: number): void; + +// /** +// * Sets a value or an array of values. +// * @param array A typed or untyped array of values to set. +// * @param offset The index in the current array at which the values are to be written. +// */ +// set(array: ArrayLike, offset?: number): void; + +// /** +// * Converts a number to a string by using the current locale. +// */ +// toLocaleString(): string; + +// /** +// * Returns a string representation of an array. +// */ +// toString(): string; + +// [index: number]: number; +// } + +// interface Int32ArrayConstructor { +// readonly prototype: Int32Array; +// new (length: number): Int32Array; +// new (array: ArrayLike): Int32Array; +// new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Int32Array; + +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; +// } + +// declare const Int32Array: Int32ArrayConstructor; + +// /** +// * A typed array of 32-bit unsigned integer values. The contents are initialized to 0. If the +// * requested number of bytes could not be allocated an exception is raised. +// */ +// interface Uint32Array { +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// /** +// * The ArrayBuffer instance referenced by the array. +// */ +// readonly buffer: ArrayBuffer; + +// /** +// * The length in bytes of the array. +// */ +// readonly byteLength: number; + +// /** +// * The offset in bytes of the array. +// */ +// readonly byteOffset: number; + +// /** +// * The length of the array. +// */ +// readonly length: number; + +// /** +// * Sets a value or an array of values. +// * @param index The index of the location to set. +// * @param value The value to set. +// */ +// set(index: number, value: number): void; + +// /** +// * Sets a value or an array of values. +// * @param array A typed or untyped array of values to set. +// * @param offset The index in the current array at which the values are to be written. +// */ +// set(array: ArrayLike, offset?: number): void; + +// /** +// * Converts a number to a string by using the current locale. +// */ +// toLocaleString(): string; + +// /** +// * Returns a string representation of an array. +// */ +// toString(): string; + +// [index: number]: number; +// } + +// interface Uint32ArrayConstructor { +// readonly prototype: Uint32Array; +// new (length: number): Uint32Array; +// new (array: ArrayLike): Uint32Array; +// new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Uint32Array; + +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; +// } + +// declare const Uint32Array: Uint32ArrayConstructor; + +// /** +// * A typed array of 32-bit float values. The contents are initialized to 0. If the requested number +// * of bytes could not be allocated an exception is raised. +// */ +// interface Float32Array { +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// /** +// * The ArrayBuffer instance referenced by the array. +// */ +// readonly buffer: ArrayBuffer; + +// /** +// * The length in bytes of the array. +// */ +// readonly byteLength: number; + +// /** +// * The offset in bytes of the array. +// */ +// readonly byteOffset: number; + +// /** +// * The length of the array. +// */ +// readonly length: number; + +// /** +// * Sets a value or an array of values. +// * @param index The index of the location to set. +// * @param value The value to set. +// */ +// set(index: number, value: number): void; + +// /** +// * Sets a value or an array of values. +// * @param array A typed or untyped array of values to set. +// * @param offset The index in the current array at which the values are to be written. +// */ +// set(array: ArrayLike, offset?: number): void; + +// /** +// * Converts a number to a string by using the current locale. +// */ +// toLocaleString(): string; + +// /** +// * Returns a string representation of an array. +// */ +// toString(): string; + +// [index: number]: number; +// } + +// interface Float32ArrayConstructor { +// readonly prototype: Float32Array; +// new (length: number): Float32Array; +// new (array: ArrayLike): Float32Array; +// new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float32Array; + +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// } +// declare const Float32Array: Float32ArrayConstructor; + +// /** +// * A typed array of 64-bit float values. The contents are initialized to 0. If the requested +// * number of bytes could not be allocated an exception is raised. +// */ +// interface Float64Array { +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; + +// /** +// * The ArrayBuffer instance referenced by the array. +// */ +// readonly buffer: ArrayBuffer; + +// /** +// * The length in bytes of the array. +// */ +// readonly byteLength: number; + +// /** +// * The offset in bytes of the array. +// */ +// readonly byteOffset: number; + +// /** +// * The length of the array. +// */ +// readonly length: number; + +// /** +// * Sets a value or an array of values. +// * @param index The index of the location to set. +// * @param value The value to set. +// */ +// set(index: number, value: number): void; + +// /** +// * Sets a value or an array of values. +// * @param array A typed or untyped array of values to set. +// * @param offset The index in the current array at which the values are to be written. +// */ +// set(array: ArrayLike, offset?: number): void; + +// /** +// * Converts a number to a string by using the current locale. +// */ +// toLocaleString(): string; + +// /** +// * Returns a string representation of an array. +// */ +// toString(): string; + +// [index: number]: number; +// } + +// interface Float64ArrayConstructor { +// readonly prototype: Float64Array; +// new (length: number): Float64Array; +// new (array: ArrayLike): Float64Array; +// new (buffer: ArrayBuffer, byteOffset?: number, length?: number): Float64Array; + +// /** +// * The size in bytes of each element in the array. +// */ +// readonly BYTES_PER_ELEMENT: number; +// } + +// declare const Float64Array: Float64ArrayConstructor; diff --git a/src/vs/base/browser/ui/selectBox/selectBox.ts b/src/vs/base/browser/ui/selectBox/selectBox.ts index 8714288da48..f793b135d48 100644 --- a/src/vs/base/browser/ui/selectBox/selectBox.ts +++ b/src/vs/base/browser/ui/selectBox/selectBox.ts @@ -26,8 +26,7 @@ export class SelectBox extends Widget { this.selectElement = document.createElement('select'); this.selectElement.className = 'select-box'; - this.options = options; - this.selected = selected; + this.setOptions(options, selected); this.toDispose = []; this._onDidSelect = new Emitter(); @@ -42,7 +41,7 @@ export class SelectBox extends Widget { } public setOptions(options: string[], selected?: number): void { - if (!arrays.equals(this.options, options)) { + if (!this.options || !arrays.equals(this.options, options)) { this.options = options; this.selectElement.options.length = 0; diff --git a/src/vs/base/common/collections.ts b/src/vs/base/common/collections.ts index 56369b827fe..2b0f5ce8445 100644 --- a/src/vs/base/common/collections.ts +++ b/src/vs/base/common/collections.ts @@ -21,75 +21,8 @@ export interface INumberDictionary { [idx: number]: V; } -export function createStringDictionary(): IStringDictionary { - return Object.create(null); -} - -export function createNumberDictionary(): INumberDictionary { - return Object.create(null); -} - -/** - * Looks up and returns a property that is owned - * by the provided map object. - * @param what The key. - * @param from A native JavaScript object that stores items. - * @param alternate A default value this is return in case an item with - * the key isn't found. - */ -export function lookup(from: IStringDictionary, what: string, alternate?: T): T; -export function lookup(from: INumberDictionary, what: number, alternate?: T): T; -export function lookup(from: any, what: any, alternate: T = null): T { - const key = String(what); - if (contains(from, key)) { - return from[key]; - } - return alternate; -} - - -/** - * Looks up a value from the set. If the set doesn't contain the - * value it inserts and returns the given alternate value. - */ -export function lookupOrInsert(from: IStringDictionary, key: string, alternate: T): T; -export function lookupOrInsert(from: IStringDictionary, key: string, alternateFn: () => T): T; -export function lookupOrInsert(from: INumberDictionary, key: number, alternate: T): T; -export function lookupOrInsert(from: INumberDictionary, key: number, alternateFn: () => T): T; -export function lookupOrInsert(from: any, stringOrNumber: any, alternate: any): T { - const key = String(stringOrNumber); - if (contains(from, key)) { - return from[key]; - } else { - if (typeof alternate === 'function') { - alternate = alternate(); - } - from[key] = alternate; - return alternate; - } -} - -/** - * Inserts - */ -export function insert(into: IStringDictionary, data: T, hashFn: (data: T) => string): void; -export function insert(into: INumberDictionary, data: T, hashFn: (data: T) => string): void; -export function insert(into: any, data: T, hashFn: (data: T) => string): void { - into[hashFn(data)] = data; -} - const hasOwnProperty = Object.prototype.hasOwnProperty; -/** - * Returns {{true}} iff the provided object contains a property - * with the given name. - */ -export function contains(from: IStringDictionary, what: string): boolean; -export function contains(from: INumberDictionary, what: number): boolean; -export function contains(from: any, what: any): boolean { - return hasOwnProperty.call(from, what); -} - /** * Returns an array which contains all values that reside * in the given set. @@ -144,7 +77,14 @@ export function remove(from: any, key: string): boolean { * group function. */ export function groupBy(data: T[], groupFn: (element: T) => string): IStringDictionary { - const result = createStringDictionary(); - data.forEach(element => lookupOrInsert(result, groupFn(element), []).push(element)); + const result: IStringDictionary = Object.create(null); + for (const element of data) { + const key = groupFn(element); + let target = result[key]; + if (!target) { + target = result[key] = []; + } + target.push(element); + } return result; } diff --git a/src/vs/base/common/graph.ts b/src/vs/base/common/graph.ts index fb34abb77d6..dfc55da2022 100644 --- a/src/vs/base/common/graph.ts +++ b/src/vs/base/common/graph.ts @@ -5,7 +5,7 @@ 'use strict'; import { isEmptyObject } from 'vs/base/common/types'; -import { forEach, contains, lookup } from 'vs/base/common/collections'; +import { forEach } from 'vs/base/common/collections'; export interface Node { data: T; @@ -49,7 +49,7 @@ export class Graph { private _traverse(node: Node, inwards: boolean, seen: { [key: string]: boolean }, callback: (data: T) => void): void { var key = this._hashFn(node.data); - if (contains(seen, key)) { + if (seen[key]) { return; } seen[key] = true; @@ -76,8 +76,8 @@ export class Graph { } lookupOrInsertNode(data: T): Node { - var key = this._hashFn(data), - node = lookup(this._nodes, key); + const key = this._hashFn(data); + let node = this._nodes[key]; if (!node) { node = newNode(data); @@ -88,7 +88,7 @@ export class Graph { } lookup(data: T): Node { - return lookup(this._nodes, this._hashFn(data)); + return this._nodes[this._hashFn(data)]; } get length(): number { diff --git a/src/vs/base/common/map.ts b/src/vs/base/common/map.ts index 7445af47dce..2e57ca4cbc1 100644 --- a/src/vs/base/common/map.ts +++ b/src/vs/base/common/map.ts @@ -299,9 +299,9 @@ export class LRUCache extends BoundedLinkedMap { // --- trie'ish datastructure -interface Node { +class Node { element?: E; - children: { [key: string]: Node }; + readonly children = new Map(); } /** @@ -313,7 +313,7 @@ export class TrieMap { static PathSplitter = s => s.split(/[\\/]/).filter(s => !!s); private _splitter: (s: string) => string[]; - private _root: Node = { children: Object.create(null) }; + private _root = new Node(); constructor(splitter: (s: string) => string[]) { this._splitter = splitter; @@ -337,7 +337,7 @@ export class TrieMap { // create new nodes let newNode: Node; for (; i < parts.length; i++) { - newNode = { children: Object.create(null) }; + newNode = new Node(); node.children[parts[i]] = newNode; node = newNode; } diff --git a/src/vs/base/parts/tree/browser/tree.css b/src/vs/base/parts/tree/browser/tree.css index 2d2f61abc41..d9aaa763cd5 100644 --- a/src/vs/base/parts/tree/browser/tree.css +++ b/src/vs/base/parts/tree/browser/tree.css @@ -64,7 +64,7 @@ /* Expansion */ -.monaco-tree .monaco-tree-rows > .monaco-tree-row.has-children > .content:before { +.monaco-tree .monaco-tree-rows.show-twisties > .monaco-tree-row.has-children > .content:before { content: ' '; position: absolute; display: block; @@ -75,7 +75,7 @@ left: -16px; } -.monaco-tree .monaco-tree-rows > .monaco-tree-row.expanded > .content:before { +.monaco-tree .monaco-tree-rows.show-twisties > .monaco-tree-row.expanded > .content:before { background-image: url('expanded.svg'); } @@ -109,11 +109,11 @@ .vs-dark .monaco-tree-wrapper.drop-target, .vs-dark .monaco-tree .monaco-tree-row.drop-target { background-color: #383B3D !important; color: inherit !important; } -.vs-dark .monaco-tree .monaco-tree-rows > .monaco-tree-row.has-children > .content:before { +.vs-dark .monaco-tree .monaco-tree-rows.show-twisties > .monaco-tree-row.has-children > .content:before { background-image: url('collapsed-dark.svg'); } -.vs-dark .monaco-tree .monaco-tree-rows > .monaco-tree-row.expanded > .content:before { +.vs-dark .monaco-tree .monaco-tree-rows.show-twisties > .monaco-tree-row.expanded > .content:before { background-image: url('expanded-dark.svg'); } @@ -131,11 +131,11 @@ .hc-black .monaco-tree .monaco-tree-wrapper.drop-target, .hc-black .monaco-tree .monaco-tree-rows > .monaco-tree-row.drop-target { background: none !important; border: 1px dashed #f38518; } -.hc-black .monaco-tree .monaco-tree-rows > .monaco-tree-row.has-children > .content:before { +.hc-black .monaco-tree .monaco-tree-rows.show-twisties > .monaco-tree-row.has-children > .content:before { background-image: url('collapsed-hc.svg'); } -.hc-black .monaco-tree .monaco-tree-rows > .monaco-tree-row.expanded > .content:before { +.hc-black .monaco-tree .monaco-tree-rows.show-twisties > .monaco-tree-row.expanded > .content:before { background-image: url('expanded-hc.svg'); } diff --git a/src/vs/base/parts/tree/browser/tree.ts b/src/vs/base/parts/tree/browser/tree.ts index fc122b48b41..b59f4b267cc 100644 --- a/src/vs/base/parts/tree/browser/tree.ts +++ b/src/vs/base/parts/tree/browser/tree.ts @@ -634,6 +634,7 @@ export interface ITreeConfiguration { export interface ITreeOptions { twistiePixels?: number; + showTwistie?: boolean; indentPixels?: number; verticalScrollMode?: ScrollbarVisibility; alwaysFocused?: boolean; diff --git a/src/vs/base/parts/tree/browser/treeImpl.ts b/src/vs/base/parts/tree/browser/treeImpl.ts index 3ea5c7251b1..3e8879bdb90 100644 --- a/src/vs/base/parts/tree/browser/treeImpl.ts +++ b/src/vs/base/parts/tree/browser/treeImpl.ts @@ -64,6 +64,7 @@ export class Tree extends Events.EventEmitter implements _.ITree { this.options = options; this.options.twistiePixels = typeof this.options.twistiePixels === 'number' ? this.options.twistiePixels : 32; + this.options.showTwistie = this.options.showTwistie === false ? false : true; this.options.indentPixels = typeof this.options.indentPixels === 'number' ? this.options.indentPixels : 12; this.options.alwaysFocused = this.options.alwaysFocused === true ? true : false; this.options.useShadows = this.options.useShadows === false ? false : true; diff --git a/src/vs/base/parts/tree/browser/treeView.ts b/src/vs/base/parts/tree/browser/treeView.ts index 2d9a815f57c..4fa1b9b7afd 100644 --- a/src/vs/base/parts/tree/browser/treeView.ts +++ b/src/vs/base/parts/tree/browser/treeView.ts @@ -504,6 +504,9 @@ export class TreeView extends HeightMap { this.rowsContainer = document.createElement('div'); this.rowsContainer.className = 'monaco-tree-rows'; + if (context.options.showTwistie) { + this.rowsContainer.className += ' show-twisties'; + } var focusTracker = DOM.trackFocus(this.domNode); focusTracker.addFocusListener(() => this.onFocus()); diff --git a/src/vs/base/test/common/collections.test.ts b/src/vs/base/test/common/collections.test.ts index dbaf83f593c..bddabee8303 100644 --- a/src/vs/base/test/common/collections.test.ts +++ b/src/vs/base/test/common/collections.test.ts @@ -8,16 +8,8 @@ import * as assert from 'assert'; import collections = require('vs/base/common/collections'); -suite('Collections', () => { - test('contains', () => { - assert(!collections.contains({}, 'toString')); - assert(collections.contains({ toString: 123 }, 'toString')); - assert(!collections.contains(Object.create(null), 'toString')); - let dict = Object.create(null); - dict['toString'] = 123; - assert(collections.contains(dict, 'toString')); - }); +suite('Collections', () => { test('forEach', () => { collections.forEach({}, () => assert(false)); @@ -43,28 +35,6 @@ suite('Collections', () => { collections.forEach(test, () => assert(false)); }); - test('lookupOrInsert - should not insert if found', () => { - const property = 123; - - let from = collections.createNumberDictionary(); - from[property] = 'whatever'; - - collections.lookupOrInsert(from, property, () => assert(false)); - }); - - test('lookupOrInsert - should insert if not found', () => { - - const expected = 'alternate', property = 'test'; - - let fromWithValue = collections.createStringDictionary(); - collections.lookupOrInsert(fromWithValue, property, expected); - assert.equal(fromWithValue[property], expected); - - let fromWithCallback = collections.createStringDictionary(); - collections.lookupOrInsert(fromWithCallback, property, () => expected); - assert.equal(fromWithCallback[property], expected); - }); - test('groupBy', () => { const group1 = 'a', group2 = 'b'; @@ -87,16 +57,6 @@ suite('Collections', () => { assert.equal(grouped[group2][0].value, value3); }); - test('insert', () => { - - const expected = 'value', hashFn = x => x.toString(); - - let into = collections.createStringDictionary(); - collections.insert(into, expected, hashFn); - - assert.equal(into[expected], expected); - }); - test('remove', () => { assert(collections.remove({ 'far': 1 }, 'far')); assert(!collections.remove({ 'far': 1 }, 'boo')); diff --git a/src/vs/editor/common/commonCodeEditor.ts b/src/vs/editor/common/commonCodeEditor.ts index bb65cbeda32..750a49594e0 100644 --- a/src/vs/editor/common/commonCodeEditor.ts +++ b/src/vs/editor/common/commonCodeEditor.ts @@ -600,7 +600,7 @@ export abstract class CommonCodeEditor extends EventEmitter implements editorCom return true; } - public executeEdits(source: string, edits: editorCommon.IIdentifiedSingleEditOperation[]): boolean { + public executeEdits(source: string, edits: editorCommon.IIdentifiedSingleEditOperation[], endCursorState?: Selection[]): boolean { if (!this.cursor) { // no view, no cursor return false; @@ -611,9 +611,13 @@ export abstract class CommonCodeEditor extends EventEmitter implements editorCom } this.model.pushEditOperations(this.cursor.getSelections(), edits, () => { - return this.cursor.getSelections(); + return endCursorState ? endCursorState : this.cursor.getSelections(); }); + if (endCursorState) { + this.cursor.setSelections(source, endCursorState); + } + return true; } diff --git a/src/vs/editor/common/core/characterClassifier.ts b/src/vs/editor/common/core/characterClassifier.ts index f511021da81..e508b6a06c8 100644 --- a/src/vs/editor/common/core/characterClassifier.ts +++ b/src/vs/editor/common/core/characterClassifier.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import { createMap, Map } from 'vs/editor/common/core/map'; import { toUint8 } from 'vs/editor/common/core/uint'; /** @@ -28,7 +27,7 @@ export class CharacterClassifier { this._defaultValue = defaultValue; this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue); - this._map = createMap(); + this._map = new Map(); } private static _createAsciiMap(defaultValue: number): Uint8Array { diff --git a/src/vs/editor/common/core/map.ts b/src/vs/editor/common/core/map.ts deleted file mode 100644 index 945aa0d9553..00000000000 --- a/src/vs/editor/common/core/map.ts +++ /dev/null @@ -1,35 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -'use strict'; - -export interface Map { - clear(): void; - delete(key: K): boolean; - forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; - get(key: K): V; - has(key: K): boolean; - set(key: K, value?: V): Map; - size: number; - - // not supported on IE11: - // entries(): IterableIterator<[K, V]>; - // keys(): IterableIterator; - // values(): IterableIterator; - // [Symbol.iterator]():IterableIterator<[K,V]>; - // [Symbol.toStringTag]: string; -} - -interface MapConstructor { - new (): Map; - prototype: Map; - - // not supported on IE11: - // new (iterable: Iterable<[K, V]>): Map; -} -declare var Map: MapConstructor; - -export function createMap(): Map { - return new Map(); -} diff --git a/src/vs/editor/common/core/set.ts b/src/vs/editor/common/core/set.ts deleted file mode 100644 index 13a20379cc6..00000000000 --- a/src/vs/editor/common/core/set.ts +++ /dev/null @@ -1,34 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -'use strict'; - -export interface Set { - add(value: T): Set; - clear(): void; - delete(value: T): boolean; - forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void; - has(value: T): boolean; - size: number; - - // not supported on IE11: - // entries(): IterableIterator<[T, T]>; - // keys(): IterableIterator; - // values(): IterableIterator; - // [Symbol.iterator]():IterableIterator; - // [Symbol.toStringTag]: string; -} - -interface SetConstructor { - new (): Set; - prototype: Set; - - // not supported on IE11: - // new (iterable: Iterable): Set; -} -declare var Set: SetConstructor; - -export function createSet(): Set { - return new Set(); -} diff --git a/src/vs/editor/common/editorCommon.ts b/src/vs/editor/common/editorCommon.ts index b8835ea782b..c5380bb19de 100644 --- a/src/vs/editor/common/editorCommon.ts +++ b/src/vs/editor/common/editorCommon.ts @@ -3955,11 +3955,12 @@ export interface ICommonCodeEditor extends IEditor { pushUndoStop(): boolean; /** - * Execute a command on the editor. + * Execute edits on the editor. * @param source The source of the call. - * @param command The command to execute + * @param edits The edits to execute. + * @param endCursoState Cursor state after the edits were applied. */ - executeEdits(source: string, edits: IIdentifiedSingleEditOperation[]): boolean; + executeEdits(source: string, edits: IIdentifiedSingleEditOperation[], endCursoState?: Selection[]): boolean; /** * Execute multiple (concommitent) commands on the editor. diff --git a/src/vs/editor/common/editorCommonExtensions.ts b/src/vs/editor/common/editorCommonExtensions.ts index 86d1cbbb1a5..f31cc29e5dc 100644 --- a/src/vs/editor/common/editorCommonExtensions.ts +++ b/src/vs/editor/common/editorCommonExtensions.ts @@ -63,14 +63,14 @@ export abstract class EditorAction extends ConfigEditorCommand { public runEditorCommand(accessor: ServicesAccessor, editor: editorCommon.ICommonCodeEditor, args: any): void | TPromise { this.reportTelemetry(accessor); - return this.run(accessor, editor); + return this.run(accessor, editor, args); } protected reportTelemetry(accessor: ServicesAccessor) { accessor.get(ITelemetryService).publicLog('editorActionInvoked', { name: this.label, id: this.id }); } - public abstract run(accessor: ServicesAccessor, editor: editorCommon.ICommonCodeEditor): void | TPromise; + public abstract run(accessor: ServicesAccessor, editor: editorCommon.ICommonCodeEditor, args: any): void | TPromise; } export interface IHandlerActionOptions extends IActionOptions { diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index cd8f4246f92..d3fb45d5b43 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -745,6 +745,7 @@ export interface ICodeLensSymbol { command?: Command; } export interface CodeLensProvider { + onDidChange?: Event; provideCodeLenses(model: editorCommon.IReadOnlyModel, token: CancellationToken): ICodeLensSymbol[] | Thenable; resolveCodeLens?(model: editorCommon.IReadOnlyModel, codeLens: ICodeLensSymbol, token: CancellationToken): ICodeLensSymbol | Thenable; } diff --git a/src/vs/editor/common/modes/supports/tokenization.ts b/src/vs/editor/common/modes/supports/tokenization.ts index cd9967c0895..2174d64a7fa 100644 --- a/src/vs/editor/common/modes/supports/tokenization.ts +++ b/src/vs/editor/common/modes/supports/tokenization.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import { Map, createMap } from 'vs/editor/common/core/map'; import { ColorId, FontStyle, MetadataConsts, LanguageId } from 'vs/editor/common/modes'; import { toStandardTokenType } from 'vs/editor/common/core/lineTokens'; @@ -149,7 +148,7 @@ export class ColorMap { constructor() { this._lastColorId = 0; this._id2color = []; - this._color2id = createMap(); + this._color2id = new Map(); } public getId(color: string): ColorId { @@ -193,7 +192,7 @@ export class Theme { constructor(colorMap: ColorMap, root: ThemeTrieElement) { this._colorMap = colorMap; this._root = root; - this._cache = createMap(); + this._cache = new Map(); } public getColorMap(): string[] { @@ -306,7 +305,7 @@ export class ThemeTrieElement { constructor(mainRule: ThemeTrieElementRule) { this._mainRule = mainRule; - this._children = createMap(); + this._children = new Map(); } /** diff --git a/src/vs/editor/common/services/editorSimpleWorker.ts b/src/vs/editor/common/services/editorSimpleWorker.ts index 0575dc25166..b6824caa556 100644 --- a/src/vs/editor/common/services/editorSimpleWorker.ts +++ b/src/vs/editor/common/services/editorSimpleWorker.ts @@ -10,7 +10,6 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IDisposable } from 'vs/base/common/lifecycle'; import { IRequestHandler } from 'vs/base/common/worker/simpleWorker'; import { Range } from 'vs/editor/common/core/range'; -import { fuzzyContiguousFilter } from 'vs/base/common/filters'; import { DiffComputer } from 'vs/editor/common/diff/diffComputer'; import { stringDiff } from 'vs/base/common/diff/diff'; import * as editorCommon from 'vs/editor/common/editorCommon'; @@ -376,43 +375,27 @@ export abstract class BaseEditorSimpleWorker { // ---- BEGIN suggest -------------------------------------------------------------------------- public textualSuggest(modelUrl: string, position: editorCommon.IPosition, wordDef: string, wordDefFlags: string): TPromise { - let model = this._getModel(modelUrl); - if (!model) { - return null; + const model = this._getModel(modelUrl); + if (model) { + const suggestions: ISuggestion[] = []; + const wordDefRegExp = new RegExp(wordDef, wordDefFlags); + const currentWord = model.getWordUntilPosition(position, wordDefRegExp).word; + + for (const word of model.getAllUniqueWords(wordDefRegExp)) { + if (word !== currentWord && isNaN(Number(word))) { + suggestions.push({ + type: 'text', + label: word, + insertText: word, + noAutoAccept: true, + overwriteBefore: currentWord.length + }); + } + } + return TPromise.as({ suggestions }); } - - return TPromise.as(this._suggestFiltered(model, position, new RegExp(wordDef, wordDefFlags))); } - private _suggestFiltered(model: ICommonModel, position: editorCommon.IPosition, wordDefRegExp: RegExp): ISuggestResult { - let currentWord = model.getWordUntilPosition(position, wordDefRegExp).word; - let value = this._suggestUnfiltered(model, position, wordDefRegExp); - - // filter suggestions - return { - suggestions: value.suggestions.filter((element) => !!fuzzyContiguousFilter(currentWord, element.label)), - incomplete: value.incomplete - }; - } - - private _suggestUnfiltered(model: ICommonModel, position: editorCommon.IPosition, wordDefRegExp: RegExp): ISuggestResult { - let currentWord = model.getWordUntilPosition(position, wordDefRegExp).word; - let allWords = model.getAllUniqueWords(wordDefRegExp, currentWord); - - let suggestions = allWords.filter((word) => { - return !(/^-?\d*\.?\d/.test(word)); // filter out numbers - }).map((word) => { - return { - type: 'text', - label: word, - insertText: word, - noAutoAccept: true, - overwriteBefore: currentWord.length - }; - }); - - return { suggestions }; - } // ---- END suggest -------------------------------------------------------------------------- diff --git a/src/vs/editor/contrib/codelens/browser/codelens.ts b/src/vs/editor/contrib/codelens/browser/codelens.ts index 7367224b89a..80896f67608 100644 --- a/src/vs/editor/contrib/codelens/browser/codelens.ts +++ b/src/vs/editor/contrib/codelens/browser/codelens.ts @@ -8,7 +8,7 @@ import 'vs/css!./codelens'; import { RunOnceScheduler, asWinJsPromise } from 'vs/base/common/async'; import { onUnexpectedError } from 'vs/base/common/errors'; -import { IDisposable, dispose } from 'vs/base/common/lifecycle'; +import { Disposables, IDisposable, dispose } from 'vs/base/common/lifecycle'; import Severity from 'vs/base/common/severity'; import { format, escape } from 'vs/base/common/strings'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -17,8 +17,7 @@ import { ICommandService } from 'vs/platform/commands/common/commands'; import { IMessageService } from 'vs/platform/message/common/message'; import { Range } from 'vs/editor/common/core/range'; import * as editorCommon from 'vs/editor/common/editorCommon'; -import { CodeLensProviderRegistry, ICodeLensSymbol, Command } from 'vs/editor/common/modes'; -import { IModelService } from 'vs/editor/common/services/modelService'; +import { CodeLensProviderRegistry, CodeLensProvider, ICodeLensSymbol, Command } from 'vs/editor/common/modes'; import * as editorBrowser from 'vs/editor/browser/editorBrowser'; import { editorContribution } from 'vs/editor/browser/editorBrowserExtensions'; import { ICodeLensData, getCodeLensData } from '../common/codelens'; @@ -157,33 +156,6 @@ class CodeLensContentWidget implements editorBrowser.IContentWidget { } } -function modelsVersionId(modelService: IModelService, modeId: string): number { - let result = 1; - let models = modelService.getModels() - .filter(model => model.getMode().getId() === modeId) - .map((model) => { - return { - url: model.uri.toString(), - versionId: model.getVersionId() - }; - }) - .sort((a, b) => { - if (a.url < b.url) { - return -1; - } - if (a.url > b.url) { - return 1; - } - return 0; - }); - - for (let i = 0; i < models.length; i++) { - result = (((31 * result) | 0) + models[i].versionId) | 0; - } - - return result; -} - interface IDecorationIdCallback { (decorationId: string): void; } @@ -215,7 +187,6 @@ class CodeLensHelper { this._addDecorationsCallbacks[i](resultingDecorations[i]); } } - } class CodeLens { @@ -226,7 +197,6 @@ class CodeLens { private _decorationIds: string[]; private _data: ICodeLensData[]; private _editor: editorBrowser.ICodeEditor; - private _lastUpdateModelsVersionId: number; public constructor(data: ICodeLensData[], editor: editorBrowser.ICodeEditor, helper: CodeLensHelper, @@ -258,8 +228,6 @@ class CodeLens { this._viewZoneId = viewZoneChangeAccessor.addZone(this._viewZone); this._editor.addContentWidget(this._contentWidget); - - this._lastUpdateModelsVersionId = -1; } public dispose(helper: CodeLensHelper, viewZoneChangeAccessor: editorBrowser.IViewZoneChangeAccessor): void { @@ -296,16 +264,12 @@ class CodeLens { }); } - public computeIfNecessary(currentModelsVersionId: number, model: editorCommon.IModel): ICodeLensData[] { + public computeIfNecessary(model: editorCommon.IModel): ICodeLensData[] { this._contentWidget.updateVisibility(); // trigger the fade in if (!this._contentWidget.isVisible()) { return null; } - if (this._lastUpdateModelsVersionId === currentModelsVersionId) { - return null; - } - // Read editor current state for (let i = 0; i < this._decorationIds.length; i++) { this._data[i].symbol.range = model.getDecorationRange(this._decorationIds[i]); @@ -313,9 +277,8 @@ class CodeLens { return this._data; } - public updateCommands(symbols: ICodeLensSymbol[], currentModelsVersionId: number): void { + public updateCommands(symbols: ICodeLensSymbol[]): void { this._contentWidget.withCommands(symbols); - this._lastUpdateModelsVersionId = currentModelsVersionId; } public getLineNumber(): number { @@ -355,7 +318,6 @@ export class CodeLensContribution implements editorCommon.IEditorContribution { constructor( private _editor: editorBrowser.ICodeEditor, - @IModelService private _modelService: IModelService, @ICommandService private _commandService: ICommandService, @IMessageService private _messageService: IMessageService ) { @@ -419,9 +381,29 @@ export class CodeLensContribution implements editorCommon.IEditorContribution { return; } + const providerSubscriptions = new Disposables(); + this._localToDispose.push(providerSubscriptions); + + const onEvent = () => { + providerSubscriptions.dispose(); + scheduler.schedule(); + }; + + const subscribeToProviders = (result: ICodeLensData[]) => { + const seen = new Set(); + + for (const {provider} of result) { + if (provider.onDidChange && !seen.has(provider)) { + providerSubscriptions.add(provider.onDidChange(onEvent)); + seen.add(provider); + } + } + }; + const detectVisible = new RunOnceScheduler(() => { this._onViewportChanged(model.getMode().getId()); }, 500); + const scheduler = new RunOnceScheduler(() => { if (this._currentFindCodeLensSymbolsPromise) { this._currentFindCodeLensSymbolsPromise.cancel(); @@ -433,6 +415,7 @@ export class CodeLensContribution implements editorCommon.IEditorContribution { this._currentFindCodeLensSymbolsPromise.then((result) => { if (counterValue === this._modelChangeCounter) { // only the last one wins this.renderCodeLensSymbols(result); + subscribeToProviders(result); detectVisible.schedule(); } }, (error) => { @@ -590,12 +573,10 @@ export class CodeLensContribution implements editorCommon.IEditorContribution { return; } - const currentModelsVersionId = modelsVersionId(this._modelService, modeId); - const toResolve: ICodeLensData[][] = []; const lenses: CodeLens[] = []; this._lenses.forEach((lens) => { - const request = lens.computeIfNecessary(currentModelsVersionId, model); + const request = lens.computeIfNecessary(model); if (request) { toResolve.push(request); lenses.push(lens); @@ -618,7 +599,7 @@ export class CodeLensContribution implements editorCommon.IEditorContribution { }); return TPromise.join(promises).then(() => { - lenses[i].updateCommands(resolvedSymbols, currentModelsVersionId); + lenses[i].updateCommands(resolvedSymbols); }); }); diff --git a/src/vs/editor/contrib/contextmenu/browser/contextmenu.ts b/src/vs/editor/contrib/contextmenu/browser/contextmenu.ts index 326b615d401..2c6ebab2d31 100644 --- a/src/vs/editor/contrib/contextmenu/browser/contextmenu.ts +++ b/src/vs/editor/contrib/contextmenu/browser/contextmenu.ts @@ -11,11 +11,12 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { TPromise } from 'vs/base/common/winjs.base'; import * as dom from 'vs/base/browser/dom'; import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; -import { ActionItem, Separator } from 'vs/base/browser/ui/actionbar/actionbar'; +import { ActionItem } from 'vs/base/browser/ui/actionbar/actionbar'; import { IContextMenuService, IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IMenuService, MenuId } from 'vs/platform/actions/common/actions'; +import { fillInActions } from 'vs/platform/actions/browser/menuItemActionItem'; import { ICommonCodeEditor, IEditorContribution, MouseTargetType, EditorContextKeys, IScrollEvent } from 'vs/editor/common/editorCommon'; import { editorAction, ServicesAccessor, EditorAction } from 'vs/editor/common/editorCommonExtensions'; import { ICodeEditor, IEditorMouseEvent } from 'vs/editor/browser/editorBrowser'; @@ -124,17 +125,9 @@ export class ContextMenuController implements IEditorContribution { private _getMenuActions(): IAction[] { const result: IAction[] = []; - - let contextMenu = this._menuService.createMenu(MenuId.EditorContext, this._contextKeyService); - const groups = contextMenu.getActions(this._editor.getModel().uri); + const contextMenu = this._menuService.createMenu(MenuId.EditorContext, this._contextKeyService); + fillInActions(contextMenu, this._editor.getModel().uri, result); contextMenu.dispose(); - - for (let group of groups) { - const [, actions] = group; - result.push(...actions); - result.push(new Separator()); - } - result.pop(); // remove last separator return result; } diff --git a/src/vs/editor/contrib/linesOperations/common/linesOperations.ts b/src/vs/editor/contrib/linesOperations/common/linesOperations.ts index 82f07456fd7..6ba5ee94c27 100644 --- a/src/vs/editor/contrib/linesOperations/common/linesOperations.ts +++ b/src/vs/editor/contrib/linesOperations/common/linesOperations.ts @@ -351,92 +351,10 @@ class InsertLineAfterAction extends HandlerEditorAction { } } -@editorAction -export class DeleteAllLeftAction extends EditorAction { - constructor() { - super({ - id: 'deleteAllLeft', - label: nls.localize('lines.deleteAllLeft', "Delete All Left"), - alias: 'Delete All Left', - precondition: EditorContextKeys.Writable, - kbOpts: { - kbExpr: EditorContextKeys.TextFocus, - primary: null, - mac: { primary: KeyMod.CtrlCmd | KeyCode.Backspace } - } - }); - } - +export abstract class AbstractDeleteAllToBoundaryAction extends EditorAction { public run(accessor: ServicesAccessor, editor: ICommonCodeEditor): void { - let selections: Range[] = editor.getSelections(); - - selections.sort(Range.compareRangesUsingStarts); - selections = selections.map(selection => { - if (selection.isEmpty()) { - return new Selection(selection.startLineNumber, 1, selection.startLineNumber, selection.startColumn); - } else { - return selection; - } - }); - - // merge overlapping selections - let effectiveRanges: Range[] = []; - - for (let i = 0, count = selections.length - 1; i < count; i++) { - let range = selections[i]; - let nextRange = selections[i + 1]; - - if (Range.intersectRanges(range, nextRange) === null) { - effectiveRanges.push(range); - } else { - selections[i + 1] = Range.plusRange(range, nextRange); - } - } - - effectiveRanges.push(selections[selections.length - 1]); - - let edits: IIdentifiedSingleEditOperation[] = effectiveRanges.map(range => { - return EditOperation.replace(range, ''); - }); - - editor.executeEdits(this.id, edits); - } -} - -@editorAction -export class DeleteAllRightAction extends EditorAction { - constructor() { - super({ - id: 'deleteAllRight', - label: nls.localize('lines.deleteAllRight', "Delete All Right"), - alias: 'Delete All Right', - precondition: EditorContextKeys.Writable, - kbOpts: { - kbExpr: EditorContextKeys.TextFocus, - primary: null, - mac: { primary: KeyMod.WinCtrl | KeyCode.KEY_K, secondary: [KeyMod.CtrlCmd | KeyCode.Delete] } - } - }); - } - - public run(accessor: ServicesAccessor, editor: ICommonCodeEditor): void { - let model = editor.getModel(); - - let rangesToDelete: Range[] = editor.getSelections().map((sel) => { - if (sel.isEmpty()) { - const maxColumn = model.getLineMaxColumn(sel.startLineNumber); - - if (sel.startColumn === maxColumn) { - return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber + 1, 1); - } else { - return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber, maxColumn); - } - } - return sel; - }); - - rangesToDelete.sort(Range.compareRangesUsingStarts); - + const primaryCursor = editor.getSelection(); + let rangesToDelete = this._getRangesToDelete(editor); // merge overlapping selections let effectiveRanges: Range[] = []; @@ -453,12 +371,132 @@ export class DeleteAllRightAction extends EditorAction { effectiveRanges.push(rangesToDelete[rangesToDelete.length - 1]); + let endCursorState = this._getEndCursorState(primaryCursor, effectiveRanges); let edits: IIdentifiedSingleEditOperation[] = effectiveRanges.map(range => { + endCursorState.push(new Selection(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn)); return EditOperation.replace(range, ''); }); - editor.executeEdits(this.id, edits); - editor.pushUndoStop(); + editor.executeEdits(this.id, edits, endCursorState); + } + + /** + * Compute the cursor state after the edit operations were applied. + */ + protected abstract _getEndCursorState(primaryCursor: Range, rangesToDelete: Range[]): Selection[]; + + protected abstract _getRangesToDelete(editor: ICommonCodeEditor): Range[]; +} + +@editorAction +export class DeleteAllLeftAction extends AbstractDeleteAllToBoundaryAction { + constructor() { + super({ + id: 'deleteAllLeft', + label: nls.localize('lines.deleteAllLeft', "Delete All Left"), + alias: 'Delete All Left', + precondition: EditorContextKeys.Writable, + kbOpts: { + kbExpr: EditorContextKeys.TextFocus, + primary: null, + mac: { primary: KeyMod.CtrlCmd | KeyCode.Backspace } + } + }); + } + + _getEndCursorState(primaryCursor: Range, rangesToDelete: Range[]): Selection[] { + let endPrimaryCursor: Range; + let endCursorState = []; + + for (let i = 0, len = rangesToDelete.length; i < len; i++) { + let range = rangesToDelete[i]; + let endCursor = new Selection(rangesToDelete[i].startLineNumber, rangesToDelete[i].startColumn, rangesToDelete[i].startLineNumber, rangesToDelete[i].startColumn); + + if (range.intersectRanges(primaryCursor)) { + endPrimaryCursor = endCursor; + } else { + endCursorState.push(endCursor); + } + } + + if (endPrimaryCursor) { + endCursorState.unshift(endPrimaryCursor); + } + + return endCursorState; + } + + _getRangesToDelete(editor: ICommonCodeEditor): Range[] { + let rangesToDelete: Range[] = editor.getSelections(); + + rangesToDelete.sort(Range.compareRangesUsingStarts); + rangesToDelete = rangesToDelete.map(selection => { + if (selection.isEmpty()) { + return new Range(selection.startLineNumber, 1, selection.startLineNumber, selection.startColumn); + } else { + return selection; + } + }); + + return rangesToDelete; + } +} + +@editorAction +export class DeleteAllRightAction extends AbstractDeleteAllToBoundaryAction { + constructor() { + super({ + id: 'deleteAllRight', + label: nls.localize('lines.deleteAllRight', "Delete All Right"), + alias: 'Delete All Right', + precondition: EditorContextKeys.Writable, + kbOpts: { + kbExpr: EditorContextKeys.TextFocus, + primary: null, + mac: { primary: KeyMod.WinCtrl | KeyCode.KEY_K, secondary: [KeyMod.CtrlCmd | KeyCode.Delete] } + } + }); + } + + _getEndCursorState(primaryCursor: Range, rangesToDelete: Range[]): Selection[] { + let endPrimaryCursor: Range; + let endCursorState = []; + for (let i = 0, len = rangesToDelete.length, offset = 0; i < len; i++) { + let range = rangesToDelete[i]; + let endCursor = new Selection(range.startLineNumber - offset, range.startColumn, range.startLineNumber - offset, range.startColumn); + + if (range.intersectRanges(primaryCursor)) { + endPrimaryCursor = endCursor; + } else { + endCursorState.push(endCursor); + } + } + + if (endPrimaryCursor) { + endCursorState.unshift(endPrimaryCursor); + } + + return endCursorState; + } + + _getRangesToDelete(editor: ICommonCodeEditor): Range[] { + let model = editor.getModel(); + + let rangesToDelete: Range[] = editor.getSelections().map((sel) => { + if (sel.isEmpty()) { + const maxColumn = model.getLineMaxColumn(sel.startLineNumber); + + if (sel.startColumn === maxColumn) { + return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber + 1, 1); + } else { + return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber, maxColumn); + } + } + return sel; + }); + + rangesToDelete.sort(Range.compareRangesUsingStarts); + return rangesToDelete; } } @@ -480,7 +518,7 @@ export class JoinLinesAction extends EditorAction { public run(accessor: ServicesAccessor, editor: ICommonCodeEditor): void { let selections = editor.getSelections(); - let primarySelection = editor.getSelection(); + let primaryCursor = editor.getSelection(); selections.sort(Range.compareRangesUsingStarts); let reducedSelections: Selection[] = []; @@ -488,8 +526,8 @@ export class JoinLinesAction extends EditorAction { let lastSelection = selections.reduce((previousValue, currentValue) => { if (previousValue.isEmpty()) { if (previousValue.endLineNumber === currentValue.startLineNumber) { - if (primarySelection.equalsSelection(previousValue)) { - primarySelection = currentValue; + if (primaryCursor.equalsSelection(previousValue)) { + primaryCursor = currentValue; } return currentValue; } @@ -514,8 +552,8 @@ export class JoinLinesAction extends EditorAction { let model = editor.getModel(); let edits = []; - let resultSelections = []; - let resultPrimarySelection = primarySelection; + let endCursorState = []; + let endPrimaryCursor = primaryCursor; let lineOffset = 0; for (let i = 0, len = reducedSelections.length; i < len; i++) { @@ -594,19 +632,19 @@ export class JoinLinesAction extends EditorAction { } } - if (Range.intersectRanges(deleteSelection, primarySelection) !== null) { - resultPrimarySelection = resultSelection; + if (Range.intersectRanges(deleteSelection, primaryCursor) !== null) { + endPrimaryCursor = resultSelection; } else { - resultSelections.push(resultSelection); + endCursorState.push(resultSelection); } } lineOffset += deleteSelection.endLineNumber - deleteSelection.startLineNumber; } - editor.executeEdits(this.id, edits); - resultSelections.unshift(resultPrimarySelection); - editor.setSelections(resultSelections); + endCursorState.unshift(endPrimaryCursor); + editor.executeEdits(this.id, edits, endCursorState); + } } diff --git a/src/vs/editor/contrib/linesOperations/test/common/linesOperations.test.ts b/src/vs/editor/contrib/linesOperations/test/common/linesOperations.test.ts index 04c8207ea22..0239d6ee087 100644 --- a/src/vs/editor/contrib/linesOperations/test/common/linesOperations.test.ts +++ b/src/vs/editor/contrib/linesOperations/test/common/linesOperations.test.ts @@ -6,155 +6,160 @@ import * as assert from 'assert'; import { Selection } from 'vs/editor/common/core/selection'; +import { Handler } from 'vs/editor/common/editorCommon'; import { withMockCodeEditor } from 'vs/editor/test/common/mocks/mockCodeEditor'; import { DeleteAllLeftAction, JoinLinesAction, TransposeAction, UpperCaseAction, LowerCaseAction, DeleteAllRightAction } from 'vs/editor/contrib/linesOperations/common/linesOperations'; suite('Editor Contrib - Line Operations', () => { - test('delete all left', function () { - withMockCodeEditor( - [ - 'one', - 'two', - 'three' - ], {}, (editor, cursor) => { - let model = editor.getModel(); - let deleteAllLeftAction = new DeleteAllLeftAction(); + suite('DeleteAllLeftAction', () => { + test('should delete to the left of the cursor', function () { + withMockCodeEditor( + [ + 'one', + 'two', + 'three' + ], {}, (editor, cursor) => { + let model = editor.getModel(); + let deleteAllLeftAction = new DeleteAllLeftAction(); - editor.setSelection(new Selection(1, 2, 1, 2)); - deleteAllLeftAction.run(null, editor); - assert.equal(model.getLineContent(1), 'ne', '001'); + editor.setSelection(new Selection(1, 2, 1, 2)); + deleteAllLeftAction.run(null, editor); + assert.equal(model.getLineContent(1), 'ne', '001'); - editor.setSelections([new Selection(2, 2, 2, 2), new Selection(3, 2, 3, 2)]); - deleteAllLeftAction.run(null, editor); - assert.equal(model.getLineContent(2), 'wo', '002'); - assert.equal(model.getLineContent(3), 'hree', '003'); - }); + editor.setSelections([new Selection(2, 2, 2, 2), new Selection(3, 2, 3, 2)]); + deleteAllLeftAction.run(null, editor); + assert.equal(model.getLineContent(2), 'wo', '002'); + assert.equal(model.getLineContent(3), 'hree', '003'); + }); + }); + + test('should work in multi cursor mode', function () { + withMockCodeEditor( + [ + 'hello', + 'world', + 'hello world', + 'hello', + 'bonjour', + 'hola', + 'world', + 'hello world', + ], {}, (editor, cursor) => { + let model = editor.getModel(); + let deleteAllLeftAction = new DeleteAllLeftAction(); + + editor.setSelections([new Selection(1, 2, 1, 2), new Selection(1, 4, 1, 4)]); + deleteAllLeftAction.run(null, editor); + assert.equal(model.getLineContent(1), 'lo', '001'); + + editor.setSelections([new Selection(2, 2, 2, 2), new Selection(2, 4, 2, 5)]); + deleteAllLeftAction.run(null, editor); + assert.equal(model.getLineContent(2), 'ord', '002'); + + editor.setSelections([new Selection(3, 2, 3, 5), new Selection(3, 7, 3, 7)]); + deleteAllLeftAction.run(null, editor); + assert.equal(model.getLineContent(3), 'world', '003'); + + editor.setSelections([new Selection(4, 3, 4, 3), new Selection(4, 5, 5, 4)]); + deleteAllLeftAction.run(null, editor); + assert.equal(model.getLineContent(4), 'lljour', '004'); + + editor.setSelections([new Selection(5, 3, 6, 3), new Selection(6, 5, 7, 5), new Selection(7, 7, 7, 7)]); + deleteAllLeftAction.run(null, editor); + assert.equal(model.getLineContent(5), 'horlworld', '005'); + }); + }); }); - test('delete all left in multi cursor mode', function () { - withMockCodeEditor( - [ - 'hello', - 'world', - 'hello world', - 'hello', - 'bonjour', - 'hola', - 'world', - 'hello world', - ], {}, (editor, cursor) => { - let model = editor.getModel(); - let deleteAllLeftAction = new DeleteAllLeftAction(); + suite('JoinLinesAction', () => { + test('should join lines and insert space if necessary', function () { + withMockCodeEditor( + [ + 'hello', + 'world', + 'hello ', + 'world', + 'hello ', + ' world', + 'hello ', + ' world', + '', + '', + 'hello world' + ], {}, (editor, cursor) => { + let model = editor.getModel(); + let joinLinesAction = new JoinLinesAction(); - editor.setSelections([new Selection(1, 2, 1, 2), new Selection(1, 4, 1, 4)]); - deleteAllLeftAction.run(null, editor); - assert.equal(model.getLineContent(1), 'lo', '001'); + editor.setSelection(new Selection(1, 2, 1, 2)); + joinLinesAction.run(null, editor); + assert.equal(model.getLineContent(1), 'hello world', '001'); + assert.deepEqual(editor.getSelection().toString(), new Selection(1, 6, 1, 6).toString(), '002'); - editor.setSelections([new Selection(2, 2, 2, 2), new Selection(2, 4, 2, 5)]); - deleteAllLeftAction.run(null, editor); - assert.equal(model.getLineContent(2), 'ord', '002'); + editor.setSelection(new Selection(2, 2, 2, 2)); + joinLinesAction.run(null, editor); + assert.equal(model.getLineContent(2), 'hello world', '003'); + assert.deepEqual(editor.getSelection().toString(), new Selection(2, 7, 2, 7).toString(), '004'); - editor.setSelections([new Selection(3, 2, 3, 5), new Selection(3, 7, 3, 7)]); - deleteAllLeftAction.run(null, editor); - assert.equal(model.getLineContent(3), 'world', '003'); + editor.setSelection(new Selection(3, 2, 3, 2)); + joinLinesAction.run(null, editor); + assert.equal(model.getLineContent(3), 'hello world', '005'); + assert.deepEqual(editor.getSelection().toString(), new Selection(3, 7, 3, 7).toString(), '006'); - editor.setSelections([new Selection(4, 3, 4, 3), new Selection(4, 5, 5, 4)]); - deleteAllLeftAction.run(null, editor); - assert.equal(model.getLineContent(4), 'lljour', '004'); + editor.setSelection(new Selection(4, 2, 5, 3)); + joinLinesAction.run(null, editor); + assert.equal(model.getLineContent(4), 'hello world', '007'); + assert.deepEqual(editor.getSelection().toString(), new Selection(4, 2, 4, 8).toString(), '008'); - editor.setSelections([new Selection(5, 3, 6, 3), new Selection(6, 5, 7, 5), new Selection(7, 7, 7, 7)]); - deleteAllLeftAction.run(null, editor); - assert.equal(model.getLineContent(5), 'horlworld', '005'); - }); - }); + editor.setSelection(new Selection(5, 1, 7, 3)); + joinLinesAction.run(null, editor); + assert.equal(model.getLineContent(5), 'hello world', '009'); + assert.deepEqual(editor.getSelection().toString(), new Selection(5, 1, 5, 3).toString(), '010'); + }); + }); - test('join lines', function () { - withMockCodeEditor( - [ - 'hello', - 'world', - 'hello ', - 'world', - 'hello ', - ' world', - 'hello ', - ' world', - '', - '', - 'hello world' - ], {}, (editor, cursor) => { - let model = editor.getModel(); - let joinLinesAction = new JoinLinesAction(); + test('should work in multi cursor mode', function () { + withMockCodeEditor( + [ + 'hello', + 'world', + 'hello ', + 'world', + 'hello ', + ' world', + 'hello ', + ' world', + '', + '', + 'hello world' + ], {}, (editor, cursor) => { + let model = editor.getModel(); + let joinLinesAction = new JoinLinesAction(); - editor.setSelection(new Selection(1, 2, 1, 2)); - joinLinesAction.run(null, editor); - assert.equal(model.getLineContent(1), 'hello world', '001'); - assert.deepEqual(editor.getSelection().toString(), new Selection(1, 6, 1, 6).toString(), '002'); + editor.setSelections([ + /** primary cursor */ + new Selection(5, 2, 5, 2), + new Selection(1, 2, 1, 2), + new Selection(3, 2, 4, 2), + new Selection(5, 4, 6, 3), + new Selection(7, 5, 8, 4), + new Selection(10, 1, 10, 1) + ]); - editor.setSelection(new Selection(2, 2, 2, 2)); - joinLinesAction.run(null, editor); - assert.equal(model.getLineContent(2), 'hello world', '003'); - assert.deepEqual(editor.getSelection().toString(), new Selection(2, 7, 2, 7).toString(), '004'); + joinLinesAction.run(null, editor); + assert.equal(model.getLinesContent().join('\n'), 'hello world\nhello world\nhello world\nhello world\n\nhello world', '001'); + assert.deepEqual(editor.getSelections().toString(), [ + /** primary cursor */ + new Selection(3, 4, 3, 8), + new Selection(1, 6, 1, 6), + new Selection(2, 2, 2, 8), + new Selection(4, 5, 4, 9), + new Selection(6, 1, 6, 1) + ].toString(), '002'); - editor.setSelection(new Selection(3, 2, 3, 2)); - joinLinesAction.run(null, editor); - assert.equal(model.getLineContent(3), 'hello world', '005'); - assert.deepEqual(editor.getSelection().toString(), new Selection(3, 7, 3, 7).toString(), '006'); - - editor.setSelection(new Selection(4, 2, 5, 3)); - joinLinesAction.run(null, editor); - assert.equal(model.getLineContent(4), 'hello world', '007'); - assert.deepEqual(editor.getSelection().toString(), new Selection(4, 2, 4, 8).toString(), '008'); - - editor.setSelection(new Selection(5, 1, 7, 3)); - joinLinesAction.run(null, editor); - assert.equal(model.getLineContent(5), 'hello world', '009'); - assert.deepEqual(editor.getSelection().toString(), new Selection(5, 1, 5, 3).toString(), '010'); - }); - }); - - test('join lines in multi cursor mode', function () { - withMockCodeEditor( - [ - 'hello', - 'world', - 'hello ', - 'world', - 'hello ', - ' world', - 'hello ', - ' world', - '', - '', - 'hello world' - ], {}, (editor, cursor) => { - let model = editor.getModel(); - let joinLinesAction = new JoinLinesAction(); - - editor.setSelections([ /** primary cursor */ - new Selection(5, 2, 5, 2), - new Selection(1, 2, 1, 2), - new Selection(3, 2, 4, 2), - new Selection(5, 4, 6, 3), - new Selection(7, 5, 8, 4), - new Selection(10, 1, 10, 1) - ]); - - joinLinesAction.run(null, editor); - assert.equal(model.getLinesContent().join('\n'), 'hello world\nhello world\nhello world\nhello world\n\nhello world', '001'); - assert.deepEqual(editor.getSelections().toString(), [ - /** primary cursor */ - new Selection(3, 4, 3, 8), - new Selection(1, 6, 1, 6), - new Selection(2, 2, 2, 8), - new Selection(4, 5, 4, 9), - new Selection(6, 1, 6, 1) - ].toString(), '002'); - - /** primary cursor */ - assert.deepEqual(editor.getSelection().toString(), new Selection(3, 4, 3, 8).toString(), '003'); - }); + assert.deepEqual(editor.getSelection().toString(), new Selection(3, 4, 3, 8).toString(), '003'); + }); + }); }); test('transpose', function () { @@ -447,5 +452,40 @@ suite('Editor Contrib - Line Operations', () => { ]); }); }); + + test('should work with undo/redo', () => { + withMockCodeEditor([ + 'hello', + 'there', + 'world' + ], {}, (editor, cursor) => { + const model = editor.getModel(); + const action = new DeleteAllRightAction(); + + editor.setSelections([ + new Selection(1, 3, 1, 3), + new Selection(1, 6, 1, 6), + new Selection(3, 4, 3, 4), + ]); + action.run(null, editor); + assert.deepEqual(model.getLinesContent(), ['hethere', 'wor']); + assert.deepEqual(editor.getSelections(), [ + new Selection(1, 3, 1, 3), + new Selection(2, 4, 2, 4) + ]); + + cursor.trigger('tests', Handler.Undo, {}); + assert.deepEqual(editor.getSelections(), [ + new Selection(1, 3, 1, 3), + new Selection(1, 6, 1, 6), + new Selection(3, 4, 3, 4) + ]); + cursor.trigger('tests', Handler.Redo, {}); + assert.deepEqual(editor.getSelections(), [ + new Selection(1, 3, 1, 3), + new Selection(2, 4, 2, 4) + ]); + }); + }); }); }); \ No newline at end of file diff --git a/src/vs/editor/contrib/quickFix/browser/lightBulbWidget.ts b/src/vs/editor/contrib/quickFix/browser/lightBulbWidget.ts index ec30ba7f90a..8962a91ff0c 100644 --- a/src/vs/editor/contrib/quickFix/browser/lightBulbWidget.ts +++ b/src/vs/editor/contrib/quickFix/browser/lightBulbWidget.ts @@ -57,7 +57,7 @@ export class LightBulbWidget implements IOverlayWidget, IDisposable { getDomNode(): HTMLElement { if (!this._domNode) { this._domNode = document.createElement('div'); - this._domNode.style.width = '20px'; + this._domNode.style.width = '21px'; this._domNode.style.height = '20px'; this._domNode.className = 'lightbulb-glyph hidden'; this._toDispose.push(dom.addDisposableListener(this._domNode, 'mousedown', (e: MouseEvent) => { diff --git a/src/vs/editor/contrib/referenceSearch/browser/referencesWidget.ts b/src/vs/editor/contrib/referenceSearch/browser/referencesWidget.ts index ea86991b4ab..1b9e43d20aa 100644 --- a/src/vs/editor/contrib/referenceSearch/browser/referencesWidget.ts +++ b/src/vs/editor/contrib/referenceSearch/browser/referencesWidget.ts @@ -6,7 +6,6 @@ import 'vs/css!./referencesWidget'; import * as nls from 'vs/nls'; -import * as collections from 'vs/base/common/collections'; import { onUnexpectedError } from 'vs/base/common/errors'; import { getPathLabel } from 'vs/base/common/labels'; import Event, { Emitter } from 'vs/base/common/event'; @@ -46,8 +45,8 @@ class DecorationsManager implements IDisposable { className: 'reference-decoration' }; - private _decorationSet = collections.createStringDictionary(); - private _decorationIgnoreSet = collections.createStringDictionary(); + private _decorations = new Map(); + private _decorationIgnoreSet = new Set(); private _callOnDispose: IDisposable[] = []; private _callOnModelChange: IDisposable[] = []; @@ -83,13 +82,14 @@ class DecorationsManager implements IDisposable { private _addDecorations(reference: FileReferences): void { this._callOnModelChange.push(this.editor.getModel().onDidChangeDecorations((event) => this._onDecorationChanged(event))); - this.editor.getModel().changeDecorations((accessor) => { + this.editor.changeDecorations(accessor => { + var newDecorations: editorCommon.IModelDeltaDecoration[] = []; var newDecorationsActualIndex: number[] = []; for (let i = 0, len = reference.children.length; i < len; i++) { let oneReference = reference.children[i]; - if (this._decorationIgnoreSet[oneReference.id]) { + if (this._decorationIgnoreSet.has(oneReference.id)) { continue; } newDecorations.push({ @@ -102,7 +102,7 @@ class DecorationsManager implements IDisposable { var decorations = accessor.deltaDecorations([], newDecorations); for (var i = 0; i < decorations.length; i++) { - this._decorationSet[decorations[i]] = reference.children[newDecorationsActualIndex[i]]; + this._decorations.set(decorations[i], reference.children[newDecorationsActualIndex[i]]); } }); } @@ -112,7 +112,7 @@ class DecorationsManager implements IDisposable { toRemove: string[] = []; for (var i = 0, len = changedDecorations.length; i < len; i++) { - var reference = collections.lookup(this._decorationSet, changedDecorations[i]); + let reference = this._decorations.get(changedDecorations[i]); if (!reference) { continue; } @@ -136,7 +136,7 @@ class DecorationsManager implements IDisposable { } if (ignore) { - this._decorationIgnoreSet[reference.id] = reference; + this._decorationIgnoreSet.add(reference.id); toRemove.push(changedDecorations[i]); } else { reference.range = newRange; @@ -145,20 +145,19 @@ class DecorationsManager implements IDisposable { this.editor.changeDecorations((accessor) => { for (let i = 0, len = toRemove.length; i < len; i++) { - delete this._decorationSet[toRemove[i]]; + delete this._decorations[toRemove[i]]; } accessor.deltaDecorations(toRemove, []); }); } public removeDecorations(): void { - var keys = Object.keys(this._decorationSet); - if (keys.length > 0) { - this.editor.changeDecorations((accessor) => { - accessor.deltaDecorations(keys, []); + this.editor.changeDecorations(accessor => { + this._decorations.forEach((value, key) => { + accessor.removeDecoration(key); }); - } - this._decorationSet = {}; + this._decorations.clear(); + }); } } diff --git a/src/vs/editor/contrib/snippet/common/snippet.ts b/src/vs/editor/contrib/snippet/common/snippet.ts index f4e468182e0..0c9f9766732 100644 --- a/src/vs/editor/contrib/snippet/common/snippet.ts +++ b/src/vs/editor/contrib/snippet/common/snippet.ts @@ -198,7 +198,7 @@ const InternalFormatSnippetParser = new class implements ISnippetParser { for (i = 0, len = templateLines.length; i < len; i++) { var parsedLine = this.parseLine(templateLines[i], (id: string) => { - if (collections.contains(placeHoldersMap, id)) { + if (placeHoldersMap[id]) { return placeHoldersMap[id].value; } return ''; @@ -208,7 +208,7 @@ const InternalFormatSnippetParser = new class implements ISnippetParser { var occurence = new Range(i + 1, linePlaceHolder.startColumn, i + 1, linePlaceHolder.endColumn); var placeHolder: IPlaceHolder; - if (collections.contains(placeHoldersMap, linePlaceHolder.id)) { + if (placeHoldersMap[linePlaceHolder.id]) { placeHolder = placeHoldersMap[linePlaceHolder.id]; } else { placeHolder = { diff --git a/src/vs/editor/contrib/snippet/common/snippetController.ts b/src/vs/editor/contrib/snippet/common/snippetController.ts index 025b7ffb836..2e05552bbd4 100644 --- a/src/vs/editor/contrib/snippet/common/snippetController.ts +++ b/src/vs/editor/contrib/snippet/common/snippetController.ts @@ -340,9 +340,9 @@ export class InsertSnippetController { } private doLinkEditing(): void { - var selections: editorCommon.ISelection[] = []; - for (var i = 0, len = this.trackedPlaceHolders[this.currentPlaceHolderIndex].ranges.length; i < len; i++) { - var range = this.model.getDecorationRange(this.trackedPlaceHolders[this.currentPlaceHolderIndex].ranges[i]); + const selections: editorCommon.ISelection[] = []; + for (let i = 0, len = this.trackedPlaceHolders[this.currentPlaceHolderIndex].ranges.length; i < len; i++) { + const range = this.model.getDecorationRange(this.trackedPlaceHolders[this.currentPlaceHolderIndex].ranges[i]); selections.push({ selectionStartLineNumber: range.startLineNumber, selectionStartColumn: range.startColumn, @@ -351,6 +351,7 @@ export class InsertSnippetController { }); } this.editor.setSelections(selections); + this.editor.revealRangeInCenterIfOutsideViewport(this.editor.getSelection()); } private stopAll(): void { diff --git a/src/vs/editor/contrib/suggest/common/snippetCompletion.ts b/src/vs/editor/contrib/suggest/common/snippetCompletion.ts index 4b441d3e2e1..135cb79c70b 100644 --- a/src/vs/editor/contrib/suggest/common/snippetCompletion.ts +++ b/src/vs/editor/contrib/suggest/common/snippetCompletion.ts @@ -12,47 +12,91 @@ import { editorAction, ServicesAccessor, EditorAction } from 'vs/editor/common/e import { SnippetController } from 'vs/editor/contrib/snippet/common/snippetController'; import { IQuickOpenService, IPickOpenEntry } from 'vs/platform/quickOpen/common/quickOpen'; import { ISnippetsRegistry, Extensions, ISnippet } from 'vs/editor/common/modes/snippetsRegistry'; +import { IModeService } from 'vs/editor/common/services/modeService'; +import { LanguageId } from 'vs/editor/common/modes'; interface ISnippetPick extends IPickOpenEntry { snippet: ISnippet; } +class NameAndLangId { + + static fromArg(arg: any): NameAndLangId { + if (typeof arg !== 'object') { + return new NameAndLangId(undefined, undefined); + } + let {name, langId} = arg; + if (typeof name !== 'string') { + name = undefined; + } + if (typeof langId !== 'string') { + langId = undefined; + } + return new NameAndLangId(name, langId); + } + + private constructor(public readonly name: string, public readonly langId: string) { + + } + +} + @editorAction -class ShowSnippetsActions extends EditorAction { +class InsertSnippetAction extends EditorAction { constructor() { super({ - id: 'editor.action.showSnippets', + id: 'editor.action.insertSnippet', label: nls.localize('snippet.suggestions.label', "Insert Snippet"), alias: 'Insert Snippet', precondition: EditorContextKeys.Writable }); } - public run(accessor: ServicesAccessor, editor: ICommonCodeEditor): TPromise { - const quickOpenService = accessor.get(IQuickOpenService); + public run(accessor: ServicesAccessor, editor: ICommonCodeEditor, arg: any): TPromise { + const modeService = accessor.get(IModeService); if (!editor.getModel()) { return; } + const quickOpenService = accessor.get(IQuickOpenService); const {lineNumber, column} = editor.getPosition(); - const languageId = editor.getModel().getLanguageIdAtPosition(lineNumber, column); + let {name, langId} = NameAndLangId.fromArg(arg); - const picks: ISnippetPick[] = []; - Registry.as(Extensions.Snippets).visitSnippets(languageId, snippet => { - picks.push({ - label: snippet.prefix, - detail: snippet.description, - snippet - }); - return true; - }); + let languageId: LanguageId; + if (langId) { + languageId = modeService.getLanguageIdentifier(langId).iid; + } else { + languageId = editor.getModel().getLanguageIdAtPosition(lineNumber, column); + } - return quickOpenService.pick(picks).then(pick => { - if (pick) { - SnippetController.get(editor).insertSnippet(pick.snippet.codeSnippet, 0, 0); + return new TPromise((resolve, reject) => { + if (name) { + // take selected snippet + Registry.as(Extensions.Snippets).visitSnippets(languageId, snippet => { + if (snippet.name !== name) { + return true; + } + resolve(snippet); + }); + } else { + // let user pick a snippet + const picks: ISnippetPick[] = []; + Registry.as(Extensions.Snippets).visitSnippets(languageId, snippet => { + picks.push({ + label: snippet.prefix, + detail: snippet.description, + snippet + }); + return true; + }); + return quickOpenService.pick(picks).then(pick => resolve(pick && pick.snippet), reject); + } + }).then(snippet => { + if (snippet) { + SnippetController.get(editor).insertSnippet(snippet.codeSnippet, 0, 0); } }); } -} +} \ No newline at end of file diff --git a/src/vs/editor/contrib/suggest/common/suggestModel.ts b/src/vs/editor/contrib/suggest/common/suggestModel.ts index a265d1c73e4..fc522397f66 100644 --- a/src/vs/editor/contrib/suggest/common/suggestModel.ts +++ b/src/vs/editor/contrib/suggest/common/suggestModel.ts @@ -32,15 +32,14 @@ export interface ISuggestEvent { export class Context { - lineNumber: number; - column: number; - isInEditableRange: boolean; + readonly lineNumber: number; + readonly column: number; + readonly isInEditableRange: boolean; - lineContentBefore: string; - lineContentAfter: string; + readonly lineContentBefore: string; - wordBefore: string; - wordAfter: string; + readonly wordBefore: string; + readonly wordAfter: string; constructor(model: IModel, position: IPosition, private auto: boolean) { const lineContent = model.getLineContent(position.lineNumber); @@ -57,10 +56,8 @@ export class Context { this.lineNumber = position.lineNumber; this.column = position.column; this.lineContentBefore = lineContent.substr(0, position.column - 1); - this.lineContentAfter = lineContent.substr(position.column - 1); this.isInEditableRange = true; - if (model.hasEditableRange()) { const editableRange = model.getEditableRange(); @@ -101,7 +98,7 @@ export class Context { return true; } - if (!startsWith(context.lineContentBefore, this.lineContentBefore) || this.lineContentAfter !== context.lineContentAfter) { + if (!startsWith(context.lineContentBefore, this.lineContentBefore)) { // Line has changed before position return true; } @@ -115,7 +112,7 @@ export class Context { } shouldRetrigger(context: Context): boolean { - if (!startsWith(this.lineContentBefore, context.lineContentBefore) || this.lineContentAfter !== context.lineContentAfter) { + if (!startsWith(this.lineContentBefore, context.lineContentBefore)) { // Doesn't look like the same line return false; } diff --git a/src/vs/editor/node/textMate/TMSyntax.ts b/src/vs/editor/node/textMate/TMSyntax.ts index 741ad5449de..d60e5d696fe 100644 --- a/src/vs/editor/node/textMate/TMSyntax.ts +++ b/src/vs/editor/node/textMate/TMSyntax.ts @@ -32,8 +32,7 @@ export interface ITMSyntaxExtensionPoint { injectTo: string[]; } -// TODO@Martin TS(2.0.2) - Type IJsonSchema has no defined property require. Keeping semantic using any cast -export const grammarsExtPoint: IExtensionPoint = ExtensionsRegistry.registerExtensionPoint('grammars', [languagesExtPoint], { +export const grammarsExtPoint: IExtensionPoint = ExtensionsRegistry.registerExtensionPoint('grammars', [languagesExtPoint], { description: nls.localize('vscode.extension.contributes.grammars', 'Contributes textmate tokenizers.'), type: 'array', defaultSnippets: [{ body: [{ language: '${1:id}', scopeName: 'source.${2:id}', path: './syntaxes/${3:id}.tmLanguage.' }] }], @@ -65,7 +64,7 @@ export const grammarsExtPoint: IExtensionPoint = Exte } } }, - require: ['scopeName', 'path'] + required: ['scopeName', 'path'] } }); @@ -451,23 +450,42 @@ class Tokenizer { private _grammar: IGrammar; private _modeId: string; private _decodeMap: DecodeMap; + private _stackOverflowReported: boolean; constructor(languageRegistration: TMLanguageRegistration, modeId: string, grammar: IGrammar) { this._modeId = modeId; this._grammar = grammar; this._decodeMap = new DecodeMap(languageRegistration); + this._stackOverflowReported = false; } public tokenize(line: string, state: TMState, offsetDelta: number): ILineTokens { + // Do not attempt to tokenize if a line has over 20k - // or if the rule stack contains more than 100 rules (indicator of broken grammar that forgets to pop rules) - if (line.length >= 20000 || depth(state.ruleStack) > 100) { + if (line.length >= 20000) { + console.log(`Line (${line.substr(0, 15)}...): longer than 20k characters, tokenization skipped.`); return new RawLineTokens( [new Token(offsetDelta, '')], [new ModeTransition(offsetDelta, this._modeId)], state ); } + + // or if the rule stack contains more than 100 rules (indicator of broken grammar that forgets to pop rules) + if (depth(state.ruleStack) > 100) { + if (!this._stackOverflowReported) { + // don't report again unless a good state has been reached again. + console.log(`Line (${line.substr(0, 15)}...): stack deeper than 100: tokenization stopped.`, printRuleStack(state.ruleStack)); + this._stackOverflowReported = true; + } + return new RawLineTokens( + [new Token(offsetDelta, '')], + [new ModeTransition(offsetDelta, this._modeId)], + state + ); + } + this._stackOverflowReported = false; + let textMateResult = this._grammar.tokenizeLine(line, state.ruleStack); let endState: TMState; @@ -482,6 +500,16 @@ class Tokenizer { } } +// TODO: replace with something like ruleStack.toDebugString +function printRuleStack(ruleStack: StackElement): string[] { + let scopes = []; + while (ruleStack) { + scopes.push(ruleStack['_scopeName']); + ruleStack = ruleStack._parent; + } + return scopes; +} + export function decodeTextMateTokens(topLevelModeId: string, decodeMap: DecodeMap, line: string, offsetDelta: number, resultTokens: IToken[], resultState: TMState): RawLineTokens { // Create the result early and fill in the tokens later diff --git a/src/vs/editor/test/common/services/editorSimpleWorker.test.ts b/src/vs/editor/test/common/services/editorSimpleWorker.test.ts index ba3588a57fd..b48ee13656b 100644 --- a/src/vs/editor/test/common/services/editorSimpleWorker.test.ts +++ b/src/vs/editor/test/common/services/editorSimpleWorker.test.ts @@ -160,4 +160,18 @@ suite('EditorSimpleWorker', () => { assert.equal(value, '}'); }); + + test('textualSuggest, issue #17785', function () { + + let model = worker.addModel([ + 'foobar', // 1 + 'f f' // 2 + ]); + + return worker.textualSuggest(model.uri.toString(), { lineNumber: 2, column: 2 }, '[a-z]+', 'img').then((result) => { + const {suggestions} = result; + assert.equal(suggestions.length, 1); + assert.equal(suggestions[0].label, 'foobar'); + }); + }); }); diff --git a/src/vs/loader.js b/src/vs/loader.js index 542c1314ede..e94cb64ffae 100644 --- a/src/vs/loader.js +++ b/src/vs/loader.js @@ -13,14 +13,12 @@ *--------------------------------------------------------------------------------------------- *--------------------------------------------------------------------------------------------- *--------------------------------------------------------------------------------------------*/ -'use strict'; -// Limitation: To load jquery through the loader, always require 'jquery' and add a path for it in the loader configuration -var _amdLoaderGlobal = this, define; +var _amdLoaderGlobal = this; var AMDLoader; (function (AMDLoader) { - // ------------------------------------------------------------------------ - // Utilities - function _isWindows() { + AMDLoader.global = _amdLoaderGlobal; + AMDLoader.isNode = (typeof module !== 'undefined' && !!module.exports); + AMDLoader.isWindows = (function _isWindows() { if (typeof navigator !== 'undefined') { if (navigator.userAgent && navigator.userAgent.indexOf('Windows') >= 0) { return true; @@ -30,8 +28,77 @@ var AMDLoader; return (process.platform === 'win32'); } return false; + })(); + AMDLoader.isWebWorker = (typeof AMDLoader.global.importScripts === 'function'); + AMDLoader.isElectronRenderer = (typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.electron !== 'undefined' && process.type === 'renderer'); + AMDLoader.isElectronMain = (typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.electron !== 'undefined' && process.type === 'browser'); + AMDLoader.hasPerformanceNow = (AMDLoader.global.performance && typeof AMDLoader.global.performance.now === 'function'); +})(AMDLoader || (AMDLoader = {})); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var AMDLoader; +(function (AMDLoader) { + var LoaderEventType; + (function (LoaderEventType) { + LoaderEventType[LoaderEventType["LoaderAvailable"] = 1] = "LoaderAvailable"; + LoaderEventType[LoaderEventType["BeginLoadingScript"] = 10] = "BeginLoadingScript"; + LoaderEventType[LoaderEventType["EndLoadingScriptOK"] = 11] = "EndLoadingScriptOK"; + LoaderEventType[LoaderEventType["EndLoadingScriptError"] = 12] = "EndLoadingScriptError"; + LoaderEventType[LoaderEventType["BeginInvokeFactory"] = 21] = "BeginInvokeFactory"; + LoaderEventType[LoaderEventType["EndInvokeFactory"] = 22] = "EndInvokeFactory"; + LoaderEventType[LoaderEventType["NodeBeginEvaluatingScript"] = 31] = "NodeBeginEvaluatingScript"; + LoaderEventType[LoaderEventType["NodeEndEvaluatingScript"] = 32] = "NodeEndEvaluatingScript"; + LoaderEventType[LoaderEventType["NodeBeginNativeRequire"] = 33] = "NodeBeginNativeRequire"; + LoaderEventType[LoaderEventType["NodeEndNativeRequire"] = 34] = "NodeEndNativeRequire"; + })(LoaderEventType = AMDLoader.LoaderEventType || (AMDLoader.LoaderEventType = {})); + function getHighPerformanceTimestamp() { + return (AMDLoader.hasPerformanceNow ? AMDLoader.global.performance.now() : Date.now()); } - var isWindows = _isWindows(); + AMDLoader.getHighPerformanceTimestamp = getHighPerformanceTimestamp; + var LoaderEvent = (function () { + function LoaderEvent(type, detail, timestamp) { + this.type = type; + this.detail = detail; + this.timestamp = timestamp; + } + return LoaderEvent; + }()); + AMDLoader.LoaderEvent = LoaderEvent; + var LoaderEventRecorder = (function () { + function LoaderEventRecorder(loaderAvailableTimestamp) { + this._events = [new LoaderEvent(LoaderEventType.LoaderAvailable, '', loaderAvailableTimestamp)]; + } + LoaderEventRecorder.prototype.record = function (type, detail) { + this._events.push(new LoaderEvent(type, detail, getHighPerformanceTimestamp())); + }; + LoaderEventRecorder.prototype.getEvents = function () { + return this._events; + }; + return LoaderEventRecorder; + }()); + AMDLoader.LoaderEventRecorder = LoaderEventRecorder; + var NullLoaderEventRecorder = (function () { + function NullLoaderEventRecorder() { + } + NullLoaderEventRecorder.prototype.record = function (type, detail) { + // Nothing to do + }; + NullLoaderEventRecorder.prototype.getEvents = function () { + return []; + }; + return NullLoaderEventRecorder; + }()); + NullLoaderEventRecorder.INSTANCE = new NullLoaderEventRecorder(); + AMDLoader.NullLoaderEventRecorder = NullLoaderEventRecorder; +})(AMDLoader || (AMDLoader = {})); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var AMDLoader; +(function (AMDLoader) { var Utilities = (function () { function Utilities() { } @@ -40,7 +107,7 @@ var AMDLoader; */ Utilities.fileUriToFilePath = function (uri) { uri = decodeURI(uri); - if (isWindows) { + if (AMDLoader.isWindows) { if (/^file:\/\/\//.test(uri)) { // This is a URI without a hostname => return only the path segment return uri.substr(8); @@ -68,17 +135,14 @@ var AMDLoader; return /^[^\#]*\?/gi.test(url); }; /** - * Does `url` start with http:// or https:// or / ? + * Does `url` start with http:// or https:// or file:// or / ? */ Utilities.isAbsolutePath = function (url) { - return (Utilities.startsWith(url, 'http://') - || Utilities.startsWith(url, 'https://') - || Utilities.startsWith(url, 'file://') - || Utilities.startsWith(url, '/')); + return /^((http:\/\/)|(https:\/\/)|(file:\/\/)|(\/))/.test(url); }; Utilities.forEachProperty = function (obj, callback) { if (obj) { - var key; + var key = void 0; for (key in obj) { if (obj.hasOwnProperty(key)) { callback(key, obj[key]); @@ -93,17 +157,11 @@ var AMDLoader; }); return isEmpty; }; - Utilities.isArray = function (obj) { - if (Array.isArray) { - return Array.isArray(obj); - } - return Object.prototype.toString.call(obj) === '[object Array]'; - }; Utilities.recursiveClone = function (obj) { if (!obj || typeof obj !== 'object') { return obj; } - var result = Utilities.isArray(obj) ? [] : {}; + var result = Array.isArray(obj) ? [] : {}; Utilities.forEachProperty(obj, function (key, value) { if (value && typeof value === 'object') { result[key] = Utilities.recursiveClone(value); @@ -118,12 +176,19 @@ var AMDLoader; return '===anonymous' + (Utilities.NEXT_ANONYMOUS_ID++) + '==='; }; Utilities.isAnonymousModule = function (id) { - return id.indexOf('===anonymous') === 0; + return /^===anonymous/.test(id); }; return Utilities; }()); Utilities.NEXT_ANONYMOUS_ID = 1; AMDLoader.Utilities = Utilities; +})(AMDLoader || (AMDLoader = {})); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var AMDLoader; +(function (AMDLoader) { var ConfigurationOptionsUtil = (function () { function ConfigurationOptionsUtil() { } @@ -161,18 +226,12 @@ var AMDLoader; if (typeof options.paths !== 'object') { options.paths = {}; } - if (typeof options.bundles !== 'object') { - options.bundles = []; - } - if (typeof options.shim !== 'object') { - options.shim = {}; - } if (typeof options.config !== 'object') { options.config = {}; } if (typeof options.catchError === 'undefined') { // Catch errors by default in web workers, do not catch errors by default in other contexts - options.catchError = isWebWorker; + options.catchError = AMDLoader.isWebWorker; } if (typeof options.urlArgs !== 'string') { options.urlArgs = ''; @@ -180,11 +239,11 @@ var AMDLoader; if (typeof options.onError !== 'function') { options.onError = defaultOnError; } - if (typeof options.ignoreDuplicateModules !== 'object' || !Utilities.isArray(options.ignoreDuplicateModules)) { + if (typeof options.ignoreDuplicateModules !== 'object' || !Array.isArray(options.ignoreDuplicateModules)) { options.ignoreDuplicateModules = []; } if (options.baseUrl.length > 0) { - if (!Utilities.endsWith(options.baseUrl, '/')) { + if (!AMDLoader.Utilities.endsWith(options.baseUrl, '/')) { options.baseUrl += '/'; } } @@ -210,39 +269,20 @@ var AMDLoader; ConfigurationOptionsUtil.mergeConfigurationOptions = function (overwrite, base) { if (overwrite === void 0) { overwrite = null; } if (base === void 0) { base = null; } - var result = Utilities.recursiveClone(base || {}); + var result = AMDLoader.Utilities.recursiveClone(base || {}); // Merge known properties and overwrite the unknown ones - Utilities.forEachProperty(overwrite, function (key, value) { - if (key === 'bundles' && typeof result.bundles !== 'undefined') { - if (Utilities.isArray(value)) { - // Compatibility style - result.bundles = result.bundles.concat(value); - } - else { - // AMD API style - Utilities.forEachProperty(value, function (key, value) { - var bundleConfiguration = { - location: key, - modules: value - }; - result.bundles.push(bundleConfiguration); - }); - } - } - else if (key === 'ignoreDuplicateModules' && typeof result.ignoreDuplicateModules !== 'undefined') { + AMDLoader.Utilities.forEachProperty(overwrite, function (key, value) { + if (key === 'ignoreDuplicateModules' && typeof result.ignoreDuplicateModules !== 'undefined') { result.ignoreDuplicateModules = result.ignoreDuplicateModules.concat(value); } else if (key === 'paths' && typeof result.paths !== 'undefined') { - Utilities.forEachProperty(value, function (key2, value2) { return result.paths[key2] = value2; }); - } - else if (key === 'shim' && typeof result.shim !== 'undefined') { - Utilities.forEachProperty(value, function (key2, value2) { return result.shim[key2] = value2; }); + AMDLoader.Utilities.forEachProperty(value, function (key2, value2) { return result.paths[key2] = value2; }); } else if (key === 'config' && typeof result.config !== 'undefined') { - Utilities.forEachProperty(value, function (key2, value2) { return result.config[key2] = value2; }); + AMDLoader.Utilities.forEachProperty(value, function (key2, value2) { return result.config[key2] = value2; }); } else { - result[key] = Utilities.recursiveClone(value); + result[key] = AMDLoader.Utilities.recursiveClone(value); } }); return ConfigurationOptionsUtil.validateConfigurationOptions(result); @@ -254,34 +294,21 @@ var AMDLoader; function Configuration(options) { this.options = ConfigurationOptionsUtil.mergeConfigurationOptions(options); this._createIgnoreDuplicateModulesMap(); + this._createNodeModulesMap(); this._createSortedPathsRules(); - this._createShimModules(); - this._createOverwriteModuleIdToPath(); if (this.options.baseUrl === '') { - if (isNode && this.options.nodeRequire && this.options.nodeRequire.main && this.options.nodeRequire.main.filename) { + if (AMDLoader.isNode && this.options.nodeRequire && this.options.nodeRequire.main && this.options.nodeRequire.main.filename) { var nodeMain = this.options.nodeRequire.main.filename; var dirnameIndex = Math.max(nodeMain.lastIndexOf('/'), nodeMain.lastIndexOf('\\')); this.options.baseUrl = nodeMain.substring(0, dirnameIndex + 1); } - if (isNode && this.options.nodeMain) { + if (AMDLoader.isNode && this.options.nodeMain) { var nodeMain = this.options.nodeMain; var dirnameIndex = Math.max(nodeMain.lastIndexOf('/'), nodeMain.lastIndexOf('\\')); this.options.baseUrl = nodeMain.substring(0, dirnameIndex + 1); } } } - Configuration.prototype._createOverwriteModuleIdToPath = function () { - this.overwriteModuleIdToPath = {}; - for (var i = 0; i < this.options.bundles.length; i++) { - var bundle = this.options.bundles[i]; - var location = bundle.location; - if (bundle.modules) { - for (var j = 0; j < bundle.modules.length; j++) { - this.overwriteModuleIdToPath[bundle.modules[j]] = location; - } - } - } - }; Configuration.prototype._createIgnoreDuplicateModulesMap = function () { // Build a map out of the ignoreDuplicateModules array this.ignoreDuplicateModulesMap = {}; @@ -289,13 +316,21 @@ var AMDLoader; this.ignoreDuplicateModulesMap[this.options.ignoreDuplicateModules[i]] = true; } }; + Configuration.prototype._createNodeModulesMap = function () { + // Build a map out of nodeModules array + this.nodeModulesMap = Object.create(null); + for (var _i = 0, _a = this.options.nodeModules; _i < _a.length; _i++) { + var nodeModule = _a[_i]; + this.nodeModulesMap[nodeModule] = true; + } + }; Configuration.prototype._createSortedPathsRules = function () { var _this = this; // Create an array our of the paths rules, sorted descending by length to // result in a more specific -> less specific order this.sortedPathsRules = []; - Utilities.forEachProperty(this.options.paths, function (from, to) { - if (!Utilities.isArray(to)) { + AMDLoader.Utilities.forEachProperty(this.options.paths, function (from, to) { + if (!Array.isArray(to)) { _this.sortedPathsRules.push({ from: from, to: [to] @@ -312,84 +347,6 @@ var AMDLoader; return b.from.length - a.from.length; }); }; - Configuration.prototype._ensureShimModule1 = function (path, shimMD) { - // Ensure dependencies are also shimmed - for (var i = 0; i < shimMD.length; i++) { - var dependencyId = shimMD[i]; - if (!this.shimModules.hasOwnProperty(dependencyId)) { - this._ensureShimModule1(dependencyId, []); - } - } - this.shimModules[path] = { - stack: null, - dependencies: shimMD, - callback: null - }; - if (this.options.isBuild) { - this.shimModulesStr[path] = 'null'; - } - }; - Configuration.prototype._ensureShimModule2 = function (path, shimMD) { - this.shimModules[path] = { - stack: null, - dependencies: shimMD.deps || [], - callback: function () { - var depsValues = []; - for (var _i = 0; _i < arguments.length; _i++) { - depsValues[_i] = arguments[_i]; - } - if (typeof shimMD.init === 'function') { - var initReturnValue = shimMD.init.apply(global, depsValues); - if (typeof initReturnValue !== 'undefined') { - return initReturnValue; - } - } - if (typeof shimMD.exports === 'function') { - return shimMD.exports.apply(global, depsValues); - } - if (typeof shimMD.exports === 'string') { - var pieces = shimMD.exports.split('.'); - var obj = global; - for (var i = 0; i < pieces.length; i++) { - if (obj) { - obj = obj[pieces[i]]; - } - } - return obj; - } - return shimMD.exports || {}; - } - }; - if (this.options.isBuild) { - if (typeof shimMD.init === 'function') { - this.shimModulesStr[path] = shimMD.init.toString(); - } - else if (typeof shimMD.exports === 'function') { - this.shimModulesStr[path] = shimMD.exports.toString(); - } - else if (typeof shimMD.exports === 'string') { - this.shimModulesStr[path] = 'function() { return this.' + shimMD.exports + '; }'; - } - else { - this.shimModulesStr[path] = JSON.stringify(shimMD.exports); - } - } - }; - Configuration.prototype._createShimModules = function () { - var _this = this; - this.shimModules = {}; - this.shimModulesStr = {}; - Utilities.forEachProperty(this.options.shim, function (path, shimMD) { - if (!shimMD) { - return; - } - if (Utilities.isArray(shimMD)) { - _this._ensureShimModule1(path, shimMD); - return; - } - _this._ensureShimModule2(path, shimMD); - }); - }; /** * Clone current configuration and overwrite options selectively. * @param options The selective options to overwrite with. @@ -408,7 +365,7 @@ var AMDLoader; var pathRule; for (var i = 0, len = this.sortedPathsRules.length; i < len; i++) { pathRule = this.sortedPathsRules[i]; - if (Utilities.startsWith(moduleId, pathRule.from)) { + if (AMDLoader.Utilities.startsWith(moduleId, pathRule.from)) { var result = []; for (var j = 0, lenJ = pathRule.to.length; j < lenJ; j++) { result.push(pathRule.to[j] + moduleId.substr(pathRule.from.length)); @@ -419,7 +376,7 @@ var AMDLoader; return [moduleId]; }; Configuration.prototype._addUrlArgsToUrl = function (url) { - if (Utilities.containsQueryString(url)) { + if (AMDLoader.Utilities.containsQueryString(url)) { return url + '&' + this.options.urlArgs; } else { @@ -444,31 +401,35 @@ var AMDLoader; * Transform a module id to a location. Appends .js to module ids */ Configuration.prototype.moduleIdToPaths = function (moduleId) { - if (this.isBuild() && this.options.nodeModules.indexOf(moduleId) >= 0) { - // This is a node module and we are at build time, drop it - return ['empty:']; + if (this.nodeModulesMap[moduleId] === true) { + // This is a node module... + if (this.isBuild()) { + // ...and we are at build time, drop it + return ['empty:']; + } + else { + // ...and at runtime we create a `shortcut`-path + return ['node|' + moduleId]; + } } var result = moduleId; - if (this.overwriteModuleIdToPath.hasOwnProperty(result)) { - result = this.overwriteModuleIdToPath[result]; - } var results; - if (!Utilities.endsWith(result, '.js') && !Utilities.isAbsolutePath(result)) { + if (!AMDLoader.Utilities.endsWith(result, '.js') && !AMDLoader.Utilities.isAbsolutePath(result)) { results = this._applyPaths(result); for (var i = 0, len = results.length; i < len; i++) { if (this.isBuild() && results[i] === 'empty:') { continue; } - if (!Utilities.isAbsolutePath(results[i])) { + if (!AMDLoader.Utilities.isAbsolutePath(results[i])) { results[i] = this.options.baseUrl + results[i]; } - if (!Utilities.endsWith(results[i], '.js') && !Utilities.containsQueryString(results[i])) { + if (!AMDLoader.Utilities.endsWith(results[i], '.js') && !AMDLoader.Utilities.containsQueryString(results[i])) { results[i] = results[i] + '.js'; } } } else { - if (!Utilities.endsWith(result, '.js') && !Utilities.containsQueryString(result)) { + if (!AMDLoader.Utilities.endsWith(result, '.js') && !AMDLoader.Utilities.containsQueryString(result)) { result = result + '.js'; } results = [result]; @@ -480,35 +441,20 @@ var AMDLoader; */ Configuration.prototype.requireToUrl = function (url) { var result = url; - if (!Utilities.isAbsolutePath(result)) { + if (!AMDLoader.Utilities.isAbsolutePath(result)) { result = this._applyPaths(result)[0]; - if (!Utilities.isAbsolutePath(result)) { + if (!AMDLoader.Utilities.isAbsolutePath(result)) { result = this.options.baseUrl + result; } } return this._addUrlArgsIfNecessaryToUrl(result); }; - /** - * Test if `moduleId` is shimmed. - */ - Configuration.prototype.isShimmed = function (moduleId) { - return this.shimModules.hasOwnProperty(moduleId); - }; /** * Flag to indicate if current execution is as part of a build. */ Configuration.prototype.isBuild = function () { return this.options.isBuild; }; - /** - * Get a normalized shim definition for `moduleId`. - */ - Configuration.prototype.getShimmedModuleDefine = function (moduleId) { - return this.shimModules[moduleId]; - }; - Configuration.prototype.getShimmedModulesStr = function (moduleId) { - return this.shimModulesStr[moduleId]; - }; /** * Test if module `moduleId` is expected to be defined multiple times */ @@ -544,1004 +490,13 @@ var AMDLoader; return Configuration; }()); AMDLoader.Configuration = Configuration; - // ------------------------------------------------------------------------ - // ModuleIdResolver - var ModuleIdResolver = (function () { - function ModuleIdResolver(config, fromModuleId) { - this._config = config; - var lastSlash = fromModuleId.lastIndexOf('/'); - if (lastSlash !== -1) { - this.fromModulePath = fromModuleId.substr(0, lastSlash + 1); - } - else { - this.fromModulePath = ''; - } - } - ModuleIdResolver.prototype.isBuild = function () { - return this._config.isBuild(); - }; - /** - * Normalize 'a/../name' to 'name', etc. - */ - ModuleIdResolver._normalizeModuleId = function (moduleId) { - var r = moduleId, pattern; - // replace /./ => / - pattern = /\/\.\//; - while (pattern.test(r)) { - r = r.replace(pattern, '/'); - } - // replace ^./ => nothing - r = r.replace(/^\.\//g, ''); - // replace /aa/../ => / (BUT IGNORE /../../) - pattern = /\/(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//; - while (pattern.test(r)) { - r = r.replace(pattern, '/'); - } - // replace ^aa/../ => nothing (BUT IGNORE ../../) - r = r.replace(/^(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//, ''); - return r; - }; - /** - * Resolve relative module ids - */ - ModuleIdResolver.prototype.resolveModule = function (moduleId) { - var result = moduleId; - if (!Utilities.isAbsolutePath(result)) { - if (Utilities.startsWith(result, './') || Utilities.startsWith(result, '../')) { - result = ModuleIdResolver._normalizeModuleId(this.fromModulePath + result); - } - } - return result; - }; - /** - * Transform a module id to a location. Appends .js to module ids - */ - ModuleIdResolver.prototype.moduleIdToPaths = function (moduleId) { - var r = this._config.moduleIdToPaths(moduleId); - if (isNode && moduleId.indexOf('/') === -1) { - r.push('node|' + this.fromModulePath + '|' + moduleId); - } - return r; - }; - /** - * Transform a module id or url to a location. - */ - ModuleIdResolver.prototype.requireToUrl = function (url) { - return this._config.requireToUrl(url); - }; - /** - * Should errors be caught when executing module factories? - */ - ModuleIdResolver.prototype.shouldCatchError = function () { - return this._config.shouldCatchError(); - }; - /** - * Forward an error to the error handler. - */ - ModuleIdResolver.prototype.onError = function (err) { - this._config.onError(err); - }; - return ModuleIdResolver; - }()); - AMDLoader.ModuleIdResolver = ModuleIdResolver; - // ------------------------------------------------------------------------ - // Module - var Module = (function () { - function Module(id, dependencies, callback, errorback, recorder, moduleIdResolver, config, defineCallStack) { - if (defineCallStack === void 0) { defineCallStack = null; } - this._id = id; - this._dependencies = dependencies; - this._dependenciesValues = []; - this._callback = callback; - this._errorback = errorback; - this._recorder = recorder; - this._moduleIdResolver = moduleIdResolver; - this._exports = {}; - this._exportsPassedIn = false; - this._config = config; - this._defineCallStack = defineCallStack; - this._digestDependencies(); - if (this._unresolvedDependenciesCount === 0) { - this._complete(); - } - } - Module.prototype._digestDependencies = function () { - var _this = this; - // Exact count of dependencies - this._unresolvedDependenciesCount = this._dependencies.length; - // Send on to the manager only a subset of dependencies - // For example, 'exports' and 'module' can be fulfilled locally - this._normalizedDependencies = []; - this._managerDependencies = []; - this._managerDependenciesMap = {}; - var i, len, d; - for (i = 0, len = this._dependencies.length; i < len; i++) { - d = this._dependencies[i]; - if (!d) { - // Most likely, undefined sneaked in to the dependency array - // Also, IE8 interprets ['a', 'b',] as ['a', 'b', undefined] - console.warn('Please check module ' + this._id + ', the dependency list looks broken'); - this._normalizedDependencies[i] = d; - this._dependenciesValues[i] = null; - this._unresolvedDependenciesCount--; - continue; - } - if (d === 'exports') { - // Fulfill 'exports' locally and remember that it was passed in - // Later on, we will ignore the return value of the factory method - this._exportsPassedIn = true; - this._normalizedDependencies[i] = d; - this._dependenciesValues[i] = this._exports; - this._unresolvedDependenciesCount--; - } - else if (d === 'module') { - // Fulfill 'module' locally - this._normalizedDependencies[i] = d; - this._dependenciesValues[i] = { - id: this._id, - config: function () { return _this._config; } - }; - this._unresolvedDependenciesCount--; - } - else if (d === 'require') { - // Request 'requre' from the manager - this._normalizedDependencies[i] = d; - this.addManagerDependency(d, i); - } - else { - // Normalize dependency and then request it from the manager - var bangIndex = d.indexOf('!'); - if (bangIndex >= 0) { - var pluginId = d.substring(0, bangIndex); - var pluginParam = d.substring(bangIndex + 1, d.length); - d = this._moduleIdResolver.resolveModule(pluginId) + '!' + pluginParam; - } - else { - d = this._moduleIdResolver.resolveModule(d); - } - this._normalizedDependencies[i] = d; - this.addManagerDependency(d, i); - } - } - }; - Module.prototype.addManagerDependency = function (dependency, index) { - if (this._managerDependenciesMap.hasOwnProperty(dependency)) { - throw new Error('Module ' + this._id + ' contains multiple times a dependency to ' + dependency); - } - this._managerDependencies.push(dependency); - this._managerDependenciesMap[dependency] = index; - }; - /** - * Called by the module manager because plugin dependencies can not - * be normalized statically, the part after '!' can only be normalized - * once the plugin has loaded and its normalize logic is plugged in. - */ - Module.prototype.renameDependency = function (oldDependencyId, newDependencyId) { - if (!this._managerDependenciesMap.hasOwnProperty(oldDependencyId)) { - throw new Error('Loader: Cannot rename an unknown dependency!'); - } - var index = this._managerDependenciesMap[oldDependencyId]; - delete this._managerDependenciesMap[oldDependencyId]; - this._managerDependenciesMap[newDependencyId] = index; - this._normalizedDependencies[index] = newDependencyId; - }; - /** - * Get module's id - */ - Module.prototype.getId = function () { - return this._id; - }; - /** - * Get the module id resolver associated with this module - */ - Module.prototype.getModuleIdResolver = function () { - return this._moduleIdResolver; - }; - Module.prototype.isExportsPassedIn = function () { - return this._exportsPassedIn; - }; - Module.prototype.getExports = function () { - return this._exports; - }; - /** - * Get the initial dependencies (resolved). - * Does not account for any renames - */ - Module.prototype.getDependencies = function () { - return this._managerDependencies; - }; - Module.prototype.getNormalizedDependencies = function () { - return this._normalizedDependencies; - }; - Module.prototype.getDefineCallStack = function () { - return this._defineCallStack; - }; - Module.prototype._invokeFactory = function () { - if (this._moduleIdResolver.isBuild() && !Utilities.isAnonymousModule(this._id)) { - return { - returnedValue: null, - producedError: null - }; - } - var producedError = null, returnedValue = null; - if (this._moduleIdResolver.shouldCatchError()) { - try { - returnedValue = this._callback.apply(global, this._dependenciesValues); - } - catch (e) { - producedError = e; - } - finally { - } - } - else { - returnedValue = this._callback.apply(global, this._dependenciesValues); - } - return { - returnedValue: returnedValue, - producedError: producedError - }; - }; - Module.prototype._complete = function () { - var producedError = null; - if (this._callback) { - if (typeof this._callback === 'function') { - this._recorder.record(LoaderEventType.BeginInvokeFactory, this._id); - var r = this._invokeFactory(); - producedError = r.producedError; - this._recorder.record(LoaderEventType.EndInvokeFactory, this._id); - if (!producedError && typeof r.returnedValue !== 'undefined' && (!this._exportsPassedIn || Utilities.isEmpty(this._exports))) { - this._exports = r.returnedValue; - } - } - else { - this._exports = this._callback; - } - } - if (producedError) { - this.getModuleIdResolver().onError({ - errorCode: 'factory', - moduleId: this._id, - detail: producedError - }); - } - }; - /** - * Release references used while resolving module - */ - Module.prototype.cleanUp = function () { - if (this._moduleIdResolver && !this._moduleIdResolver.isBuild()) { - this._normalizedDependencies = null; - this._moduleIdResolver = null; - } - this._dependencies = null; - this._dependenciesValues = null; - this._callback = null; - this._managerDependencies = null; - this._managerDependenciesMap = null; - }; - /** - * One of the direct dependencies or a transitive dependency has failed to load. - */ - Module.prototype.onDependencyError = function (err) { - if (this._errorback) { - this._errorback(err); - return true; - } - return false; - }; - /** - * Resolve a dependency with a value. - */ - Module.prototype.resolveDependency = function (id, value) { - if (!this._managerDependenciesMap.hasOwnProperty(id)) { - throw new Error('Cannot resolve a dependency I do not have!'); - } - this._dependenciesValues[this._managerDependenciesMap[id]] = value; - // Prevent resolving the same dependency twice - delete this._managerDependenciesMap[id]; - this._unresolvedDependenciesCount--; - if (this._unresolvedDependenciesCount === 0) { - this._complete(); - } - }; - /** - * Is the current module complete? - */ - Module.prototype.isComplete = function () { - return this._unresolvedDependenciesCount === 0; - }; - return Module; - }()); - AMDLoader.Module = Module; - // ------------------------------------------------------------------------ - // LoaderEvent - var LoaderEventType; - (function (LoaderEventType) { - LoaderEventType[LoaderEventType["LoaderAvailable"] = 1] = "LoaderAvailable"; - LoaderEventType[LoaderEventType["BeginLoadingScript"] = 10] = "BeginLoadingScript"; - LoaderEventType[LoaderEventType["EndLoadingScriptOK"] = 11] = "EndLoadingScriptOK"; - LoaderEventType[LoaderEventType["EndLoadingScriptError"] = 12] = "EndLoadingScriptError"; - LoaderEventType[LoaderEventType["BeginInvokeFactory"] = 21] = "BeginInvokeFactory"; - LoaderEventType[LoaderEventType["EndInvokeFactory"] = 22] = "EndInvokeFactory"; - LoaderEventType[LoaderEventType["NodeBeginEvaluatingScript"] = 31] = "NodeBeginEvaluatingScript"; - LoaderEventType[LoaderEventType["NodeEndEvaluatingScript"] = 32] = "NodeEndEvaluatingScript"; - LoaderEventType[LoaderEventType["NodeBeginNativeRequire"] = 33] = "NodeBeginNativeRequire"; - LoaderEventType[LoaderEventType["NodeEndNativeRequire"] = 34] = "NodeEndNativeRequire"; - })(LoaderEventType = AMDLoader.LoaderEventType || (AMDLoader.LoaderEventType = {})); - function getHighPerformanceTimestamp() { - return (hasPerformanceNow ? global.performance.now() : Date.now()); - } - var LoaderEvent = (function () { - function LoaderEvent(type, detail, timestamp) { - this.type = type; - this.detail = detail; - this.timestamp = timestamp; - } - return LoaderEvent; - }()); - AMDLoader.LoaderEvent = LoaderEvent; - var LoaderEventRecorder = (function () { - function LoaderEventRecorder(loaderAvailableTimestamp) { - this._events = [new LoaderEvent(LoaderEventType.LoaderAvailable, '', loaderAvailableTimestamp)]; - } - LoaderEventRecorder.prototype.record = function (type, detail) { - this._events.push(new LoaderEvent(type, detail, getHighPerformanceTimestamp())); - }; - LoaderEventRecorder.prototype.getEvents = function () { - return this._events; - }; - return LoaderEventRecorder; - }()); - AMDLoader.LoaderEventRecorder = LoaderEventRecorder; - var NullLoaderEventRecorder = (function () { - function NullLoaderEventRecorder() { - } - NullLoaderEventRecorder.prototype.record = function (type, detail) { - // Nothing to do - }; - NullLoaderEventRecorder.prototype.getEvents = function () { - return []; - }; - return NullLoaderEventRecorder; - }()); - NullLoaderEventRecorder.INSTANCE = new NullLoaderEventRecorder(); - AMDLoader.NullLoaderEventRecorder = NullLoaderEventRecorder; - var ModuleManager = (function () { - function ModuleManager(scriptLoader) { - this._recorder = null; - this._config = new Configuration(); - this._scriptLoader = scriptLoader; - this._modules = {}; - this._knownModules = {}; - this._inverseDependencies = {}; - this._dependencies = {}; - this._inversePluginDependencies = {}; - this._queuedDefineCalls = []; - this._loadingScriptsCount = 0; - this._resolvedScriptPaths = {}; - } - ModuleManager._findRelevantLocationInStack = function (needle, stack) { - var normalize = function (str) { return str.replace(/\\/g, '/'); }; - var normalizedPath = normalize(needle); - var stackPieces = stack.split(/\n/); - for (var i = 0; i < stackPieces.length; i++) { - var m = stackPieces[i].match(/(.*):(\d+):(\d+)\)?$/); - if (m) { - var stackPath = m[1]; - var stackLine = m[2]; - var stackColumn = m[3]; - var trimPathOffset = Math.max(stackPath.lastIndexOf(' ') + 1, stackPath.lastIndexOf('(') + 1); - stackPath = stackPath.substr(trimPathOffset); - stackPath = normalize(stackPath); - if (stackPath === normalizedPath) { - var r = { - line: parseInt(stackLine, 10), - col: parseInt(stackColumn, 10) - }; - if (r.line === 1) { - r.col -= '(function (require, define, __filename, __dirname) { '.length; - } - return r; - } - } - } - throw new Error('Could not correlate define call site for needle ' + needle); - }; - ModuleManager.prototype.getBuildInfo = function () { - var _this = this; - if (!this._config.isBuild()) { - return null; - } - return Object.keys(this._modules).map(function (moduleId) { - var m = _this._modules[moduleId]; - var location = _this._resolvedScriptPaths[moduleId] || null; - var defineStack = m.getDefineCallStack(); - return { - id: moduleId, - path: location, - defineLocation: (location && defineStack ? ModuleManager._findRelevantLocationInStack(location, defineStack) : null), - dependencies: m.getNormalizedDependencies(), - shim: (_this._config.isShimmed(moduleId) ? _this._config.getShimmedModulesStr(moduleId) : null), - exports: m.getExports() - }; - }); - }; - ModuleManager.prototype.getRecorder = function () { - if (!this._recorder) { - if (this._config.shouldRecordStats()) { - this._recorder = new LoaderEventRecorder(loaderAvailableTimestamp); - } - else { - this._recorder = NullLoaderEventRecorder.INSTANCE; - } - } - return this._recorder; - }; - ModuleManager.prototype.getLoaderEvents = function () { - return this.getRecorder().getEvents(); - }; - /** - * Defines a module. - * @param id @see defineModule - * @param dependencies @see defineModule - * @param callback @see defineModule - */ - ModuleManager.prototype.enqueueDefineModule = function (id, dependencies, callback) { - if (this._loadingScriptsCount === 0) { - // There are no scripts currently loading, so no load event will be fired, so the queue will not be consumed - this.defineModule(id, dependencies, callback, null, null); - } - else { - this._queuedDefineCalls.push({ - id: id, - stack: null, - dependencies: dependencies, - callback: callback - }); - } - }; - /** - * Defines an anonymous module (without an id). Its name will be resolved as we receive a callback from the scriptLoader. - * @param dependecies @see defineModule - * @param callback @see defineModule - */ - ModuleManager.prototype.enqueueDefineAnonymousModule = function (dependencies, callback) { - var stack = null; - if (this._config.isBuild()) { - stack = new Error('StackLocation').stack; - } - this._queuedDefineCalls.push({ - id: null, - stack: stack, - dependencies: dependencies, - callback: callback - }); - }; - /** - * Creates a module and stores it in _modules. The manager will immediately begin resolving its dependencies. - * @param id An unique and absolute id of the module. This must not collide with another module's id - * @param dependencies An array with the dependencies of the module. Special keys are: "require", "exports" and "module" - * @param callback if callback is a function, it will be called with the resolved dependencies. if callback is an object, it will be considered as the exports of the module. - */ - ModuleManager.prototype.defineModule = function (id, dependencies, callback, errorback, stack, moduleIdResolver) { - if (moduleIdResolver === void 0) { moduleIdResolver = new ModuleIdResolver(this._config, id); } - if (this._modules.hasOwnProperty(id)) { - if (!this._config.isDuplicateMessageIgnoredFor(id)) { - console.warn('Duplicate definition of module \'' + id + '\''); - } - // Super important! Completely ignore duplicate module definition - return; - } - var moduleConfig = this._config.getConfigForModule(id); - var m = new Module(id, dependencies, callback, errorback, this.getRecorder(), moduleIdResolver, moduleConfig, stack); - this._modules[id] = m; - // Resolving of dependencies is immediate (not in a timeout). If there's a need to support a packer that concatenates in an - // unordered manner, in order to finish processing the file, execute the following method in a timeout - this._resolve(m); - }; - ModuleManager.prototype._relativeRequire = function (moduleIdResolver, dependencies, callback, errorback) { - if (typeof dependencies === 'string') { - return this.synchronousRequire(dependencies, moduleIdResolver); - } - this.defineModule(Utilities.generateAnonymousModule(), dependencies, callback, errorback, null, moduleIdResolver); - }; - /** - * Require synchronously a module by its absolute id. If the module is not loaded, an exception will be thrown. - * @param id The unique and absolute id of the required module - * @return The exports of module 'id' - */ - ModuleManager.prototype.synchronousRequire = function (id, moduleIdResolver) { - if (moduleIdResolver === void 0) { moduleIdResolver = new ModuleIdResolver(this._config, id); } - var moduleId = moduleIdResolver.resolveModule(id); - var bangIndex = moduleId.indexOf('!'); - if (bangIndex >= 0) { - // This is a synchronous require for a plugin dependency, so be sure to normalize the pluginParam (the piece after '!') - var pluginId = moduleId.substring(0, bangIndex), pluginParam = moduleId.substring(bangIndex + 1, moduleId.length), plugin = {}; - if (this._modules.hasOwnProperty(pluginId)) { - plugin = this._modules[pluginId]; - } - // Helper to normalize the part which comes after '!' - var normalize = function (_arg) { - return moduleIdResolver.resolveModule(_arg); - }; - if (typeof plugin.normalize === 'function') { - pluginParam = plugin.normalize(pluginParam, normalize); - } - else { - pluginParam = normalize(pluginParam); - } - moduleId = pluginId + '!' + pluginParam; - } - if (!this._modules.hasOwnProperty(moduleId)) { - throw new Error('Check dependency list! Synchronous require cannot resolve module \'' + moduleId + '\'. This is the first mention of this module!'); - } - var m = this._modules[moduleId]; - if (!m.isComplete()) { - throw new Error('Check dependency list! Synchronous require cannot resolve module \'' + moduleId + '\'. This module has not been resolved completely yet.'); - } - return m.getExports(); - }; - ModuleManager.prototype.configure = function (params, shouldOverwrite) { - var oldShouldRecordStats = this._config.shouldRecordStats(); - if (shouldOverwrite) { - this._config = new Configuration(params); - } - else { - this._config = this._config.cloneAndMerge(params); - } - if (this._config.shouldRecordStats() && !oldShouldRecordStats) { - this._recorder = null; - } - }; - ModuleManager.prototype.getConfigurationOptions = function () { - return this._config.getOptionsLiteral(); - }; - /** - * Callback from the scriptLoader when a module has been loaded. - * This means its code is available and has been executed. - */ - ModuleManager.prototype._onLoad = function (id) { - var defineCall; - this._loadingScriptsCount--; - if (this._config.isShimmed(id)) { - // Do not consume queue, might end up consuming a module that is later expected - // If a shimmed module has loaded, create a define call for it - defineCall = this._config.getShimmedModuleDefine(id); - this.defineModule(id, defineCall.dependencies, defineCall.callback, null, defineCall.stack); - } - else { - if (this._queuedDefineCalls.length === 0) { - // Loaded a file and it didn't call `define` - this._loadingScriptsCount++; - this._onLoadError(id, new Error('No define call received from module ' + id + '.')); - } - else { - // Consume queue until first anonymous define call - // or until current id is found in the queue - while (this._queuedDefineCalls.length > 0) { - defineCall = this._queuedDefineCalls.shift(); - if (defineCall.id === id || defineCall.id === null) { - // Hit an anonymous define call or its own define call - defineCall.id = id; - this.defineModule(defineCall.id, defineCall.dependencies, defineCall.callback, null, defineCall.stack); - break; - } - else { - // Hit other named define calls - this.defineModule(defineCall.id, defineCall.dependencies, defineCall.callback, null, defineCall.stack); - } - } - } - } - if (this._loadingScriptsCount === 0) { - // No more on loads will be triggered, so make sure queue is empty - while (this._queuedDefineCalls.length > 0) { - defineCall = this._queuedDefineCalls.shift(); - if (defineCall.id === null) { - console.warn('Found an unmatched anonymous define call in the define queue. Ignoring it!'); - console.warn(defineCall.callback); - } - else { - // Hit other named define calls - this.defineModule(defineCall.id, defineCall.dependencies, defineCall.callback, null, defineCall.stack); - } - } - } - }; - /** - * Callback from the scriptLoader when a module hasn't been loaded. - * This means that the script was not found (e.g. 404) or there was an error in the script. - */ - ModuleManager.prototype._onLoadError = function (id, err) { - this._loadingScriptsCount--; - var error = { - errorCode: 'load', - moduleId: id, - neededBy: (this._inverseDependencies[id] ? this._inverseDependencies[id].slice(0) : []), - detail: err - }; - // Find any 'local' error handlers, walk the entire chain of inverse dependencies if necessary. - var seenModuleId = {}, queueElement, someoneNotified = false, queue = []; - queue.push(id); - seenModuleId[id] = true; - while (queue.length > 0) { - queueElement = queue.shift(); - if (this._modules[queueElement]) { - someoneNotified = this._modules[queueElement].onDependencyError(error) || someoneNotified; - } - if (this._inverseDependencies[queueElement]) { - for (var i = 0, len = this._inverseDependencies[queueElement].length; i < len; i++) { - if (!seenModuleId.hasOwnProperty(this._inverseDependencies[queueElement][i])) { - queue.push(this._inverseDependencies[queueElement][i]); - seenModuleId[this._inverseDependencies[queueElement][i]] = true; - } - } - } - } - if (!someoneNotified) { - this._config.onError(error); - } - }; - /** - * Module id has been loaded completely, its exports are available. - * @param id module's id - * @param exports module's exports - */ - ModuleManager.prototype._onModuleComplete = function (id, exports) { - var i, len, inverseDependencyId, inverseDependency; - // Clean up module's dependencies since module is now complete - delete this._dependencies[id]; - if (this._inverseDependencies.hasOwnProperty(id)) { - // Fetch and clear inverse dependencies - var inverseDependencies = this._inverseDependencies[id]; - delete this._inverseDependencies[id]; - // Resolve one inverse dependency at a time, always - // on the lookout for a completed module. - for (i = 0, len = inverseDependencies.length; i < len; i++) { - inverseDependencyId = inverseDependencies[i]; - inverseDependency = this._modules[inverseDependencyId]; - inverseDependency.resolveDependency(id, exports); - if (inverseDependency.isComplete()) { - this._onModuleComplete(inverseDependencyId, inverseDependency.getExports()); - } - } - } - if (this._inversePluginDependencies.hasOwnProperty(id)) { - // This module is used as a plugin at least once - // Fetch and clear these inverse plugin dependencies - var inversePluginDependencies = this._inversePluginDependencies[id]; - delete this._inversePluginDependencies[id]; - // Resolve plugin dependencies one at a time - for (i = 0, len = inversePluginDependencies.length; i < len; i++) { - var inversePluginDependencyId = inversePluginDependencies[i].moduleId; - var inversePluginDependency = this._modules[inversePluginDependencyId]; - this._resolvePluginDependencySync(inversePluginDependencyId, inversePluginDependencies[i].dependencyId, exports); - // Anonymous modules might already be gone at this point - if (inversePluginDependency.isComplete()) { - this._onModuleComplete(inversePluginDependencyId, inversePluginDependency.getExports()); - } - } - } - if (Utilities.isAnonymousModule(id)) { - // Clean up references to anonymous modules, to prevent memory leaks - delete this._modules[id]; - delete this._dependencies[id]; - } - else { - this._modules[id].cleanUp(); - } - }; - /** - * Walks (recursively) the dependencies of 'from' in search of 'to'. - * Returns true if there is such a path or false otherwise. - * @param from Module id to start at - * @param to Module id to look for - */ - ModuleManager.prototype._hasDependencyPath = function (from, to) { - var i, len, inQueue = {}, queue = [], element, dependencies, dependency; - // Insert 'from' in queue - queue.push(from); - inQueue[from] = true; - while (queue.length > 0) { - // Pop first inserted element of queue - element = queue.shift(); - if (this._dependencies.hasOwnProperty(element)) { - dependencies = this._dependencies[element]; - // Walk the element's dependencies - for (i = 0, len = dependencies.length; i < len; i++) { - dependency = dependencies[i]; - if (dependency === to) { - // There is a path to 'to' - return true; - } - if (!inQueue.hasOwnProperty(dependency)) { - // Insert 'dependency' in queue - inQueue[dependency] = true; - queue.push(dependency); - } - } - } - } - // There is no path to 'to' - return false; - }; - /** - * Walks (recursively) the dependencies of 'from' in search of 'to'. - * Returns cycle as array. - * @param from Module id to start at - * @param to Module id to look for - */ - ModuleManager.prototype._findCyclePath = function (from, to, depth) { - if (from === to || depth === 50) { - return [from]; - } - if (!this._dependencies.hasOwnProperty(from)) { - return null; - } - var path, dependencies = this._dependencies[from]; - // Walk the element's dependencies - for (var i = 0, len = dependencies.length; i < len; i++) { - path = this._findCyclePath(dependencies[i], to, depth + 1); - if (path !== null) { - path.push(from); - return path; - } - } - return null; - }; - /** - * Create the local 'require' that is passed into modules - */ - ModuleManager.prototype._createRequire = function (moduleIdResolver) { - var _this = this; - var result = (function (dependencies, callback, errorback) { - return _this._relativeRequire(moduleIdResolver, dependencies, callback, errorback); - }); - result.toUrl = function (id) { - return moduleIdResolver.requireToUrl(moduleIdResolver.resolveModule(id)); - }; - result.getStats = function () { - return _this.getLoaderEvents(); - }; - result.__$__nodeRequire = global.nodeRequire; - return result; - }; - /** - * Resolve a plugin dependency with the plugin loaded & complete - * @param moduleId The module that has this dependency - * @param dependencyId The semi-normalized dependency that appears in the module. e.g. 'vs/css!./mycssfile'. Only the plugin part (before !) is normalized - * @param plugin The plugin (what the plugin exports) - */ - ModuleManager.prototype._resolvePluginDependencySync = function (moduleId, dependencyId, plugin) { - var _this = this; - var m = this._modules[moduleId], moduleIdResolver = m.getModuleIdResolver(), bangIndex = dependencyId.indexOf('!'), pluginId = dependencyId.substring(0, bangIndex), pluginParam = dependencyId.substring(bangIndex + 1, dependencyId.length); - // Helper to normalize the part which comes after '!' - var normalize = function (_arg) { - return moduleIdResolver.resolveModule(_arg); - }; - if (typeof plugin.normalize === 'function') { - pluginParam = plugin.normalize(pluginParam, normalize); - } - else { - pluginParam = normalize(pluginParam); - } - if (!plugin.dynamic) { - // Now normalize the entire dependency - var oldDependencyId = dependencyId; - dependencyId = pluginId + '!' + pluginParam; - // Let the module know that the dependency has been normalized so it can update its internal state - m.renameDependency(oldDependencyId, dependencyId); - this._resolveDependency(moduleId, dependencyId, function (moduleId) { - // Delegate the loading of the resource to the plugin - var load = (function (value) { - _this.defineModule(dependencyId, [], value, null, null); - }); - load.error = function (err) { - _this._config.onError({ - errorCode: 'load', - moduleId: dependencyId, - neededBy: (_this._inverseDependencies[dependencyId] ? _this._inverseDependencies[dependencyId].slice(0) : []), - detail: err - }); - }; - plugin.load(pluginParam, _this._createRequire(moduleIdResolver), load, _this._config.getOptionsLiteral()); - }); - } - else { - // This plugin is dynamic and does not want the loader to cache anything on its behalf - // Delegate the loading of the resource to the plugin - var load = (function (value) { - m.resolveDependency(dependencyId, value); - if (m.isComplete()) { - _this._onModuleComplete(moduleId, m.getExports()); - } - }); - load.error = function (err) { - _this._config.onError({ - errorCode: 'load', - moduleId: dependencyId, - neededBy: [moduleId], - detail: err - }); - }; - plugin.load(pluginParam, this._createRequire(moduleIdResolver), load, this._config.getOptionsLiteral()); - } - }; - /** - * Resolve a plugin dependency with the plugin not loaded or not complete yet - * @param moduleId The module that has this dependency - * @param dependencyId The semi-normalized dependency that appears in the module. e.g. 'vs/css!./mycssfile'. Only the plugin part (before !) is normalized - */ - ModuleManager.prototype._resolvePluginDependencyAsync = function (moduleId, dependencyId) { - var m = this._modules[moduleId], bangIndex = dependencyId.indexOf('!'), pluginId = dependencyId.substring(0, bangIndex); - // Record dependency for when the plugin gets loaded - this._inversePluginDependencies[pluginId] = this._inversePluginDependencies[pluginId] || []; - this._inversePluginDependencies[pluginId].push({ - moduleId: moduleId, - dependencyId: dependencyId - }); - if (!this._modules.hasOwnProperty(pluginId) && !this._knownModules.hasOwnProperty(pluginId)) { - // This is the first mention of module 'pluginId', so load it - this._knownModules[pluginId] = true; - this._loadModule(m.getModuleIdResolver(), pluginId); - } - }; - /** - * Resolve a plugin dependency - * @param moduleId The module that has this dependency - * @param dependencyId The semi-normalized dependency that appears in the module. e.g. 'vs/css!./mycssfile'. Only the plugin part (before !) is normalized - */ - ModuleManager.prototype._resolvePluginDependency = function (moduleId, dependencyId) { - var bangIndex = dependencyId.indexOf('!'), pluginId = dependencyId.substring(0, bangIndex); - if (this._modules.hasOwnProperty(pluginId) && this._modules[pluginId].isComplete()) { - // Plugin has already been loaded & resolved - this._resolvePluginDependencySync(moduleId, dependencyId, this._modules[pluginId].getExports()); - } - else { - // Plugin is not loaded or not resolved - this._resolvePluginDependencyAsync(moduleId, dependencyId); - } - }; - /** - * Resolve a module dependency to a shimmed module and delegate the loading to loadCallback. - * @param moduleId The module that has this dependency - * @param dependencyId The normalized dependency that appears in the module -- this module is shimmed - * @param loadCallback Callback that will be called to trigger the loading of 'dependencyId' if needed - */ - ModuleManager.prototype._resolveShimmedDependency = function (moduleId, dependencyId, loadCallback) { - // If a shimmed module has dependencies, we must first load those dependencies - // and only when those are loaded we can load the shimmed module. - // To achieve this, we inject a module definition with those dependencies - // and from its factory method we really load the shimmed module. - var defineInfo = this._config.getShimmedModuleDefine(dependencyId); - if (defineInfo.dependencies.length > 0) { - this.defineModule(Utilities.generateAnonymousModule(), defineInfo.dependencies, function () { return loadCallback(dependencyId); }, null, null, new ModuleIdResolver(this._config, dependencyId)); - } - else { - loadCallback(dependencyId); - } - }; - /** - * Resolve a module dependency and delegate the loading to loadCallback - * @param moduleId The module that has this dependency - * @param dependencyId The normalized dependency that appears in the module - * @param loadCallback Callback that will be called to trigger the loading of 'dependencyId' if needed - */ - ModuleManager.prototype._resolveDependency = function (moduleId, dependencyId, loadCallback) { - var m = this._modules[moduleId]; - if (this._modules.hasOwnProperty(dependencyId) && this._modules[dependencyId].isComplete()) { - // Dependency has already been loaded & resolved - m.resolveDependency(dependencyId, this._modules[dependencyId].getExports()); - } - else { - // Dependency is not loaded or not resolved - // Record dependency - this._dependencies[moduleId].push(dependencyId); - if (this._hasDependencyPath(dependencyId, moduleId)) { - console.warn('There is a dependency cycle between \'' + dependencyId + '\' and \'' + moduleId + '\'. The cyclic path follows:'); - var cyclePath = this._findCyclePath(dependencyId, moduleId, 0); - cyclePath.reverse(); - cyclePath.push(dependencyId); - console.warn(cyclePath.join(' => \n')); - // Break the cycle - var dependency = this._modules.hasOwnProperty(dependencyId) ? this._modules[dependencyId] : null; - var dependencyValue; - if (dependency && dependency.isExportsPassedIn()) { - // If dependency uses 'exports', then resolve it with that object - dependencyValue = dependency.getExports(); - } - // Resolve dependency with undefined or with 'exports' object - m.resolveDependency(dependencyId, dependencyValue); - } - else { - // Since we are actually waiting for this dependency, - // record inverse dependency - this._inverseDependencies[dependencyId] = this._inverseDependencies[dependencyId] || []; - this._inverseDependencies[dependencyId].push(moduleId); - if (!this._modules.hasOwnProperty(dependencyId) && !this._knownModules.hasOwnProperty(dependencyId)) { - // This is the first mention of module 'dependencyId', so load it - // Mark this module as loaded so we don't hit this case again - this._knownModules[dependencyId] = true; - if (this._config.isShimmed(dependencyId)) { - this._resolveShimmedDependency(moduleId, dependencyId, loadCallback); - } - else { - loadCallback(dependencyId); - } - } - } - } - }; - ModuleManager.prototype._loadModule = function (anyModuleIdResolver, moduleId) { - var _this = this; - this._loadingScriptsCount++; - var paths = anyModuleIdResolver.moduleIdToPaths(moduleId); - var lastPathIndex = -1; - var loadNextPath = function (err) { - lastPathIndex++; - if (lastPathIndex >= paths.length) { - // No more paths to try - _this._onLoadError(moduleId, err); - } - else { - var currentPath = paths[lastPathIndex]; - var recorder = _this.getRecorder(); - if (_this._config.isBuild() && currentPath === 'empty:') { - _this._resolvedScriptPaths[moduleId] = currentPath; - _this.enqueueDefineModule(moduleId, [], null); - _this._onLoad(moduleId); - return; - } - recorder.record(LoaderEventType.BeginLoadingScript, currentPath); - _this._scriptLoader.load(currentPath, function () { - if (_this._config.isBuild()) { - _this._resolvedScriptPaths[moduleId] = currentPath; - } - recorder.record(LoaderEventType.EndLoadingScriptOK, currentPath); - _this._onLoad(moduleId); - }, function (err) { - recorder.record(LoaderEventType.EndLoadingScriptError, currentPath); - loadNextPath(err); - }, recorder); - } - }; - loadNextPath(null); - }; - /** - * Examine the dependencies of module 'module' and resolve them as needed. - */ - ModuleManager.prototype._resolve = function (m) { - var _this = this; - var i, len, id, dependencies, dependencyId, moduleIdResolver; - id = m.getId(); - dependencies = m.getDependencies(); - moduleIdResolver = m.getModuleIdResolver(); - this._dependencies[id] = []; - var loadCallback = function (moduleId) { return _this._loadModule(moduleIdResolver, moduleId); }; - for (i = 0, len = dependencies.length; i < len; i++) { - dependencyId = dependencies[i]; - if (dependencyId === 'require') { - m.resolveDependency(dependencyId, this._createRequire(moduleIdResolver)); - continue; - } - else { - if (dependencyId.indexOf('!') >= 0) { - this._resolvePluginDependency(id, dependencyId); - } - else { - this._resolveDependency(id, dependencyId, loadCallback); - } - } - } - if (m.isComplete()) { - // This module was completed as soon as its been seen. - this._onModuleComplete(id, m.getExports()); - } - }; - return ModuleManager; - }()); - AMDLoader.ModuleManager = ModuleManager; +})(AMDLoader || (AMDLoader = {})); +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var AMDLoader; +(function (AMDLoader) { /** * Load `scriptSrc` only once (avoid multiple